示例#1
0
 def startThread(repository, uuid):
     rv = viewpool.getView(repository)
     conduit = rv[uuid]
     try:
         conduit._getPublishedShares(callback)
     finally:
         viewpool.releaseView(rv)
示例#2
0
 def startThread(repository, uuid):
     rv = viewpool.getView(repository)
     conduit = rv[uuid]
     try:
         conduit._getPublishedShares(callback)
     finally:
         viewpool.releaseView(rv)
示例#3
0
    def restoreCollections(self, activity=None):
        rv = self.itsView

        if not self.isSetUp():
            return

        info = self.getPublishedShares(blocking=True)
        toRestore = list()
        for name, uuid, href, tickets, subscribed in info:
            if not subscribed and uuid in self.requested:
                toRestore.append((name, uuid, href, tickets))

        for name, uuid, href, tickets in toRestore:

            try:
                msg = _("Restoring %(collection)s collection") % {
                    'collection': name
                }
                logger.info(msg)

                subActivity = Activity(msg)
                subActivity.started()

                activity.update(msg=msg, work=1)

                altView = viewpool.getView(rv.repository)
                share = Share(itsView=altView, displayName=name)
                share.mode = 'both'
                share.conduit = CosmoConduit(
                    itsParent=share,
                    shareName=uuid,
                    account=altView.findUUID(self.itsUUID),
                    translator=translator.SharingTranslator,
                    serializer=eimml.EIMMLSerializer)
                for ticket, ticketType in tickets:
                    if ticketType == 'read-only':
                        share.conduit.ticketReadOnly = ticket
                    elif ticketType == 'read-write':
                        share.conduit.ticketReadWrite = ticket

                share.conduit.filters = set()
                share.conduit.filters.add('cid:[email protected]')
                share.conduit.filters.add('cid:[email protected]')
                share.conduit.filters.add('cid:[email protected]')

                share.get(activity=subActivity)
                if uuid in self.ignored:
                    self.ignored.remove(uuid)
                self.requested.remove(uuid)
                share.sharer = schema.ns("osaf.pim",
                                         altView).currentContact.item
                schema.ns("osaf.app",
                          altView).sidebarCollection.add(share.contents)
                # Add the collection to the Dashboard (c.f. Bug 11717)
                schema.ns("osaf.pim", altView).mine.addSource(share.contents)
                altView.commit(utility.mergeFunction)
                subActivity.completed()

            except Exception, e:
                altView.cancel()
                viewpool.releaseView(altView)
                if not isinstance(e, ActivityAborted):
                    subActivity.failed(e)
                    activity.failed(e)
                    logger.exception("Restore failed")
                if uuid in self.requested:
                    self.requested.remove(uuid)
                raise
示例#4
0
    def restoreCollections(self, activity=None):
        rv = self.itsView

        if not self.isSetUp():
            return

        info = self.getPublishedShares(blocking=True)
        toRestore = list()
        for name, uuid, href, tickets, subscribed in info:
            if not subscribed and uuid in self.requested:
                toRestore.append((name, uuid, href, tickets))

        for name, uuid, href, tickets in toRestore:

                try:
                    msg = _("Restoring %(collection)s collection") % {
                        'collection' : name }
                    logger.info(msg)

                    subActivity = Activity(msg)
                    subActivity.started()

                    activity.update(msg=msg, work=1)

                    altView = viewpool.getView(rv.repository)
                    share = Share(itsView=altView, displayName=name)
                    share.mode = 'both'
                    share.conduit = CosmoConduit(itsParent=share,
                        shareName=uuid, account=altView.findUUID(self.itsUUID),
                        translator=translator.SharingTranslator,
                        serializer=eimml.EIMMLSerializer)
                    for ticket, ticketType in tickets:
                        if ticketType == 'read-only':
                            share.conduit.ticketReadOnly = ticket
                        elif ticketType == 'read-write':
                            share.conduit.ticketReadWrite = ticket

                    share.conduit.filters = set()
                    share.conduit.filters.add('cid:[email protected]')
                    share.conduit.filters.add('cid:[email protected]')
                    share.conduit.filters.add('cid:[email protected]')

                    share.get(activity=subActivity)
                    if uuid in self.ignored:
                        self.ignored.remove(uuid)
                    self.requested.remove(uuid)
                    share.sharer = schema.ns("osaf.pim",
                        altView).currentContact.item
                    schema.ns("osaf.app",
                        altView).sidebarCollection.add(share.contents)
                    # Add the collection to the Dashboard (c.f. Bug 11717)
                    schema.ns("osaf.pim",
                        altView).mine.addSource(share.contents)
                    altView.commit(utility.mergeFunction)
                    subActivity.completed()

                except Exception, e:
                    altView.cancel()
                    viewpool.releaseView(altView)
                    if not isinstance(e, ActivityAborted):
                        subActivity.failed(e)
                        activity.failed(e)
                        logger.exception("Restore failed")
                    if uuid in self.requested:
                        self.requested.remove(uuid)
                    raise