Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
Archivo: user.py Proyecto: UPCnet/max
    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)