~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/fileservice_lib/action.py

  • Committer: William Grant
  • Date: 2012-06-28 01:52:02 UTC
  • Revision ID: me@williamgrant.id.au-20120628015202-f6ru7o367gt6nvgz
Hah

Show diffs side-by-side

added added

removed removed

Lines of Context:
94
94
#       revision: The revision number to update to. If not provided this
95
95
#               defaults to HEAD.
96
96
#
97
 
# action=svnpublish: Set the "published" flag on a file to True.
98
 
#       path:   The path to the file to be published. Can be specified
99
 
#               multiple times.
100
 
#
101
 
# action=svnunpublish: Set the "published" flag on a file to False.
102
 
#       path:   The path to the file to be unpublished. Can be specified
103
 
#               multiple times.
104
 
#
105
97
# action=svncommit: Commit a file(s) or directory(s) to the repository.
106
98
#       path:   The path to the file or directory to be committed. Can be
107
99
#               specified multiple times. Directories are committed
325
317
    """
326
318
    frompath = fields.getfirst('from')
327
319
    topath = fields.getfirst('to')
328
 
    movefile(req, frompath, topath)
 
320
    svn = fields.getfirst('svn')
 
321
    if svn:
 
322
        svn_movefile(req, frompath, topath)
 
323
    else:
 
324
        movefile(req, frompath, topath)
329
325
 
330
326
def action_mkdir(req, fields):
331
327
    """Creates a directory with the given path.
580
576
    Reads fields: 'path' (multiple)
581
577
    """
582
578
    paths = fields.getlist('path')
583
 
    paths = map(lambda path: actionpath_to_local(req, path), paths)
 
579
    paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
 
580
                paths)
584
581
 
585
582
    try:
586
583
        svnclient.add(paths, recurse=True, force=True)
593
590
    Reads fields: 'path' (multiple)
594
591
    """
595
592
    paths = fields.getlist('path')
596
 
    paths = map(lambda path: actionpath_to_local(req, path), paths)
 
593
    paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
 
594
                paths)
597
595
 
598
596
    try:
599
597
        svnclient.remove(paths, force=True)
617
615
                    int(revision))
618
616
        except ValueError, e:
619
617
            raise ActionError("Bad revision number: '%s'"%revision,)
620
 
    path = actionpath_to_local(req, path)
 
618
    path = actionpath_to_local(req, path).decode('utf-8')
621
619
 
622
620
    try:
623
621
        svnclient.update(path, recurse=True, revision=revision)
632
630
    path = fields.getfirst('path')
633
631
    if path is None:
634
632
        raise ActionError("Required field missing")
635
 
    path = actionpath_to_local(req, path)
 
633
    path = actionpath_to_local(req, path).decode('utf-8')
636
634
 
637
635
    try:
638
636
        svnclient.resolved(path, recurse=True)
645
643
    Reads fields: 'path' (multiple)
646
644
    """
647
645
    paths = fields.getlist('path')
648
 
    paths = map(lambda path: actionpath_to_local(req, path), paths)
 
646
    paths = map(lambda path: actionpath_to_local(req, path).decode('utf-8'),
 
647
                paths)
649
648
 
650
649
    try:
651
650
        svnclient.revert(paths, recurse=True)
652
651
    except pysvn.ClientError, e:
653
652
        raise ActionError(str(e))
654
653
 
655
 
def action_svnpublish(req, fields):
656
 
    """Sets svn property "ivle:published" on each file specified.
657
 
    Should only be called on directories (only effective on directories
658
 
    anyway).
659
 
 
660
 
    Reads fields: 'path'
661
 
 
662
 
    XXX Currently unused by the client (calls action_publish instead, which
663
 
    has a completely different publishing model).
664
 
    """
665
 
    paths = fields.getlist('path')
666
 
    if len(paths):
667
 
        paths = map(lambda path: actionpath_to_local(req, path), paths)
668
 
    else:
669
 
        paths = [studpath.to_home_path(req.path)]
670
 
 
671
 
    try:
672
 
        for path in paths:
673
 
            # Note: Property value doesn't matter
674
 
            svnclient.propset("ivle:published", "", path, recurse=False)
675
 
    except pysvn.ClientError, e:
676
 
        raise ActionError("Directory could not be published")
677
 
 
678
 
def action_svnunpublish(req, fields):
679
 
    """Deletes svn property "ivle:published" on each file specified.
680
 
 
681
 
    Reads fields: 'path'
682
 
 
683
 
    XXX Currently unused by the client (calls action_unpublish instead, which
684
 
    has a completely different publishing model).
685
 
    """
686
 
    paths = fields.getlist('path')
687
 
    paths = map(lambda path: actionpath_to_local(req, path), paths)
688
 
 
689
 
    try:
690
 
        for path in paths:
691
 
            svnclient.propdel("ivle:published", path, recurse=False)
692
 
    except pysvn.ClientError, e:
693
 
        raise ActionError("Directory could not be unpublished")
694
 
 
695
654
def action_svncommit(req, fields):
696
655
    """Performs a "svn commit" to each file specified.
697
656
 
698
657
    Reads fields: 'path' (multiple), 'logmsg' (optional)
699
658
    """
700
659
    paths = fields.getlist('path')
701
 
    paths = map(lambda path: actionpath_to_local(req, str(path)), paths)
702
 
    logmsg = str(fields.getfirst('logmsg', DEFAULT_LOGMESSAGE))
 
660
    if len(paths):
 
661
        paths = map(lambda path:actionpath_to_local(req,path).decode('utf-8'),
 
662
                    paths)
 
663
    else:
 
664
        paths = [studpath.to_home_path(req.path).decode('utf-8')]
 
665
    logmsg = str(fields.getfirst('logmsg',
 
666
                 DEFAULT_LOGMESSAGE)).decode('utf-8')
703
667
    if logmsg == '': logmsg = DEFAULT_LOGMESSAGE
704
668
 
705
669
    try:
717
681
        raise ActionError("usage: svncheckout url local-path")
718
682
    url = ivle.conf.svn_addr + "/" + urllib.quote(paths[0])
719
683
    local_path = actionpath_to_local(req, str(paths[1]))
 
684
    url = url.decode('utf-8')
 
685
    local_path = local_path.decode('utf-8')
720
686
    try:
721
687
        svnclient.checkout(url, local_path, recurse=True)
722
688
    except pysvn.ClientError, e:
729
695
    """
730
696
    path = fields.getfirst('path')
731
697
    logmsg = fields.getfirst('logmsg')
732
 
    url = ivle.conf.svn_addr + "/" + urllib.quote(path)
 
698
    url = (ivle.conf.svn_addr + "/" + urllib.quote(path)).decode('utf-8')
733
699
    try:
734
700
        svnclient.mkdir(url, log_message=logmsg)
735
701
    except pysvn.ClientError, e:
743
709
    Reads fields: 'path'
744
710
    """
745
711
    path = fields.getfirst('path')
746
 
    url = ivle.conf.svn_addr + "/" + urllib.quote(path)
 
712
    url = (ivle.conf.svn_addr + "/" + urllib.quote(path)).decode('utf-8')
747
713
    svnclient.exception_style = 1
748
714
 
749
715
    try:
756
722
    except pysvn.ClientError, e:
757
723
        # Error code 170000 means ENOENT in this revision.
758
724
        if e[1][0][1] == 170000:
759
 
            raise util.IVLEError(404, 'The specified repository path does not exist')
 
725
            req.status = 404
 
726
            raise ActionError('The specified repository path does not exist')
760
727
        else:
761
728
            raise ActionError(str(e[0]))
762
729
 
769
736
    path = fields.getfirst('path')
770
737
    if path is None:
771
738
        raise ActionError("Required field missing")
772
 
    path = actionpath_to_local(req, path)
 
739
    path = actionpath_to_local(req, path).decode('utf-8')
773
740
 
774
741
    try:
775
742
        svnclient.cleanup(path)
795
762
    "svnupdate" : action_svnupdate,
796
763
    "svnresolved" : action_svnresolved,
797
764
    "svnrevert" : action_svnrevert,
798
 
    "svnpublish" : action_svnpublish,
799
 
    "svnunpublish" : action_svnunpublish,
800
765
    "svncommit" : action_svncommit,
801
766
    "svncheckout" : action_svncheckout,
802
767
    "svnrepomkdir" : action_svnrepomkdir,