mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Different approach to RA linking
This commit is contained in:
@@ -102,7 +102,7 @@ class CalendarICS(ICalFeed):
|
||||
return item.earliest_time
|
||||
|
||||
def item_end_datetime(self, item):
|
||||
if type(item.latest_time) == datetime.date: # Ical end_datetime is non-inclusive, so add a day
|
||||
if isinstance(item.latest_time, datetime.date): # Ical end_datetime is non-inclusive, so add a day
|
||||
return item.latest_time + datetime.timedelta(days=1)
|
||||
|
||||
return item.latest_time
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Generated by Django 3.0.3 on 2020-05-28 16:51
|
||||
# Generated by Django 3.0.3 on 2020-05-28 20:43
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
@@ -20,8 +20,6 @@ class Migration(migrations.Migration):
|
||||
name='RiskAssessment',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(blank=True, null=True)),
|
||||
('last_edited', models.DateTimeField(blank=True, null=True)),
|
||||
('nonstandard_equipment', models.BooleanField(default=False)),
|
||||
('nonstandard_use', models.BooleanField(default=False)),
|
||||
('contractors', models.BooleanField(default=False)),
|
||||
@@ -45,13 +43,8 @@ class Migration(migrations.Migration):
|
||||
('special_structures', models.BooleanField(default=False)),
|
||||
('persons_responsible_structures', models.TextField(blank=True, null=True)),
|
||||
('suspended_structures', models.BooleanField(default=False)),
|
||||
('completed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='completer', to=settings.AUTH_USER_MODEL, verbose_name='Completed By')),
|
||||
('event', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='RIGS.Event')),
|
||||
('power_mic', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='power_mic', to=settings.AUTH_USER_MODEL, verbose_name='Power MIC')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='risk_assessment',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='RIGS.RiskAssessment'),
|
||||
),
|
||||
]
|
||||
@@ -325,10 +325,7 @@ class Event(models.Model, RevisionMixin):
|
||||
auth_request_by = models.ForeignKey('Profile', null=True, blank=True, on_delete=models.CASCADE)
|
||||
auth_request_at = models.DateTimeField(null=True, blank=True)
|
||||
auth_request_to = models.EmailField(null=True, blank=True)
|
||||
|
||||
# Risk assessment info
|
||||
risk_assessment = models.ForeignKey('RiskAssessment', null=True, blank=True, on_delete=models.CASCADE)
|
||||
|
||||
|
||||
# Calculated values
|
||||
"""
|
||||
EX Vat
|
||||
@@ -574,11 +571,7 @@ class Payment(models.Model):
|
||||
|
||||
@reversion.register
|
||||
class RiskAssessment(models.Model):
|
||||
completed_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='completer', blank=True, null=True,
|
||||
verbose_name="Completed By", on_delete=models.CASCADE)
|
||||
created = models.DateTimeField(blank=True, null=True)
|
||||
last_edited = models.DateTimeField(blank=True, null=True)
|
||||
|
||||
event = models.OneToOneField('Event', on_delete=models.CASCADE)
|
||||
# General
|
||||
nonstandard_equipment = models.BooleanField(default=False)
|
||||
nonstandard_use = models.BooleanField(default=False)
|
||||
@@ -586,21 +579,21 @@ class RiskAssessment(models.Model):
|
||||
other_companies = models.BooleanField(default=False)
|
||||
crew_fatigue = models.BooleanField(default=False)
|
||||
general_notes = models.TextField(blank=True, null=True)
|
||||
|
||||
|
||||
# Power
|
||||
big_power = models.BooleanField(default=False)
|
||||
power_mic = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='power_mic', blank=True, null=True,
|
||||
verbose_name="Power MIC", on_delete=models.CASCADE)
|
||||
verbose_name="Power MIC", on_delete=models.CASCADE)
|
||||
generators = models.BooleanField(default=False)
|
||||
other_companies_power = models.BooleanField(default=False)
|
||||
nonstandard_equipment_power = models.BooleanField(default=False)
|
||||
multiple_electrical_environments = models.BooleanField(default=False)
|
||||
power_notes = models.TextField(blank=True, null=True)
|
||||
|
||||
|
||||
# Sound
|
||||
noise_monitoring = models.BooleanField(default=False)
|
||||
sound_notes = models.TextField(blank=True, null=True)
|
||||
|
||||
|
||||
# Site
|
||||
known_venue = models.BooleanField(default=False)
|
||||
safe_loading = models.BooleanField(default=False)
|
||||
@@ -608,10 +601,10 @@ class RiskAssessment(models.Model):
|
||||
area_outside_of_control = models.BooleanField(default=False)
|
||||
barrier_required = models.BooleanField(default=False)
|
||||
nonstandard_emergency_procedure = models.BooleanField(default=False)
|
||||
|
||||
|
||||
# Structures
|
||||
special_structures = models.BooleanField(default=False)
|
||||
persons_responsible_structures = models.TextField(blank=True, null=True)
|
||||
suspended_structures = models.BooleanField(default=False)
|
||||
|
||||
|
||||
# Blimey that was a lot of options
|
||||
|
||||
@@ -92,25 +92,17 @@ class EventRADetail(generic.DetailView):
|
||||
epk = self.kwargs.get(self.pk_url_kwarg)
|
||||
event = models.Event.objects.get(pk=epk)
|
||||
ra, created = models.RiskAssessment.objects.get_or_create(event=event)
|
||||
|
||||
ra.event = event
|
||||
|
||||
if created:
|
||||
ra.created = timezone.now()
|
||||
|
||||
return ra
|
||||
|
||||
|
||||
|
||||
class EventRAEdit(generic.UpdateView):
|
||||
model = models.RiskAssessment
|
||||
template_name = 'risk_assessment_form.html'
|
||||
form_class = forms.EventRiskAssessmentForm
|
||||
|
||||
|
||||
def get_success_url(self):
|
||||
ra = self.get_object()
|
||||
ra.completed_by = self.request.user
|
||||
ra.last_edited = timezone.now()
|
||||
ra.save()
|
||||
return super().get_success_url()
|
||||
return reverse_lazy('event_ra', kwargs={'pk': self.object.event.pk })
|
||||
|
||||
|
||||
class EventCreate(generic.CreateView):
|
||||
model = models.Event
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
<div class="row my-3 py-3">
|
||||
<div class="col-sm-12">
|
||||
<h3>Risk Assessment for Event N{{ object.event.pk|stringformat:"05d" }} {{ object.event.name }}</h3>
|
||||
<div class="col-sm">
|
||||
<a href="{% url 'event_ra_edit' object.pk %}" class="btn btn-warning"><span class="fas fa-edit"></span> <span
|
||||
class="hidden-xs">Edit</span></a>
|
||||
<div class="card card-default mb-3">
|
||||
<div class="card-header">Meta Details</div>
|
||||
<div class="card-body">
|
||||
@@ -27,5 +28,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 text-right">
|
||||
{% include 'partials/last_edited.html' with target="ra_history" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
11
RIGS/urls.py
11
RIGS/urls.py
@@ -84,10 +84,6 @@ urlpatterns = [
|
||||
name='event_oembed'),
|
||||
path('event/<int:pk>/print/', permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()),
|
||||
name='event_print'),
|
||||
path('event/<int:pk>/ra/', permission_required_with_403('RIGS.change_event')(rigboard.EventRADetail.as_view()),
|
||||
name='event_ra'),
|
||||
path('event/<int:pk>/ra/edit/', permission_required_with_403('RIGS.change_event')(rigboard.EventRAEdit.as_view()),
|
||||
name='event_ra_edit'),
|
||||
path('event/<int:pk>/edit/', permission_required_with_403('RIGS.change_event')(rigboard.EventUpdate.as_view()),
|
||||
name='event_update'),
|
||||
path('event/<int:pk>/duplicate/', permission_required_with_403('RIGS.add_event')(rigboard.EventDuplicate.as_view()),
|
||||
@@ -95,6 +91,13 @@ urlpatterns = [
|
||||
path('event/<int:pk>/history/',
|
||||
permission_required_with_403('RIGS.view_event')(versioning.VersionHistory.as_view()),
|
||||
name='event_history', kwargs={'model': models.Event}),
|
||||
# Event H&S
|
||||
path('event/<int:pk>/ra/', permission_required_with_403('RIGS.change_event')(rigboard.EventRADetail.as_view()),
|
||||
name='event_ra'),
|
||||
path('event/ra/<int:pk>/edit/', permission_required_with_403('RIGS.change_event')(rigboard.EventRAEdit.as_view()),
|
||||
name='event_ra_edit'),
|
||||
path('event/ra/<int:pk>/history/', permission_required_with_403('RIGS.change_event')(rigboard.EventRAEdit.as_view()),
|
||||
name='ra_history', kwargs={'model': models.RiskAssessment}),
|
||||
|
||||
# Finance
|
||||
path('invoice/', permission_required_with_403('RIGS.view_invoice')(finance.InvoiceIndex.as_view()),
|
||||
|
||||
@@ -30,7 +30,7 @@ urlpatterns = [
|
||||
path('asset/search/', views.AssetSearch.as_view(), name='asset_search_json'),
|
||||
path('asset/id/<str:pk>/embed/',
|
||||
xframe_options_exempt(
|
||||
login_required(login_url='/user/login/embed/')(views.AssetEmbed.as_view())),
|
||||
login_required(login_url='/user/login/embed/')(views.AssetEmbed.as_view())),
|
||||
name='asset_embed'),
|
||||
path('asset/id/<str:pk>/oembed_json/',
|
||||
views.AssetOembed.as_view(),
|
||||
|
||||
Reference in New Issue
Block a user