Example #1
0
class SVNRevisionProperties(PropertiesBase):
    def __init__(self, path, revision=None):
        PropertiesBase.__init__(self, path)

        self.svn = self.vcs.svn()

        if not self.svn.is_path_repository_url(path):
            self.path = self.svn.get_repo_url(path)
            self.get_widget("path").set_text(self.path)

        self.revision = revision
        self.revision_obj = None
        if revision is not None:
            self.revision_obj = self.svn.revision("number", revision)

        self.load()

    def load(self):
        self.table.clear()
        try:
            self.proplist = self.svn.revproplist(
                self.get_widget("path").get_text(), self.revision_obj)
        except Exception as e:
            log.exception(e)
            rabbitvcs.ui.dialog.MessageBox(
                _("Unable to retrieve properties list"))
            self.proplist = {}

        if self.proplist:
            for key, val in list(self.proplist.items()):
                self.table.append([False, key, val.rstrip()])

    def save(self):
        delete_recurse = self.get_widget("delete_recurse").get_active()

        self.action = SVNAction(self.svn,
                                notification=False,
                                run_in_thread=False)

        for row in self.delete_stack:
            self.action.append(self.svn.revpropdel,
                               self.path,
                               row[1],
                               self.revision_obj,
                               force=True)

        for row in self.table.get_items():
            self.action.append(self.svn.revpropset,
                               row[1],
                               row[2],
                               self.path,
                               self.revision_obj,
                               force=True)

        self.action.run()

        self.close()