def test_user_preferences(self): # User preferences must be same as NotificationType's preferences = notification_preferences( self.u1.id, 'user_liked_my_answer') default_preferences = NotificationType.objects\ .get(slug='user_liked_my_answer').default_preferences self.assertEqual(preferences, default_preferences)
def test_user_preferences(self): # User preferences must be same as NotificationType's preferences = notification_preferences(self.u1.id, 'user_liked_my_answer') default_preferences = NotificationType.objects\ .get(slug='user_liked_my_answer').default_preferences self.assertEqual(preferences, default_preferences)
def save(self): """ TODO: Optimise to not save unchanged preferences. """ form_preferences = self.parse_preferences() for ntype in NotificationType.objects.filter(is_active=True): user_preferences = notification_preferences(self.user, ntype.slug) user_preferences.update(form_preferences.get(ntype.slug, {})) NotificationPreference.objects.filter( user=self.user, ntype=ntype).update( preferences=user_preferences)
def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(NotificationPreferencesForm, self).__init__(*args, **kwargs) self.stacks = [] for ntype in NotificationType.objects.filter(is_active=True): fields = [] user_preferences = notification_preferences( self.user.id, ntype.slug) for slug, name in self.FIELD_LABEL_MAP.iteritems(): key = '%s_when_%s' % (slug, ntype.slug) self.fields[key] = forms.BooleanField( label=name, initial=user_preferences.get(slug, False), required=False) fields.append(self[key]) self.stacks.append({ 'name': ntype.name, 'fields': fields})