From c8ee56f61bc94e2b8adb4105e5b2be138760c47d Mon Sep 17 00:00:00 2001
From: "piotr.atyjaszyk" <piotrmk1@gmail.com>
Date: Wed, 1 Feb 2017 17:15:23 +0100
Subject: [PATCH] Added appointment edition, avaible from visit details and
 personal lists

---
 smash/web/forms.py                            |  5 ++
 smash/web/templates/assignments/edit.html     | 90 +++++++++++++++++++
 .../web/templates/subjects/visitdetails.html  |  4 +-
 smash/web/templates/visits/details.html       |  4 +-
 smash/web/urls.py                             |  1 +
 smash/web/views.py                            | 10 +++
 6 files changed, 112 insertions(+), 2 deletions(-)
 create mode 100644 smash/web/templates/assignments/edit.html

diff --git a/smash/web/forms.py b/smash/web/forms.py
index 454cb6ac..ef870ce1 100644
--- a/smash/web/forms.py
+++ b/smash/web/forms.py
@@ -61,6 +61,11 @@ class AppointmentDetailForm(ModelForm):
         fields = '__all__'
 
 
+class AppointmentEditForm(ModelForm):
+    class Meta:
+        model = Appointment
+        fields = '__all__'
+
 class AppointmentAddForm(ModelForm):
     class Meta:
         model = Appointment
diff --git a/smash/web/templates/assignments/edit.html b/smash/web/templates/assignments/edit.html
new file mode 100644
index 00000000..3ba01a89
--- /dev/null
+++ b/smash/web/templates/assignments/edit.html
@@ -0,0 +1,90 @@
+{% extends "_base.html" %}
+{% load static %}
+{% load filters %}
+
+{% block styles %}
+{{ block.super }}
+	<!-- DataTables -->
+  <link rel="stylesheet" href="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.css' %}">
+{% endblock styles %}
+
+{% block page_title %}'assignments'{% endblock page_title %}
+{% block page_header %}Edit assignment{% endblock page_header %}
+{% block page_description %}{% endblock page_description %}
+
+{% block title %} - Edit assignment information{% endblock %}
+
+{% block breadcrumb %}
+{% include "assignments/breadcrumb.html" %}
+{% endblock breadcrumb %}
+
+{% block maincontent %}
+
+{% block content %}
+<div class="box box-info">
+	<div class="box-header with-border">
+		<a href="{% url 'web.views.assignments' %}" class="btn btn-block btn-default" onclick="history.back()">Go back (without changes)</a>
+	</div>
+
+	{% comment %} <div class="box-header with-border">
+		<h3 class="box-title">Details of appointment</h3>
+	</div>{% endcomment %}
+
+	<form method="post" action="" class="form-horizontal">
+		{% csrf_token %}
+
+		<div class="box-body">
+			{% for field in form %}
+				<div class="col-md-6 form-group  {% if field.errors %}has-error{% endif %}">
+					<label for="{# TODO #}" class="col-sm-4 control-label">
+						{{ field.label }}
+					</label>
+
+					<div class="col-sm-8">
+						{{ field|add_class:'form-control' }}
+					</div>
+
+          {% if field.errors %}
+            <span class="help-block">
+              {{ field.errors }}
+            </span>
+          {% endif %}
+				</div>
+			{% endfor %}
+		</div><!-- /.box-body -->
+
+		<div class="box-footer">
+			<div class="col-sm-6">
+				<button type="submit" class="btn btn-block btn-success">Save</button>
+			</div>
+			<div class="col-sm-6">
+				<a href="{% url 'web.views.assignments' %}" class="btn btn-block btn-default" onclick="history.back()">Cancel</a>
+			</div>
+		</div><!-- /.box-footer -->
+	</form>
+</div>
+{% endblock %}
+
+
+
+
+{% endblock maincontent %}
+
+{% block scripts %}
+	{{ block.super }}
+
+	<script src="{% static 'AdminLTE/plugins/datatables/jquery.dataTables.min.js' %}"></script>
+	<script src="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.min.js' %}"></script>
+	<script>
+		$(function () {
+			$('#table').DataTable({
+			  "paging": true,
+			  "lengthChange": false,
+			  "searching": true,
+			  "ordering": true,
+			  "info": true,
+			  "autoWidth": false
+			});
+		});
+	</script>
+{% endblock scripts %}
diff --git a/smash/web/templates/subjects/visitdetails.html b/smash/web/templates/subjects/visitdetails.html
index 982b4a8e..55812732 100644
--- a/smash/web/templates/subjects/visitdetails.html
+++ b/smash/web/templates/subjects/visitdetails.html
@@ -99,7 +99,9 @@
               {% else %} {{ app.flying_team }}
               {% endif %}
             </td>
-            <td> <a href="" type="button" class="btn btn-block btn-default">TODO</a> </td>
+            <td>
+              <a href="{% url 'web.views.assignment_edit' app.id %}" type="button" class="btn btn-block btn-default">Edit</a>
+            </td>
           </tr>
           {% endfor %}
 
diff --git a/smash/web/templates/visits/details.html b/smash/web/templates/visits/details.html
index 94bac5ca..6a2002d8 100644
--- a/smash/web/templates/visits/details.html
+++ b/smash/web/templates/visits/details.html
@@ -102,7 +102,9 @@
       {% else %} {{ app.flying_team }}
       {% endif %}
     </td>
-    <td> <a href="" type="button" class="btn btn-block btn-default">TODO</a> </td>
+    	<td>
+        <a href="{% url 'web.views.assignment_edit' app.id %}" type="button" class="btn btn-block btn-default">Edit</a>
+      </td>
   </tr>
   {% endfor %}
 
diff --git a/smash/web/urls.py b/smash/web/urls.py
index 5191920e..030dd7b6 100644
--- a/smash/web/urls.py
+++ b/smash/web/urls.py
@@ -20,6 +20,7 @@ urlpatterns = [
     url(r'assignments$', views.assignments, name='web.views.assignments'),
     url(r'assignments/details/(?P<id>\d+)$', views.assignment_details, name='web.views.assignment_details'),
     url(r'assignments/add/(?P<id>\d+)$', views.assignment_add, name='web.views.assignment_add'),
+    url(r'assignments/edit/(?P<id>\d+)$', views.assignment_edit, name='web.views.assignment_edit'),
 
     url(r'visits$', views.visits, name='web.views.visits'),
     url(r'visits/details/(?P<id>\d+)$', views.visit_details, name='web.views.visit_details'),
diff --git a/smash/web/views.py b/smash/web/views.py
index 9acb1d4b..a697fffb 100644
--- a/smash/web/views.py
+++ b/smash/web/views.py
@@ -294,3 +294,13 @@ def assignment_add(request, id):
 
 	vid = id
 	return wrap_response(request, 'assignments/add.html', {'form': form, 'visitID': vid})
+
+def assignment_edit(request, id):
+	if request.method == 'POST':
+		form = AppointmentEditForm(request.POST, request.FILES, instance=Appointment.objects.get(id=id))
+		if form.is_valid():
+			form.save()
+			return redirect(assignments)
+	else:
+		form = AppointmentEditForm(instance=Appointment.objects.get(id=id))
+	return wrap_response(request, 'assignments/edit.html', {'form': form})
-- 
GitLab