diff --git a/app/interface/tests/__init__.py b/app/interface/tests/__init__.py index d973e05..6c85343 100644 --- a/app/interface/tests/__init__.py +++ b/app/interface/tests/__init__.py @@ -33,7 +33,8 @@ class AccessTestCase(TestCase): for details in cls.PROJECTS: when = details.pop('when', 0) ensemble = details.pop('ensemble') - obj = cls.ensembles[ensemble].projects.create(event_date=now+timedelta(days=when), **details) + details['event_date'] = now + timedelta(days=when) if when else None + obj = cls.ensembles[ensemble].projects.create(**details) cls.projects[details['name']] = obj return diff --git a/app/interface/tests/test_access.py b/app/interface/tests/test_access.py index 60bcdad..0ac716e 100644 --- a/app/interface/tests/test_access.py +++ b/app/interface/tests/test_access.py @@ -23,19 +23,20 @@ class InterfaceAccessTestCase(AccessTestCase): {'name': 'Navy Recruitment Day', 'ensemble': 'party-posse', 'when': 6}, {'name': 'Barbershop Contest', 'ensemble': 'be-sharps', 'when': 28}, {'name': 'Open Mic Night', 'ensemble': 'bleeding-gums', 'when': 1 }, + {'name': 'Current Repertoire', 'ensemble': 'be-sharps'}, ) def test_bad_login(self): with self.assertRaisesMessage(self.failureException, 'Failed to login as admin'): self.login('admin', 'admin') - def test_admin_ensembles(self): + def test_superuser_ensembles(self): self.login('admin', 'secret') response = self.client.get('/ensembles') self.assertObjectList(response, ['The Be Sharps', 'Lisa & the Bleeding Gums', 'Party Posse']) self.assertContains(response, 'Django Admin') - def test_admin_ensemble_permissions(self): + def test_superuser_ensemble_permissions(self): self.login('admin', 'secret') response = self.client.get('/ensembles/party-posse') self.assertTrue(response.context['request'].is_admin) @@ -48,10 +49,10 @@ class InterfaceAccessTestCase(AccessTestCase): '/ensembles/be-sharps/new-project': True, }) - def test_admin_projects(self): + def test_superuser_projects(self): self.login('admin', 'secret') response = self.client.get('/projects') - self.assertObjectList(response, ['Open Mic Night', 'Navy Recruitment Day', 'Barbershop Contest']) + self.assertObjectList(response, ['Current Repertoire', 'Open Mic Night', 'Navy Recruitment Day', 'Barbershop Contest']) self.assertObjectList(self.client.get('/ensembles/bleeding-gums'), ['Open Mic Night']) self.assertObjectList(self.client.get('/ensembles/bleeding-gums?inactive'), ['Open Mic Night', 'Baker St']) @@ -94,7 +95,7 @@ class InterfaceAccessTestCase(AccessTestCase): def test_user_projects(self): self.login('homer', 'maggie') response = self.client.get('/projects') - self.assertObjectList(response, ['Barbershop Contest']) + self.assertObjectList(response, ['Current Repertoire', 'Barbershop Contest']) response = self.client.get('/projects/3') self.assertTrue(response.context['request'].is_admin) @@ -110,7 +111,7 @@ class InterfaceAccessTestCase(AccessTestCase): self.authorize(models.Project, pk=4) response = self.client.get('/projects') - self.assertObjectList(response, ['Open Mic Night', 'Barbershop Contest']) + self.assertObjectList(response, ['Current Repertoire', 'Open Mic Night', 'Barbershop Contest']) response = self.client.get('/projects/4') self.assertFalse(response.context['request'].is_admin) diff --git a/app/interface/views.py b/app/interface/views.py index f56c91a..9ff16c2 100644 --- a/app/interface/views.py +++ b/app/interface/views.py @@ -260,7 +260,8 @@ class ProjectListView(ProjectMixin, ListView): def get_queryset(self): qs = self.get_project_queryset() - return qs.filter(active=True, event_date__gte=timezone.now()-timezone.timedelta(7)) + f = Q(event_date__gte=(timezone.now()-timezone.timedelta(7))) | Q(event_date=None) + return qs.filter(f, active=True) class ProjectCreateView(EnsembleMixin, CreateView): admin_required = True