mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 13:32:15 +00:00
Initial shenanigans on storing my overly fancy EC form
This commit is contained in:
@@ -141,3 +141,12 @@ class EventChecklistList(generic.ListView):
|
|||||||
paginate_by = 20
|
paginate_by = 20
|
||||||
model = models.EventChecklist
|
model = models.EventChecklist
|
||||||
template_name = 'event_checklist_list.html'
|
template_name = 'event_checklist_list.html'
|
||||||
|
|
||||||
|
|
||||||
|
class HSList(generic.ListView):
|
||||||
|
paginate_by = 20
|
||||||
|
model = models.Event
|
||||||
|
template_name = 'hs_list.html'
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return models.Event.objects.all().order_by('-start_date')
|
||||||
|
|||||||
54
RIGS/migrations/0045_auto_20200824_1431.py
Normal file
54
RIGS/migrations/0045_auto_20200824_1431.py
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Generated by Django 3.0.7 on 2020-08-24 13:31
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('RIGS', '0044_eventchecklist'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='medium_event',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='earthing',
|
||||||
|
field=models.BooleanField(help_text='Equipment appropriately earthed?<br><small>(truss, stage, etc)</small>'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='extinguishers_location',
|
||||||
|
field=models.CharField(help_text='Location of fire extinguishers', max_length=255),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='hs_location',
|
||||||
|
field=models.CharField(help_text='Location of Safety Bag/Box', max_length=255),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='safe_packing',
|
||||||
|
field=models.BooleanField(help_text='Equipment packed away safely?<br><small>(including flightcases)</small>'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='safe_parking',
|
||||||
|
field=models.BooleanField(help_text='Vehicles parked safely?<br><small>(does not obstruct venue access)</small>'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='supply_test',
|
||||||
|
field=models.BooleanField(help_text='Electrical supplies tested?<br><small>(using socket tester)</small>'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventchecklist',
|
||||||
|
name='warning_signs',
|
||||||
|
field=models.BooleanField(help_text='Warning signs in place?<br><small>(strobe, smoke, power etc.)</small>'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -642,13 +642,13 @@ class RiskAssessment(models.Model, RevisionMixin):
|
|||||||
|
|
||||||
@reversion.register
|
@reversion.register
|
||||||
class EventChecklist(models.Model, RevisionMixin):
|
class EventChecklist(models.Model, RevisionMixin):
|
||||||
|
|
||||||
event = models.OneToOneField('Event', on_delete=models.CASCADE)
|
event = models.OneToOneField('Event', on_delete=models.CASCADE)
|
||||||
|
|
||||||
# General
|
# General
|
||||||
power_mic = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='checklist', blank=True, null=True,
|
power_mic = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='checklist', blank=True, null=True,
|
||||||
verbose_name="Power MIC", on_delete=models.CASCADE, help_text="Who is the Power MIC?")
|
verbose_name="Power MIC", on_delete=models.CASCADE, help_text="Who is the Power MIC?")
|
||||||
# TODO Tabular format
|
vehicles = models.JSONField(help_text="List vehicles and their drivers", default=dict, null=False)
|
||||||
vehicles = models.TextField(help_text="List vehicles and their drivers")
|
|
||||||
|
|
||||||
# Safety Checks
|
# Safety Checks
|
||||||
safe_parking = models.BooleanField(help_text="Vehicles parked safely?<br><small>(does not obstruct venue access)</small>")
|
safe_parking = models.BooleanField(help_text="Vehicles parked safely?<br><small>(does not obstruct venue access)</small>")
|
||||||
@@ -668,6 +668,9 @@ class EventChecklist(models.Model, RevisionMixin):
|
|||||||
earthing = models.BooleanField(help_text="Equipment appropriately earthed?<br><small>(truss, stage, etc)</small>")
|
earthing = models.BooleanField(help_text="Equipment appropriately earthed?<br><small>(truss, stage, etc)</small>")
|
||||||
pat = models.BooleanField(help_text="All equipment in PAT period?")
|
pat = models.BooleanField(help_text="All equipment in PAT period?")
|
||||||
|
|
||||||
|
medium_event = models.BooleanField()
|
||||||
|
# Medium Electrical Checks
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def activity_feed_string(self):
|
def activity_feed_string(self):
|
||||||
return str(self.event)
|
return str(self.event)
|
||||||
|
|||||||
@@ -59,8 +59,9 @@
|
|||||||
H&S
|
H&S
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdownHS">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdownHS">
|
||||||
<a class="dropdown-item" href="{% url 'ra_list' %}">Risk Assessment List</a>
|
<a class="dropdown-item" href="{% url 'hs_list' %}">Overview</a>
|
||||||
<a class="dropdown-item" href="{% url 'ec_list' %}">Event Checklist List</a>
|
<a class="dropdown-item" href="{% url 'ra_list' %}">Risk Assessments</a>
|
||||||
|
<a class="dropdown-item" href="{% url 'ec_list' %}">Event Checklists</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -16,30 +16,6 @@
|
|||||||
<div class="card-header">General</div>
|
<div class="card-header">General</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
<dt class="col-10">{{ object|help_text:'nonstandard_equipment' }}</dt>
|
|
||||||
<dd class="col-2">
|
|
||||||
{{ object.nonstandard_equipment|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-10">{{ object|help_text:'nonstandard_use'|safe }}</dt>
|
|
||||||
<dd class="col-2">
|
|
||||||
{{ object.nonstandard_use|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-10">{{ object|help_text:'contractors' }}</dt>
|
|
||||||
<dd class="col-2">
|
|
||||||
{{ object.contractors|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-10">{{ object|help_text:'other_companies' }}</dt>
|
|
||||||
<dd class="col-2">
|
|
||||||
{{ object.othercompanies|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-10">{{ object|help_text:'crew_fatigue' }}</dt>
|
|
||||||
<dd class="col-2">
|
|
||||||
{{ object.crewfatigue|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-12">{{ object|help_text:'general_notes' }}</dt>
|
|
||||||
<dd class="col-12">
|
|
||||||
{{ object.general_notes|default:'N/A'|linebreaks }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,34 +23,6 @@
|
|||||||
<div class="card-header">Power</div>
|
<div class="card-header">Power</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
<dt class="col-sm-6">{{ object|help_text:'big_power' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.big_power|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'power_mic' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.power_mic.name|default:'None' }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'generators' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.generators|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'other_companies_power' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.other_companies_power|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'nonstandard_equipment_power' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.nonstandard_equipment_power|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'multiple_electrical_environments' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.multiple_electrical_environments|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-12">{{ object|help_text:'power_notes' }}</dt>
|
|
||||||
<dd class="col-12">
|
|
||||||
{{ object.power_notes|default:'N/A'|linebreaks }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -82,14 +30,6 @@
|
|||||||
<div class="card-header">Sound</div>
|
<div class="card-header">Sound</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
<dt class="col-sm-6">{{ object|help_text:'noise_monitoring' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.noise_monitoring|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-12">{{ object|help_text:'sound_notes' }}</dt>
|
|
||||||
<dd class="col-12">
|
|
||||||
{{ object.sound_notes|default:'N/A'|linebreaks }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -97,50 +37,12 @@
|
|||||||
<div class="card-header">Site Details</div>
|
<div class="card-header">Site Details</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
<dt class="col-sm-6">{{ object|help_text:'known_venue' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.known_venue|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'safe_loading'|safe }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.safe_loading.name|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'safe_storage' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.safe_storage|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'area_outside_of_control' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.area_outside_of_control|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'barrier_required' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.barrier_required|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'nonstandard_emergency_procedure' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.nonstandard_emergency_procedure|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card card-default mb-3">
|
<div class="card card-default mb-3">
|
||||||
<div class="card-header">Structures</div>
|
<div class="card-header">Structures</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<dl class="row">
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'special_structures' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.special_structures|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'persons_responsible_structures' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.persons_responsible_structures.name|default:'N/A'|linebreaks }}
|
|
||||||
</dd>
|
|
||||||
<dt class="col-sm-6">{{ object|help_text:'suspended_structures' }}</dt>
|
|
||||||
<dd class="col-sm-6">
|
|
||||||
{{ object.suspended_structures|yesno|title }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -25,6 +25,38 @@
|
|||||||
<script src="{% static 'js/tooltip.js' %}"></script>
|
<script src="{% static 'js/tooltip.js' %}"></script>
|
||||||
|
|
||||||
<script src="{% static 'js/autocompleter.js' %}"></script>
|
<script src="{% static 'js/autocompleter.js' %}"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
{% if not object.pk %}
|
||||||
|
$('.form-hide').slideUp();
|
||||||
|
{% else %}
|
||||||
|
{% if object.medium_event %}
|
||||||
|
$('#small-event').slideUp();
|
||||||
|
$('#medium-event').slideDown();
|
||||||
|
{% else %}
|
||||||
|
$('#small-event').slideDown();
|
||||||
|
$('#medium-event').slideUp();
|
||||||
|
{% endif%}
|
||||||
|
{% endif %}
|
||||||
|
$('#size-selector button').on('click', function () {
|
||||||
|
$(this).toggleClass('active');
|
||||||
|
$('#size-selector button').not(this).removeClass('active');
|
||||||
|
if ($(this).data('event-size') == 1) {
|
||||||
|
$('#{{form.medium_event.auto_id}}').prop('checked', true);
|
||||||
|
$('#small-event').slideUp();
|
||||||
|
$('#medium-event').slideDown();
|
||||||
|
} else {
|
||||||
|
$('#{{form.medium_event.auto_id}}').prop('checked', false);
|
||||||
|
$('#small-event').slideDown();
|
||||||
|
$('#medium-event').slideUp();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("form").submit(function( event ) {
|
||||||
|
$({{form.vehicles.id_for_label}}).val(JSON.stringify($('*[data-serialize]').serializeArray()));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
@@ -64,6 +96,8 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<label class="col-12 pt-3" for="{{ form.vehicles.id_for_label }}">{{ form.vehicles.help_text }}</label>
|
<label class="col-12 pt-3" for="{{ form.vehicles.id_for_label }}">{{ form.vehicles.help_text }}</label>
|
||||||
|
<input name="{{ form.vehicles.name }}" id="{{ form.vehicles.id_for_label }}"
|
||||||
|
value="{{ form.vehicles.value }}"/>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -73,13 +107,10 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for i in '012'|make_list %}
|
{% for i in '012'|make_list %}
|
||||||
<tr>
|
<tr id="vehicles">
|
||||||
<td><input type="text" class="form-control"/></td>
|
<td><input name="vehicle_{{i}}" type="text" class="form-control" data-serialize="true"/></td>
|
||||||
<th scope="row">
|
<th scope="row">
|
||||||
<select id="{{ form.power_mic.id_for_label }}" name="{{ form.power_mic.name }}" class="form-control selectpicker" data-live-search="true" data-sourceurl="{% url 'api_secure' model='profile' %}?fields=first_name,last_name,initials">
|
<select name="driver_{{i}}" class="form-control selectpicker" data-live-search="true" data-sourceurl="{% url 'api_secure' model='profile' %}?fields=first_name,last_name,initials" data-serialize="true">
|
||||||
{% if object.power_mic %}
|
|
||||||
<option value="{{object.power_mic.pk}}" selected="selected">{{ object.power_mic.name }}</option>
|
|
||||||
{% endif %}
|
|
||||||
</select>
|
</select>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -152,6 +183,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row my-3">
|
<div class="row my-3">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">Event Size</div>
|
||||||
|
<div class="card-body" id="size-selector">
|
||||||
|
{% render_field form.medium_event style="display: none" %}
|
||||||
|
<button type="button" class="btn btn-success" data-event-size="0" style="width: 10rem;">Small</button>
|
||||||
|
<button type="button" class="btn btn-warning" data-event-size="1" style="width: 10rem;">Medium</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-3 form-hide" id="small-event">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">Electrical Checks <small>for ‘Small’ TEC Events <6kVA (aprox. 26A)</small></div>
|
<div class="card-header">Electrical Checks <small>for ‘Small’ TEC Events <6kVA (aprox. 26A)</small></div>
|
||||||
@@ -164,7 +207,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row my-3">
|
<div class="row my-3 form-hide" id="medium-event">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">Electrical Checks <small>for ‘Medium’ TEC Events </small></div>
|
<div class="card-header">Electrical Checks <small>for ‘Medium’ TEC Events </small></div>
|
||||||
|
|||||||
59
RIGS/templates/hs_list.html
Normal file
59
RIGS/templates/hs_list.html
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
{% extends 'base_rigs.html' %}
|
||||||
|
{% load paginator from filters %}
|
||||||
|
|
||||||
|
{% block title %}H&S Overview{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table mb-0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Event</th>
|
||||||
|
<th scope="col">Dates</th>
|
||||||
|
<th scope="col">RA</th>
|
||||||
|
<th scope="col">Checklist</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for event in object_list %}
|
||||||
|
<tr id="event_row">
|
||||||
|
<th scope="row" id="event_number">{{ event.pk }} | {{ event.name }}</th>
|
||||||
|
<!--Dates-->
|
||||||
|
<td id="event_dates">
|
||||||
|
<div><strong>{{ event.start_date|date:"D d/m/Y" }}</strong></div>
|
||||||
|
{% if event.end_date and event.end_date != event.start_date %}
|
||||||
|
<div><strong>{{ event.end_date|date:"D d/m/Y" }}</strong></div>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% if event.riskassessment %}
|
||||||
|
<a class="btn btn-primary" href="{% url 'ra_detail' event.riskassessment.pk %}">View</a>
|
||||||
|
{% if event.riskassessment.reviewed_by %}
|
||||||
|
Reviewed by <a href="{% url 'profile_detail' event.riskassessment.reviewed_by.pk %}">{{ event.riskassessment.reviewed_by }}</a> at {{ event.riskassessment.reviewed_at }}
|
||||||
|
{% else %}
|
||||||
|
<a class="btn btn-success my-2" href="{% url 'ra_review' event.riskassessment.pk %}">Mark Reviewed</a>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<a href="{% url 'event_ra' event.pk %}" class="btn btn-success"><span class="fas fa-paperclip"></span> <span
|
||||||
|
class="hidden-xs">Create Risk Assessment</span></a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{% url 'event_ec' event.pk %}" class="btn btn-success"><span class="fas fa-paperclip"></span> <span
|
||||||
|
class="hidden-xs">Create Event Checklist</span></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% empty %}
|
||||||
|
<tr class="bg-warning text-dark">
|
||||||
|
<td colspan="6">No events found</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% if is_paginated %}
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
{% paginator %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@@ -91,6 +91,8 @@ urlpatterns = [
|
|||||||
name='event_history', kwargs={'model': models.Event}),
|
name='event_history', kwargs={'model': models.Event}),
|
||||||
|
|
||||||
# Event H&S
|
# Event H&S
|
||||||
|
path('event/hs/', permission_required_with_403('RIGS.change_event')(hs.HSList.as_view()), name='hs_list'),
|
||||||
|
|
||||||
path('event/<int:pk>/ra/', permission_required_with_403('RIGS.change_event')(hs.EventRiskAssessmentCreate.as_view()),
|
path('event/<int:pk>/ra/', permission_required_with_403('RIGS.change_event')(hs.EventRiskAssessmentCreate.as_view()),
|
||||||
name='event_ra'),
|
name='event_ra'),
|
||||||
path('event/ra/<int:pk>/', permission_required_with_403('RIGS.change_event')(hs.EventRiskAssessmentDetail.as_view()),
|
path('event/ra/<int:pk>/', permission_required_with_403('RIGS.change_event')(hs.EventRiskAssessmentDetail.as_view()),
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ cssutils==1.0.2
|
|||||||
diff-match-patch==20181111
|
diff-match-patch==20181111
|
||||||
dj-database-url==0.5.0
|
dj-database-url==0.5.0
|
||||||
dj-static==0.0.6
|
dj-static==0.0.6
|
||||||
Django==3.0.7
|
Django==3.1
|
||||||
django-debug-toolbar==2.2
|
django-debug-toolbar==2.2
|
||||||
django-filter==2.3.0
|
django-filter==2.3.0
|
||||||
django-gulp==4.1.0
|
django-gulp==4.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user