diff --git a/RIGS/forms.py b/RIGS/forms.py index 78128678..3b40970e 100644 --- a/RIGS/forms.py +++ b/RIGS/forms.py @@ -44,7 +44,7 @@ class EventForm(forms.ModelForm): return simplejson.dumps(items) def __init__(self, *args, **kwargs): - super(EventForm, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.fields['items_json'].initial = self._get_items_json self.fields['start_date'].widget.format = '%Y-%m-%d' @@ -297,3 +297,13 @@ class PowerTestRecordForm(forms.ModelForm): model = models.PowerTestRecord fields = '__all__' exclude = ['reviewed_at', 'reviewed_by'] + + +class EventCheckInForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['time'].initial = timezone.now() + + class Meta: + model = models.EventCheckIn + fields = '__all__' diff --git a/RIGS/migrations/0049_eventcheckin_eventcheckout.py b/RIGS/migrations/0049_eventcheckin_eventcheckout.py new file mode 100644 index 00000000..4b65e10c --- /dev/null +++ b/RIGS/migrations/0049_eventcheckin_eventcheckout.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.18 on 2023-05-09 20:12 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('RIGS', '0048_auto_20230509_2043'), + ] + + operations = [ + migrations.CreateModel( + name='EventCheckOut', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField()), + ('vehicle', models.CharField(max_length=100)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='RIGS.event')), + ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checkouts', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='EventCheckIn', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField()), + ('vehicle', models.CharField(max_length=100)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='crew', to='RIGS.event')), + ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checkins', to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/RIGS/models.py b/RIGS/models.py index ded93a4f..cf1f7303 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -902,3 +902,17 @@ class PowerTestRecord(ReviewableModel, RevisionMixin): permissions = [ ('review_power', 'Can review Power Test Records') ] + + +class EventCheckIn(models.Model): + event = models.ForeignKey('Event', related_name='crew', on_delete=models.CASCADE) + person = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='checkins', on_delete=models.CASCADE) + time = models.DateTimeField() + vehicle = models.CharField(max_length=100) + + +class EventCheckOut(models.Model): + event = models.ForeignKey('Event', on_delete=models.CASCADE) + person = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='checkouts', on_delete=models.CASCADE) + time = models.DateTimeField() # TODO Validate may not check in in future + vehicle = models.CharField(max_length=100) diff --git a/RIGS/templates/hs/eventcheckin_form.html b/RIGS/templates/hs/eventcheckin_form.html new file mode 100644 index 00000000..7c0e5f71 --- /dev/null +++ b/RIGS/templates/hs/eventcheckin_form.html @@ -0,0 +1,56 @@ +{% extends request.is_ajax|yesno:'base_ajax.html,base_rigs.html' %} +{% load widget_tweaks %} +{% load static %} +{% load help_text from filters %} +{% load profile_by_index from filters %} +{% load button from filters %} + +{% block css %} + {{ block.super }} + +{% endblock %} + +{% block preload_js %} + {{ block.super }} + +{% endblock %} + +{% block js %} + {{ block.super }} + + +{% endblock %} + +{% block content %} +