Tests, fixes and creating items

This commit is contained in:
Raphael Michel
2015-01-11 17:47:43 +01:00
parent dacb81af47
commit 59eac8987a
7 changed files with 106 additions and 14 deletions
+17 -3
View File
@@ -51,10 +51,24 @@ class Versionable(BaseVersionable):
earlier_version.version_end_date = forced_version_date
earlier_version.save()
for field in earlier_version._meta.many_to_many:
earlier_version.clone_relations_shallow(later_version, field.attname, forced_version_date)
if hasattr(earlier_version._meta, 'many_to_many_related'):
for rel in earlier_version._meta.many_to_many_related:
earlier_version.clone_relations_shallow(later_version, rel.via_field_name, forced_version_date)
later_version.save()
return later_version
def clone_relations_shallow(self, clone, manager_field_name, forced_version_date):
# Source: the original object, where relations are currently pointing to
source = getattr(self, manager_field_name) # returns a VersionedRelatedManager instance
# Destination: the clone, where the cloned relations should point to
source.through.objects.filter(**{source.source_field.attname: clone.id}).update(**{
source.source_field.attname: self.id})
class UserManager(BaseUserManager):
"""
@@ -156,11 +170,11 @@ class User(AbstractBaseUser, PermissionsMixin):
return self.identifier
def save(self, *args, **kwargs):
if self.identifier is None:
if not self.identifier:
if self.event is None:
self.identifier = self.email.lower()
else:
self.identifier = "%s@%d.event.tixl" % (self.username.lower(), self.event.id)
self.identifier = "%s@%s.event.tixl" % (self.username.lower(), self.event.id)
if not self.pk:
self.identifier = self.identifier.lower()
super().save(*args, **kwargs)
@@ -179,7 +193,7 @@ class User(AbstractBaseUser, PermissionsMixin):
elif not self.givenname and self.familyname:
return self.familyname
elif self.familyname and self.givenname:
return '%(family)s, %(given)s' % {
return _('%(family)s, %(given)s') % {
'family': self.familyname,
'given': self.givenname
}
+6
View File
@@ -38,6 +38,12 @@ class LocaleDeterminationTest(TestCase):
language = response['Content-Language']
self.assertEqual(language, self.TEST_LOCALE)
def test_unknown_browser_default(self):
c = Client(HTTP_ACCEPT_LANGUAGE='sjn')
response = c.get('/control/')
language = response['Content-Language']
self.assertEqual(language, settings.LANGUAGE_CODE)
def test_cookie_settings(self):
c = Client()
cookies = c.cookies
+39 -1
View File
@@ -3,7 +3,7 @@ from django.utils.timezone import now
from tixlbase.models import (
Event, Organizer, Item, ItemVariation,
Property, PropertyValue
Property, PropertyValue, User
)
from tixlbase.types import VariationDict
@@ -139,3 +139,41 @@ class ItemVariationsTest(TestCase):
['L', 'blue'],
]))
self.assertEqual(num_variations, 1)
class VersionableTestCase(TestCase):
def test_shallow_cone(self):
o = Organizer.objects.create(name='Dummy', slug='dummy')
event = Event.objects.create(
organizer=o, name='Dummy', slug='dummy',
date_from=now(),
)
old = Item.objects.create(event=event, name='Dummy', default_price=14)
prop = Property.objects.create(event=event, name='Size')
old.properties.add(prop)
new = old.clone_shallow()
self.assertIsNone(new.version_end_date)
self.assertIsNotNone(old.version_end_date)
self.assertEqual(new.properties.count(), 0)
self.assertEqual(old.properties.count(), 1)
class UserTestCase(TestCase):
def test_identifier_local(self):
o = Organizer.objects.create(name='Dummy', slug='dummy')
event = Event.objects.create(
organizer=o, name='Dummy', slug='dummy',
date_from=now(),
)
u = User(event=event, username='tester')
u.set_password("test")
u.save()
self.assertEqual(u.identifier, "%s@%s.event.tixl" % (u.username.lower(), event.id))
def test_identifier_global(self):
u = User(email='test@example.com')
u.set_password("test")
u.save()
self.assertEqual(u.identifier, "test@example.com")