Exemplo n.º 1
0
 def get_recipients_for_notice(self, notice_type, users):
     if isinstance(notice_type, basestring):
         notice_type = ALERT_TYPES[notice_type]
     
     if not users: return ()
     
     # this optimization really shouldn't be necessary, but it makes a huge difference on mysql
     if isinstance(users, QuerySet):
       user_ids = list(users.values_list("id", flat=True))
     else:
       user_ids = [u.id for u in users]
     
     alert_prefs = self.get_queryset_compat().filter(alert_type=notice_type.id).filter(user__in=user_ids)
     
     prefs = {}
     for pref in alert_prefs:
         prefs[pref.user_id, pref.backend] = pref.preference
     
     user_cache = {}
     for user in users:
         user_cache[user.id] = user
         for backend in ALERT_BACKENDS.values():
             if (user.id, backend.id) not in prefs:
                 prefs[user.id, backend.id] = notice_type.get_default(backend.id)
     
     return ((user_cache[user_id], ALERT_BACKENDS[backend_id]) for ((user_id, backend_id), pref) in prefs.items() if pref)
Exemplo n.º 2
0
    def get_recipients_for_notice(self, notice_type, users):
        if isinstance(notice_type, basestring):
            notice_type = ALERT_TYPES[notice_type]

        if not users: return ()

        # this optimization really shouldn't be necessary, but it makes a huge difference on mysql
        if isinstance(users, QuerySet):
            user_ids = list(users.values_list("id", flat=True))
        else:
            user_ids = [u.id for u in users]

        alert_prefs = self.get_queryset_compat().filter(
            alert_type=notice_type.id).filter(user__in=user_ids)

        prefs = {}
        for pref in alert_prefs:
            prefs[pref.user_id, pref.backend] = pref.preference

        user_cache = {}
        for user in users:
            user_cache[user.id] = user
            for backend in ALERT_BACKENDS.values():
                if (user.id, backend.id) not in prefs:
                    prefs[user.id,
                          backend.id] = notice_type.get_default(backend.id)

        return ((user_cache[user_id], ALERT_BACKENDS[backend_id])
                for ((user_id, backend_id), pref) in prefs.items() if pref)
Exemplo n.º 3
0
    def get_user_prefs(self, user):
        if not user.is_authenticated():
            return dict(((notice_type.id, backend.id), False)
                        for notice_type in ALERT_TYPES.values()
                        for backend in ALERT_BACKENDS.values())

        alert_prefs = self.get_queryset_compat().filter(user=user)

        prefs = {}
        for pref in alert_prefs:
            prefs[pref.alert_type, pref.backend] = pref.preference

        for notice_type in ALERT_TYPES.values():
            for backend in ALERT_BACKENDS.values():
                if (notice_type.id, backend.id) not in prefs:
                    default_pref = notice_type.get_default(backend.id)
                    prefs[notice_type.id, backend.id] = default_pref
        return prefs
Exemplo n.º 4
0
 def get_user_prefs(self, user):
     if not user.is_authenticated():
         return dict(((notice_type.id, backend.id), False)
                         for notice_type in ALERT_TYPES.values()
                         for backend in ALERT_BACKENDS.values()
                     )
     
         
     alert_prefs = self.get_query_set().filter(user=user)
     
     prefs = {}
     for pref in alert_prefs:
         prefs[pref.alert_type, pref.backend] = pref.preference
     
     for notice_type in ALERT_TYPES.values():
         for backend in ALERT_BACKENDS.values():
             if (notice_type.id, backend.id) not in prefs:
                 default_pref = notice_type.get_default(backend.id)
                 prefs[notice_type.id, backend.id] = default_pref
     return prefs
Exemplo n.º 5
0
 def get_recipients_for_notice(self, notice_type, users):
     if isinstance(notice_type, basestring):
         notice_type = ALERT_TYPES[notice_type]
     
     if not users: return ()
     
     alert_prefs = self.get_query_set().filter(alert_type=notice_type.id).filter(user__in=users)
     
     prefs = {}
     for pref in alert_prefs:
         prefs[pref.user_id, pref.backend] = pref.preference
     
     for user in users:
         for backend in ALERT_BACKENDS.values():
             if (user.id, backend.id) not in prefs:
                 prefs[user.id, backend.id] = notice_type.get_default(backend.id)
     
     return tuple((User.objects.get(id=user_id), ALERT_BACKENDS[backend_id]) for ((user_id, backend_id), pref) in prefs.items() if pref)
Exemplo n.º 6
0
 def get_recipients_for_notice(self, notice_type, users):
     if isinstance(notice_type, basestring):
         notice_type = ALERT_TYPES[notice_type]
     
     if not users: return ()
     
     alert_prefs = self.get_query_set().filter(alert_type=notice_type.id).filter(user__in=users)
     
     prefs = {}
     for pref in alert_prefs:
         prefs[pref.user_id, pref.backend] = pref.preference
     
     user_cache = {}
     for user in users:
         user_cache[user.id] = user
         for backend in ALERT_BACKENDS.values():
             if (user.id, backend.id) not in prefs:
                 prefs[user.id, backend.id] = notice_type.get_default(backend.id)
     
     return ((user_cache[user_id], ALERT_BACKENDS[backend_id]) for ((user_id, backend_id), pref) in prefs.items() if pref)