No date for perpetual projects

This commit is contained in:
Tris Forster 2023-02-23 19:03:01 +11:00
parent f49ff0fd0e
commit dbbfa79f10
3 changed files with 11 additions and 8 deletions

View File

@ -33,7 +33,8 @@ class AccessTestCase(TestCase):
for details in cls.PROJECTS: for details in cls.PROJECTS:
when = details.pop('when', 0) when = details.pop('when', 0)
ensemble = details.pop('ensemble') 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 cls.projects[details['name']] = obj
return return

View File

@ -23,19 +23,20 @@ class InterfaceAccessTestCase(AccessTestCase):
{'name': 'Navy Recruitment Day', 'ensemble': 'party-posse', 'when': 6}, {'name': 'Navy Recruitment Day', 'ensemble': 'party-posse', 'when': 6},
{'name': 'Barbershop Contest', 'ensemble': 'be-sharps', 'when': 28}, {'name': 'Barbershop Contest', 'ensemble': 'be-sharps', 'when': 28},
{'name': 'Open Mic Night', 'ensemble': 'bleeding-gums', 'when': 1 }, {'name': 'Open Mic Night', 'ensemble': 'bleeding-gums', 'when': 1 },
{'name': 'Current Repertoire', 'ensemble': 'be-sharps'},
) )
def test_bad_login(self): def test_bad_login(self):
with self.assertRaisesMessage(self.failureException, 'Failed to login as admin'): with self.assertRaisesMessage(self.failureException, 'Failed to login as admin'):
self.login('admin', 'admin') self.login('admin', 'admin')
def test_admin_ensembles(self): def test_superuser_ensembles(self):
self.login('admin', 'secret') self.login('admin', 'secret')
response = self.client.get('/ensembles') response = self.client.get('/ensembles')
self.assertObjectList(response, ['The Be Sharps', 'Lisa & the Bleeding Gums', 'Party Posse']) self.assertObjectList(response, ['The Be Sharps', 'Lisa & the Bleeding Gums', 'Party Posse'])
self.assertContains(response, 'Django Admin') self.assertContains(response, 'Django Admin')
def test_admin_ensemble_permissions(self): def test_superuser_ensemble_permissions(self):
self.login('admin', 'secret') self.login('admin', 'secret')
response = self.client.get('/ensembles/party-posse') response = self.client.get('/ensembles/party-posse')
self.assertTrue(response.context['request'].is_admin) self.assertTrue(response.context['request'].is_admin)
@ -48,10 +49,10 @@ class InterfaceAccessTestCase(AccessTestCase):
'/ensembles/be-sharps/new-project': True, '/ensembles/be-sharps/new-project': True,
}) })
def test_admin_projects(self): def test_superuser_projects(self):
self.login('admin', 'secret') self.login('admin', 'secret')
response = self.client.get('/projects') 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'), ['Open Mic Night'])
self.assertObjectList(self.client.get('/ensembles/bleeding-gums?inactive'), ['Open Mic Night', 'Baker St']) 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): def test_user_projects(self):
self.login('homer', 'maggie') self.login('homer', 'maggie')
response = self.client.get('/projects') response = self.client.get('/projects')
self.assertObjectList(response, ['Barbershop Contest']) self.assertObjectList(response, ['Current Repertoire', 'Barbershop Contest'])
response = self.client.get('/projects/3') response = self.client.get('/projects/3')
self.assertTrue(response.context['request'].is_admin) self.assertTrue(response.context['request'].is_admin)
@ -110,7 +111,7 @@ class InterfaceAccessTestCase(AccessTestCase):
self.authorize(models.Project, pk=4) self.authorize(models.Project, pk=4)
response = self.client.get('/projects') 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') response = self.client.get('/projects/4')
self.assertFalse(response.context['request'].is_admin) self.assertFalse(response.context['request'].is_admin)

View File

@ -260,7 +260,8 @@ class ProjectListView(ProjectMixin, ListView):
def get_queryset(self): def get_queryset(self):
qs = self.get_project_queryset() 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): class ProjectCreateView(EnsembleMixin, CreateView):
admin_required = True admin_required = True