aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorAndrea Lepori <alepori@student.ethz.ch>2020-06-20 23:32:55 +0200
committerAndrea Lepori <alepori@student.ethz.ch>2020-06-20 23:32:55 +0200
commit26fb6c43a27c014383127d0e4b3fb29f8b923690 (patch)
tree05fd542c342cf12cac72b49e5b4b44db7411d91a /server
parentDocument custom field (diff)
downloadscout-subs-26fb6c43a27c014383127d0e4b3fb29f8b923690.tar.gz
scout-subs-26fb6c43a27c014383127d0e4b3fb29f8b923690.zip
Doc, doctypes, users all done
Diffstat (limited to 'server')
-rw-r--r--server/templates/server/doc_create.html (renamed from server/templates/server/doc_edit.html)19
-rw-r--r--server/templates/server/doc_list.html72
-rw-r--r--server/templates/server/doc_type.html59
-rw-r--r--server/templates/server/index.html17
-rw-r--r--server/urls.py2
-rw-r--r--server/views.py58
6 files changed, 164 insertions, 63 deletions
diff --git a/server/templates/server/doc_edit.html b/server/templates/server/doc_create.html
index 8b01c35..6454bee 100644
--- a/server/templates/server/doc_edit.html
+++ b/server/templates/server/doc_create.html
@@ -1,12 +1,12 @@
{% extends 'registration/base.html' %}
-{% block title %}Admin - Modifica Tipo{% endblock %}
+{% block title %}Admin - Crea Tipo{% endblock %}
{% block nav %}
<a style="margin-left: 10px;" href="{% url 'index' %}" class="breadcrumb">Home</a>
<a href="{% url 'server'%}" class="breadcrumb hide-on-med-and-down">Admin</a>
<a href="{% url 'doctype' %}" class="breadcrumb hide-on-med-and-down">Tipo Doc</a>
- <a href="#!" class="breadcrumb hide-on-med-and-down">Modifica Doc</a>
+ <a href="#!" class="breadcrumb hide-on-med-and-down">Crea Tipo</a>
{% endblock %}
{% block content %}
@@ -14,11 +14,11 @@
<div class="col l8 offset-l2 s12">
<div class="card-panel">
<div class="row">
- <form id="form" action="{% url 'docedit'%}" method="post" class="col s12">
+ <form id="form" action="{% url 'doccreate'%}" method="post" class="col s12">
{% csrf_token %}
<div class="row">
<div class="input-field col s12">
- <input name="name" value="{{name}}" id="name" type="text" class="validate">
+ <input name="name" value="{{name}}" id="name" type="text">
<label for="name">Nome</label>
</div>
</div>
@@ -39,6 +39,17 @@
Privato
</label>
</div>
+ <div class="switch col s3">
+ <label>
+ Richiede firma
+ </label>
+ <label>
+ No
+ <input name="sign" type="checkbox" {{sign_check}}>
+ <span class="lever"></span>
+ Si
+ </label>
+ </div>
</div>
<div class="row">
<div class="input-field col s2">
diff --git a/server/templates/server/doc_list.html b/server/templates/server/doc_list.html
index c5978b1..0b3d800 100644
--- a/server/templates/server/doc_list.html
+++ b/server/templates/server/doc_list.html
@@ -51,36 +51,68 @@
<i class="material-icons">archive</i>
{% endif %}
{{doc.0.document_type.name}}
- <span class="badge" data-badge-caption="">{{doc.0.user.username}}</span></div>
+ <span class="badge" data-badge-caption="">{{doc.0.user.username}}</span>
</div>
<div class="collapsible-body"><span>
{{doc.0.code}} <br>
{{doc.0.compilation_date}}<br>
+ <ul class="collapsible">
{% if doc.0.document_type.personal_data %}
- <i class="material-icons">person</i>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">person</i>Dati personali
+ </div>
+ <div class="collapsible-body"><span>
+ <table class="striped">
+ <tbody>
+ {% for field in doc.2 %}
+ <tr>
+ <td>{{field}}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </span></div>
+ </li>
{% endif %}
{% if doc.0.document_type.medical_data %}
- <i class="material-icons">healing</i>
- {% endif %}
- {% if doc.0.document_type.custom_message %}
- <i class="material-icons">message</i>
- {% endif %}
- {% if doc.0.document_type.custom_data %}
- <i class="material-icons">add_circle_outline</i>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">healing</i>Dati medici
+ </div>
+ <div class="collapsible-body"><span>
+ <table class="striped">
+ <tbody>
+ {% for field in doc.3 %}
+ <tr>
+ <td>{{field}}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </span></div>
+ </li>
{% endif %}
{% if doc.0.document_type.custom_data %}
- <br>
- <table class="striped">
- <tbody>
- {% for key in doc.1 %}
- <tr>
- <td>{{key.key}}</td>
- <td>{{key.value}}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">add_circle_outline</i>Dati aggiuntivi
+ </div>
+ <div class="collapsible-body"><span>
+ <table class="striped">
+ <tbody>
+ {% for key in doc.1 %}
+ <tr>
+ <td>{{key.key}}</td>
+ <td>{{key.value}}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </span></div>
+ </li>
{% endif %}
+ </ul>
</span></div>
</li>
{% endfor %}
diff --git a/server/templates/server/doc_type.html b/server/templates/server/doc_type.html
index fecfc9d..15ac30e 100644
--- a/server/templates/server/doc_type.html
+++ b/server/templates/server/doc_type.html
@@ -48,41 +48,64 @@
{% if not doctype.0.group_private %}
<i class="material-icons">public</i>
{% endif %}
+ {% if doctype.0.auto_sign %}
+ <i class="material-icons">assignment_turned_in</i>
+ {% endif %}
{{doctype.0.name}}
- <span class="new badge red lighten-1" data-badge-caption="">{{doctype.2}}</span></div>
+ <span class="new badge red lighten-1" data-badge-caption="">{{doctype.2}}</span>
</div>
<div class="collapsible-body"><span>
+ <ul class="collapsible">
{% if doctype.0.personal_data %}
- <i class="material-icons">person</i>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">person</i>Dati personali
+ </div>
+ </li>
{% endif %}
{% if doctype.0.medical_data %}
- <i class="material-icons">healing</i>
- {% endif %}
- {% if doctype.0.custom_data %}
- <i class="material-icons">add_circle_outline</i>
- {% endif %}
- {% if doctype.0.custom_message %}
- <i class="material-icons">message</i>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">healing</i>Dati medici
+ </div>
+ </li>
{% endif %}
{% if doctype.0.custom_data %}
- <br>
- <ul class="collection">
- {% for key in doctype.1 %}
- <li class="collection-item">{{key.key}}</li>
- {% endfor %}
- </ul>
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">add_circle_outline</i>Dati aggiuntivi
+ </div>
+ <div class="collapsible-body"><span>
+ <table class="striped">
+ <tbody>
+ {% for key in doctype.1 %}
+ <tr>
+ <td>{{key.key}}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </span></div>
+ </li>
{% endif %}
{% if doctype.0.custom_message %}
- <br>
- {{doctype.0.custom_message_text}}
+ <li>
+ <div class="collapsible-header">
+ <i class="material-icons">message</i>Messaggio aggiuntivo
+ </div>
+ <div class="collapsible-body"><span>
+ {{doctype.0.custom_message_text}}
+ </span></div>
+ </li>
{% endif %}
+ </ul>
</span></div>
</li>
{% endfor %}
</ul>
</form>
<div class="fixed-action-btn">
- <a class="btn-floating btn-large red lighten-1" href="{% url 'docedit'%}">
+ <a class="btn-floating btn-large red lighten-1" href="{% url 'doccreate'%}">
<i class="large material-icons">add</i>
</a>
</div>
diff --git a/server/templates/server/index.html b/server/templates/server/index.html
index d88454f..199feb5 100644
--- a/server/templates/server/index.html
+++ b/server/templates/server/index.html
@@ -40,8 +40,21 @@
<div class="col l6 s12">
<div class="card large">
<div class="card-content">
- <p>I am a very simple card. I am good at containing small bits of information.
- I am convenient because I require little markup to use effectively.</p>
+ <ul class="collapsible">
+ {% for doctype in docs %}
+ <li>
+ <div class="collapsible-header">
+ {% if not doctype.0.enabled %}
+ <i class="material-icons">visibility_off</i>
+ {% endif %}
+ {% if not doctype.0.group_private %}
+ <i class="material-icons">public</i>
+ {% endif %}
+ {{doctype.0.name}}
+ <span class="new badge red lighten-1" data-badge-caption="">{{doctype.1}}</span>
+ </div>
+ {% endfor %}
+ </ul>
</div>
<div class="card-action">
<a href="{% url 'doctype' %}">Lista tipo doc</a>
diff --git a/server/urls.py b/server/urls.py
index fb2c2f2..773d910 100644
--- a/server/urls.py
+++ b/server/urls.py
@@ -7,7 +7,7 @@ urlpatterns = [
path('uapprove', views.uapprove, name='uapprove'),
path('ulist', views.ulist, name='ulist'),
path('doctype', views.doctype, name='doctype'),
- path('docedit', views.docedit, name='docedit'),
+ path('doccreate', views.doccreate, name='doccreate'),
path('doclist', views.doclist, name='doclist'),
path('docapprove', views.docapprove, name='docapprove'),
]
diff --git a/server/views.py b/server/views.py
index b59dfb8..6c651f1 100644
--- a/server/views.py
+++ b/server/views.py
@@ -14,7 +14,7 @@ def index(request):
parent_group = request.user.groups.values_list('name', flat=True)[
0]
users = User.objects.filter(groups__name=parent_group)
- out = []
+ users_out = []
for user in users:
code = ""
if len(UserCode.objects.filter(user=user)) > 0:
@@ -26,9 +26,23 @@ def index(request):
status = "Attivo"
else:
status = "In attesa"
- out.append([user.username, user.first_name,
+ users_out.append([user.username, user.first_name,
user.last_name, code, status])
- context = {'users': out}
+
+ parent_group = request.user.groups.values_list('name', flat=True)[
+ 0]
+ group = Group.objects.get(name=parent_group)
+ public_types = DocumentType.objects.filter(
+ Q(group_private=False) | Q(group=group))
+ docs = []
+ for doc in public_types:
+ ref_docs = Document.objects.filter(document_type=doc)
+ docs.append([doc, len(ref_docs)])
+
+ context = {
+ 'docs': docs,
+ 'users': users_out,
+ }
return render(request, 'server/index.html', context)
else:
return render(request, 'client/index.html', context)
@@ -44,7 +58,6 @@ def uapprove(request):
group = Group.objects.get(name=parent_group)
permission = Permission.objects.get(codename='approved')
data = request.POST["codes"]
- data = "".join(data.split())
data.replace("\r", "")
data = data.split("\n")
for i in range(len(data)):
@@ -88,7 +101,6 @@ def docapprove(request):
data = []
if request.method == "POST":
data = request.POST["codes"]
- data = "".join(data.split())
data.replace("\r", "")
data = data.split("\n")
for i in range(len(data)):
@@ -101,7 +113,7 @@ def docapprove(request):
else:
document = Document.objects.filter(code=data[i])[0]
if document.status == 'ok':
- data[i] = data[i] + " - Gia` approvato"
+ data[i] = data[i] + " - GiĆ  approvato"
else:
document.status = 'ok'
document.save()
@@ -221,7 +233,7 @@ def doctype(request):
return render(request, 'client/index.html', context)
-def docedit(request):
+def doccreate(request):
context = {}
if request.user.is_staff:
parent_group = request.user.groups.values_list('name', flat=True)[
@@ -234,15 +246,17 @@ def docedit(request):
custom_data = False
name = ""
- enabled_check = ""
+ enabled_check = 'checked="checked'
private_check = 'checked="checked"'
personal_check = 'checked="checked"'
+ sign_check = 'checked="checked'
medical_check = ""
custom_check = ""
custom_message_check = ""
context = {
"enabled_check": enabled_check,
"private_check": private_check,
+ "sign_check": sign_check,
"personal_check": personal_check,
"medical_check": medical_check,
"custom_check": custom_check,
@@ -250,6 +264,7 @@ def docedit(request):
}
if request.method == "POST":
enabled = "enabled" in request.POST.keys()
+ auto_sign = "sign" not in request.POST.keys()
group_private = "group_private" in request.POST.keys()
personal_data = "personal_data" in request.POST.keys()
medical_data = "medical_data" in request.POST.keys()
@@ -257,18 +272,19 @@ def docedit(request):
custom_message = "custom_message" in request.POST.keys()
custom_message_text = request.POST["custom_message_text"]
name = request.POST["name"]
- custom = request.POST["custom"]
- custom += " "
- custom = custom.split("\n")
doctype = DocumentType(
- custom_message=custom_message, custom_message_text=custom_message_text, name=request.POST["name"], enabled=enabled, group_private=group_private, group=group, personal_data=personal_data, medical_data=medical_data, custom_data=custom_data)
+ auto_sign=auto_sign, custom_message=custom_message, custom_message_text=custom_message_text, name=request.POST["name"], enabled=enabled, group_private=group_private, group=group, personal_data=personal_data, medical_data=medical_data, custom_data=custom_data)
doctype.save()
- for i in custom:
- key = Keys(key=i[:-1], container=doctype)
- key.save()
+ if custom_data:
+ custom = request.POST["custom"]
+ custom.replace("\r", "")
+ custom = custom.split("\n")
+ for i in custom:
+ key = Keys(key=i, container=doctype)
+ key.save()
return HttpResponseRedirect('doctype')
- return render(request, 'server/doc_edit.html', context)
+ return render(request, 'server/doc_create.html', context)
else:
return render(request, 'client/index.html', context)
@@ -305,8 +321,14 @@ def doclist(request):
documents = Document.objects.filter(group=group)
out = []
for i in documents:
- custom_keys = KeyVal.objects.filter(container=i)
- out.append([i, custom_keys])
+ personal = None
+ medical = None
+ if i.document_type.personal_data:
+ personal = i.personal_data.__dict__.values()
+ if i.document_type.medical_data:
+ medical = i.medical_data.__dict__.values()
+
+ out.append([i, KeyVal.objects.filter(container=i), personal, medical])
context = {"docs": out}
return render(request, 'server/doc_list.html', context)
else: