def startThread(repository, uuid): rv = viewpool.getView(repository) conduit = rv[uuid] try: conduit._getPublishedShares(callback) finally: viewpool.releaseView(rv)
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
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