mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-24 08:52:15 +00:00
Proof of concept for JSON parsing/storage
\o/
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
{% extends request.is_ajax|yesno:"base_ajax.html,base_rigs.html" %}
|
{% extends request.is_ajax|yesno:"base_ajax.html,base_rigs.html" %}
|
||||||
{% block title %}Risk Assessment for Event N{{ object.event.pk|stringformat:"05d" }} {{ object.event.name }}{% endblock %}
|
{% block title %}Risk Assessment for Event N{{ object.event.pk|stringformat:"05d" }} {{ object.event.name }}{% endblock %}
|
||||||
{% load help_text from filters %}
|
{% load help_text from filters %}
|
||||||
|
{% load get_json_element from filters %}
|
||||||
|
{% load get_item from filters %}
|
||||||
|
{% load profile_by_index from filters %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row my-3 py-3">
|
<div class="row my-3 py-3">
|
||||||
@@ -16,35 +19,63 @@
|
|||||||
<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:'power_mic' }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.power_mic.name }}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<p>{{ object|help_text:'vehicles' }}</p>
|
||||||
|
<ul>
|
||||||
|
{% for i in object.vehicles %}
|
||||||
|
|
||||||
|
<li>Vehicle <strong>{{ object.vehicles|get_item:i|get_item:'vehicle'|default:'none' }}</strong> driven by <strong>{{ object.vehicles|get_item:i|get_item:'driver'|profile_by_index|default:'nobody'}}</strong></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card card-default mb-3">
|
||||||
|
<div class="card-header">Safety Checks</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<dl class="row">
|
||||||
|
<dt class="col-10">{{ object|help_text:'safe_parking'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.safe_parking|yesno|title }}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-10">{{ object|help_text:'safe_packing'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.safe_packing|yesno|title }}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-10">{{ object|help_text:'exits'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.exits|yesno|title }}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-10">{{ object|help_text:'trip_hazard'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.trip_hazard|yesno|title }}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-10">{{ object|help_text:'warning_signs'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.warning_signs|yesno|title }}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-10">{{ object|help_text:'ear_plugs'|safe }}</dt>
|
||||||
|
<dd class="col-2">
|
||||||
|
{{ object.ear_plugs|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">Power</div>
|
<div class="card-header">Power</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
{% if object.medium_event %}
|
||||||
|
<span class="badge badge-success">Small Event</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="badge badge-warning">Medium Event</span>
|
||||||
|
{% endif %}
|
||||||
<dl class="row">
|
<dl class="row">
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card card-default mb-3">
|
|
||||||
<div class="card-header">Sound</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<dl class="row">
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card card-default mb-3">
|
|
||||||
<div class="card-header">Site Details</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<dl class="row">
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card card-default mb-3">
|
|
||||||
<div class="card-header">Structures</div>
|
|
||||||
<div class="card-body">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 text-right">
|
<div class="col-12 text-right">
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
{% load widget_tweaks %}
|
{% load widget_tweaks %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
{% load help_text from filters %}
|
{% load help_text from filters %}
|
||||||
|
{% load get_json_element from filters %}
|
||||||
|
{% load get_item from filters %}
|
||||||
|
{% load profile_by_index from filters %}
|
||||||
|
|
||||||
{% block title %}{% if edit %}Edit{% else %}Create{% endif %} Event Checklist for Event N{{ event.pk|stringformat:"05d" }}{% endblock %}
|
{% block title %}{% if edit %}Edit{% else %}Create{% endif %} Event Checklist for Event N{{ event.pk|stringformat:"05d" }}{% endblock %}
|
||||||
|
|
||||||
@@ -53,7 +56,18 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
$("form").submit(function( event ) {
|
$("form").submit(function( event ) {
|
||||||
$({{form.vehicles.id_for_label}}).val(JSON.stringify($('*[data-serialize]').serializeArray()));
|
// Mmmm Javascript data mangling...
|
||||||
|
var raw = $('*[data-serialize]').serializeArray();
|
||||||
|
var post = raw.reduce(function (result, current) {
|
||||||
|
var index = current.name.split('_')[1];
|
||||||
|
var name = current.name.split('_')[0];
|
||||||
|
result[index] = result[index] || {};
|
||||||
|
var nested = result[index] || {};
|
||||||
|
nested[name] = current.value;
|
||||||
|
result[index] = nested;
|
||||||
|
return result;
|
||||||
|
}, {});
|
||||||
|
$({{form.vehicles.id_for_label}}).val(JSON.stringify(post));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -97,7 +111,7 @@
|
|||||||
</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 }}"
|
<input name="{{ form.vehicles.name }}" id="{{ form.vehicles.id_for_label }}"
|
||||||
value="{{ form.vehicles.value }}"/>
|
value="{{ form.vehicles.value }}" style="display: none"/>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -107,10 +121,13 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for i in '012'|make_list %}
|
{% for i in '012'|make_list %}
|
||||||
<tr id="vehicles">
|
<tr id="vehicles_{{i}}">
|
||||||
<td><input name="vehicle_{{i}}" type="text" class="form-control" data-serialize="true"/></td>
|
<td><input name="vehicle_{{i}}" type="text" class="form-control" data-serialize="true" value="{{ form.vehicles.value|get_json_element:i|get_item:'vehicle' }}"/></td>
|
||||||
<th scope="row">
|
<th scope="row">
|
||||||
<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">
|
<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 form.vehicles.value|get_json_element:i|get_item:'driver' is not 0 %}
|
||||||
|
<option value="{{ form.vehicles.value|get_json_element:i|get_item:'driver' }}" selected="selected">{{form.vehicles.value|get_json_element:i|get_item:'driver'|profile_by_index}}</option>
|
||||||
|
{% endif %}
|
||||||
</select>
|
</select>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ from django.utils.text import normalize_newlines
|
|||||||
from django.template.defaultfilters import stringfilter
|
from django.template.defaultfilters import stringfilter
|
||||||
from django.utils.safestring import SafeData, mark_safe
|
from django.utils.safestring import SafeData, mark_safe
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
|
from RIGS import models
|
||||||
|
import json
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
@@ -126,3 +128,19 @@ def verbose_name(obj, field):
|
|||||||
@register.filter
|
@register.filter
|
||||||
def get_list(dictionary, key):
|
def get_list(dictionary, key):
|
||||||
return dictionary.getlist(key)
|
return dictionary.getlist(key)
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def profile_by_index(value):
|
||||||
|
if(value):
|
||||||
|
return models.Profile.objects.get(pk=int(value))
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def get_json_element(value, element):
|
||||||
|
return json.loads(value)[element]
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def get_item(dictionary, key):
|
||||||
|
return dictionary.get(key)
|
||||||
|
|||||||
Reference in New Issue
Block a user