def rebuildSubscriptions(context, request): """ Rebuild context subscriptions Performs sanity checks on existing subscriptions """ existing_contexts = {} contexts = request.db.contexts.dump() for context in contexts: context.updateUsersSubscriptions(force_update=True) context.updateContextActivities(force_update=True) existing_contexts[context['hash']] = context users = request.db.users.search({'subscribedTo.0': {'$exists': True}}) for user in users: for subscription in user.get('subscribedTo', []): if subscription['hash'] not in existing_contexts: fake_deleted_context = Context.from_object(request, subscription) user.removeSubscription(fake_deleted_context) else: subscription.pop('vetos', None) subscription.pop('grants', None) user.save() handler = JSONResourceRoot(request, []) return handler.buildResponse()
def _after_delete(self): """ Deletes user exchanges just after user is deleted. """ # Comento que al borrar el usuario no borre sus exchanges del rabbit # para que no haya problemas con este usuario ens otras instancias #notifier = RabbitNotifications(self.request) #notifier.delete_user(self['username']) # Mientras no solucionamos lo anterior, como los routing key de activity no se borraban # y nos podia dar error al intentar notificar a ese usuario # borro los contextos a los que esta subscrito este usuario en este MAX from max.models import Context for subscription in self['subscribedTo']: fake_deleted_context = Context.from_object(self.request, subscription) self.removeSubscription(fake_deleted_context)