From 02b4d0016cfb169a4a420e3f44bf2b4cebd1576f Mon Sep 17 00:00:00 2001
From: Jacek Lebioda <jacek.lebioda.001@student.uni.lu>
Date: Wed, 1 Feb 2017 11:47:41 +0100
Subject: [PATCH] 'Mark as' buttons in subjects edit, some improvements

---
 smash/web/models.py                    | 27 ++++++++++++++++++--------
 smash/web/templates/_base.html         |  9 ++++++---
 smash/web/templates/subjects/edit.html | 10 +++++++++-
 smash/web/urls.py                      |  1 +
 smash/web/views.py                     | 11 ++++++++++-
 5 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/smash/web/models.py b/smash/web/models.py
index 0b93aea2..117748fc 100644
--- a/smash/web/models.py
+++ b/smash/web/models.py
@@ -30,6 +30,25 @@ class Subject(models.Model):
         ('M','Male'),
         ('F','Female'),
     )
+
+    STATUS_CHOICES = (
+        ('NCO', 'Not contacted'),
+        ('TST', 'Test group'),
+        ('LEA', 'Level A'),
+        ('LEB', 'Level B'),
+        ('OPT', 'Opted out'),
+        ('REJ', 'Rejected'),
+        ('DEA', 'Dead')
+    )
+
+    def mark_as_dead(self):
+        self.subjectStatus = 'DEA'
+        self.save()
+
+    def mark_as_rejected(self):
+        self.subjectStatus = 'REJ'
+        self.save()
+
     sex = models.CharField(max_length=1,
         choices=SEX_CHOICES,
         verbose_name='Sex'
@@ -76,14 +95,6 @@ class Subject(models.Model):
     mpowerId = models.CharField(max_length=20,
         verbose_name='MPower ID'
     )
-    STATUS_CHOICES = (
-        ('NCO', 'Not contacted'),
-        ('TST', 'Test group'),
-        ('LEA', 'Level A'),
-        ('LEB', 'Level B'),
-        ('OPT', 'Opted out'),
-        ('DEA', 'Dead')
-    )
     subjectStatus = models.CharField(max_length=3, choices=STATUS_CHOICES,
         verbose_name='Status',
         default='NCO'
diff --git a/smash/web/templates/_base.html b/smash/web/templates/_base.html
index abfb6b4d..cbb02ca6 100644
--- a/smash/web/templates/_base.html
+++ b/smash/web/templates/_base.html
@@ -88,7 +88,8 @@ desired effect
             </a>
             <ul class="dropdown-menu">
               <li class="header">
-				  You have 0 letters to send
+				  You have 0 letters to send<hr />
+          (Not implemented yet)
 			  </li>
 			  <li>
 			  </li>
@@ -133,6 +134,8 @@ desired effect
             <ul class="dropdown-menu">
               <li class="header">
 				  You have 0 notifications
+          <hr />
+          (Not implemented yet)
 			  </li>
 			  {% comment "TODO: Implement notifications" %}
               <li>
@@ -191,9 +194,9 @@ desired effect
               </li>
               <!-- Menu Footer-->
               <li class="user-footer">
-                <div class="pull-left">
+                <!--<div class="pull-left">
                   <a href="#" class="btn btn-default btn-flat"><i class="fa fa-user"></i> Profile</a>
-                </div>
+                </div>-->
                 <div class="pull-right">
                   <a href="{% url 'web.views.logout' %}" class="btn btn-default btn-flat"><i class="fa fa-sign-out"></i> Sign out</a>
                 </div>
diff --git a/smash/web/templates/subjects/edit.html b/smash/web/templates/subjects/edit.html
index 973d1af1..eb705a01 100644
--- a/smash/web/templates/subjects/edit.html
+++ b/smash/web/templates/subjects/edit.html
@@ -33,7 +33,8 @@
 	<form method="post" action="" class="form-horizontal">
 		{% csrf_token %}
 
-		<div class="box-body">
+    <div class="box-body">
+      <div class="col-md-12">
 			{% 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">
@@ -51,6 +52,13 @@
           {% endif %}
 				</div>
 			{% endfor %}
+
+        <div class="col-md-6">
+          <a href="{% url 'web.views.subject_mark' id 0 %}" class="btn btn-warning btn-block">Mark as rejected</a>
+          <a href="{% url 'web.views.subject_mark' id 1 %}" class="btn btn-danger btn-block">Mark as dead</a><br />
+        </div>
+      </div>
+
 		</div><!-- /.box-body -->
 
 		<div class="box-footer">
diff --git a/smash/web/urls.py b/smash/web/urls.py
index a46b4add..262a285c 100644
--- a/smash/web/urls.py
+++ b/smash/web/urls.py
@@ -27,6 +27,7 @@ urlpatterns = [
     url(r'subjects/details/(?P<id>\d+)$', views.subject_details, name='web.views.subject_details'),
     url(r'subjects/edit/(?P<id>\d+)$', views.subject_edit, name='web.views.subject_edit'),
     url(r'subjects/delete/(?P<id>\d+)$', views.subject_delete, name='web.views.subject_delete'),
+    url(r'subjects/mark/(?P<id>\d+)/(?P<as_what>\d+)$', views.subject_mark, name='web.views.subject_mark'),
 
     url(r'doctors$', views.doctors, name='web.views.doctors'),
     url(r'doctors/add$', views.doctor_add, name='web.views.doctor_add'),
diff --git a/smash/web/views.py b/smash/web/views.py
index 7d36df20..81ed49c8 100644
--- a/smash/web/views.py
+++ b/smash/web/views.py
@@ -97,7 +97,7 @@ def subject_edit(request, id):
 			return redirect(subjects)
 	else:
 		form = SubjectEditForm(instance=Subject.objects.get(id=id))
-	return wrap_response(request, 'subjects/edit.html', {'form': form})
+	return wrap_response(request, 'subjects/edit.html', {'form': form, 'id':id})
 
 
 def subject_delete(request, id):
@@ -109,6 +109,15 @@ def subject_delete(request, id):
     return wrap_response(request, 'subjects/delete.html', {'form': form})
 
 
+def subject_mark(request, id, as_what):
+	who = Subject.objects.get(id=id)
+	if as_what == '1':
+		who.mark_as_dead()
+	elif as_what == '0':
+		who.mark_as_rejected()
+	return redirect(subject_edit, id=id)
+
+
 def doctors(request):
 	doctors_list = Worker.objects.order_by('-lastName')
 	context = {
-- 
GitLab