diff --git a/RIGS/forms.py b/RIGS/forms.py index 5b5b835b..59e9eb01 100644 --- a/RIGS/forms.py +++ b/RIGS/forms.py @@ -232,3 +232,10 @@ class EventCheckInForm(forms.ModelForm): class Meta: model = models.EventCheckIn fields = '__all__' + exclude = ['end_time'] + + +class EditCheckInForm(forms.ModelForm): + class Meta: + model = models.EventCheckIn + fields = '__all__' diff --git a/RIGS/models.py b/RIGS/models.py index dc746f17..df666fad 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -82,7 +82,8 @@ class Profile(AbstractUser): return self.name def current_event(self): - return EventCheckIn.objects.filter(person=self).latest('time') or None + q = EventCheckIn.objects.filter(person=self, end_time=None) + return q.latest('time') if q.exists() else None class ContactableManager(models.Manager): @@ -919,6 +920,10 @@ class EventCheckIn(models.Model): vehicle = models.CharField(max_length=100, blank=True) end_time = models.DateTimeField(null=True) + def clean(self): + if self.end_time < self.time: + raise ValidationError("May not check out before you've checked in. Please invent time travel and retry.") + def active(self): return end_time is not None diff --git a/RIGS/templates/event_detail.html b/RIGS/templates/event_detail.html index b04089fb..d1c873d7 100644 --- a/RIGS/templates/event_detail.html +++ b/RIGS/templates/event_detail.html @@ -1,6 +1,7 @@ {% extends request.is_ajax|yesno:"base_ajax.html,base_rigs.html" %} {% load markdown_tags %} +{% load button from filters %} {% block content %}
| Crewmember | +Vehicle | +Start Time | +Role | +End Time | ++ |
|---|---|---|---|---|---|
| {{crew.person}} | +{{crew.vehicle|default:"None"}} | +{{crew.time}} | +{{crew.role}} | +{% if crew.end_time %}{{crew.end_time}}{% else %}{% endif %} | +{% if crew.end_time %}{% if crew.person.pk == request.user.pk or crew.event.mic.pk == request.user.pk %}{% button 'edit' 'edit_checkin' crew.pk clazz='btn-sm modal-href' %}{% endif %}{%endif%} | +
| Apparently this event happened by magic... | +|||||
| Crewmember | -Vehicle | -Start Time | -Role | -End Time | -
|---|---|---|---|---|
| {{crew.person}} | -{{crew.vehicle|default:"None"}} | -{{crew.time}} | -{{crew.role}} | -{{crew.end_time}} | -
| Apparently this event happened by magic... | -||||
Other (enter text)
-Other (enter text)
-