def test_current_user_field(self): user = User.objects.get(username="******") EchelonMiddleware.set_user(user) TestModel.objects.create(name="TEST") EchelonMiddleware.del_user() test_instance = TestModel.objects.get(name="TEST") self.assertEqual(test_instance.creator, user)
def test_changelog_actions(self): obj = TestModel2(name='log_me', value=1) obj.save() obj.value = 2 obj.save() EchelonMiddleware.set_user('test') TestModel2.objects.all().update(value=3) TestModel2.objects.get(pk=obj.pk).delete() cl = ChangelogEntry.objects.for_instance(obj).order_by('id') self.assertEqual(cl.count(), 4) self.assertEqual(list(cl.values_list('action', flat=True)), [u'add', u'change', u'change', u'delete']) self.assertEqual(cl[0].changes, { 'id': (None, '1'), 'value': (None, u'1'), 'name': (None, u'log_me') }) self.assertEqual(cl[1].changes, {'value': (u'1', u'2')}) self.assertEqual(cl[2].changes, {'value': (u'2', u'3')}) self.assertEqual(cl[3].changes, { 'id': (u'1', None), 'value': (u'3', None), 'name': (u'log_me', None) }) self.assertEqual(cl[0].who, None) self.assertEqual(cl[2].who.id, 1)
def pre_save(self, model_instance, add): if add or not self.add_only: user = EchelonMiddleware.get_user() if user: setattr(model_instance, self.attname, user.pk) return user.pk return super(CurrentUserField, self).pre_save(model_instance, add)
def test_changelog_actions(self): obj = TestModel2(name='log_me', value=1) obj.save() obj.value=2 obj.save() EchelonMiddleware.set_user('test') TestModel2.objects.all().update(value=3) TestModel2.objects.get(pk=obj.pk).delete() cl = ChangelogEntry.objects.for_instance(obj).order_by('id') self.assertEqual(cl.count(), 4) self.assertEqual(list(cl.values_list('action', flat=True)), [u'add', u'change', u'change', u'delete']) self.assertEqual(cl[0].changes, {'id': (None, '1'), 'value': (None, u'1'), 'name': (None, u'log_me')}) self.assertEqual(cl[1].changes, {'value': (u'1', u'2')}) self.assertEqual(cl[2].changes, {'value': (u'2', u'3')}) self.assertEqual(cl[3].changes, {'id': (u'1', None), 'value': (u'3', None), 'name': (u'log_me', None)}) self.assertEqual(cl[0].who, None) self.assertEqual(cl[2].who.id, 1)
def pre_save(self, model_instance, add): if add or not self.add_only: user = EchelonMiddleware.get_user() if user and user.is_authenticated(): # Do something for authenticated users. setattr(model_instance, self.attname, user.pk) return user.pk return super(CurrentUserField, self).pre_save(model_instance, add)
def clean_user(self): user = self.cleaned_data.get('user', "").strip() users = User.objects.filter(username=user) if not users: raise forms.ValidationError("user can not be none") current_user = EchelonMiddleware.get_user() if user != current_user.username and not current_user.is_superuser: raise forms.ValidationError("user can not be matched") return users[0]
def pre_save(self, model_instance, add): if add or not self.add_only: user = EchelonMiddleware.get_user() if user and not user.is_anonymous(): setattr(model_instance, self.attname, user.pk) return user.pk else: setattr(model_instance, self.attname, None) return None return super(CurrentUserField, self).pre_save(model_instance, add)
def test_anonymous(self): EchelonMiddleware.set_user(AnonymousUser()) TestModel.objects.create(name="TEST") test_instance = TestModel.objects.get(name="TEST") self.assertEqual(test_instance.creator, None)
def test_current_user_field_with_no_active_user(self): EchelonMiddleware.del_user() TestModel.objects.create(name="TEST") test_instance = TestModel.objects.get(name="TEST") self.assertEqual(test_instance.creator, None)
def test_view(request): user = EchelonMiddleware.get_user() return HttpResponse(user and user.username or u"")