From f956eff03fceb5e2a192f41e30d8d73c94f16e16 Mon Sep 17 00:00:00 2001
From: Tobias Juelg <tobias@juelg.net>
Date: Sun, 15 Nov 2020 22:18:55 +0100
Subject: [PATCH] small fixes in session settings, added datetime picker in
 session settings, small ui fix in sessions view

---
 management/forms.py                                 | 10 ++++++++--
 management/templates/management/session.html        |  3 ++-
 .../templates/management/session_settings.html      | 13 ++++++++++---
 management/views.py                                 |  2 ++
 4 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/management/forms.py b/management/forms.py
index 361fc24..2991618 100644
--- a/management/forms.py
+++ b/management/forms.py
@@ -153,9 +153,14 @@ class SessionSettingsForm(AddSessionForm):
             # will be set by html
             'invite_text': ''
         }
+        widgets = {
+            'start_date': forms.TextInput(attrs={'placeholder': 'e.g. 2020-05-12 13:00:00', 'type': 'datetime'})
+        }
 
     def clean_add_election_manager(self):
         value = self.data['add_election_manager']
+        if not value:
+            return value
         if not ElectionManager.objects.filter(username=value).exists():
             raise forms.ValidationError(f'Cannot find election manager with username {value}')
 
@@ -164,8 +169,9 @@ class SessionSettingsForm(AddSessionForm):
     def _save_m2m(self):
         super()._save_m2m()
 
-        self.cleaned_data['add_election_manager'].sessions.add(self.instance)
-        self.cleaned_data['add_election_manager'].save()
+        if self.cleaned_data['add_election_manager']:
+            self.cleaned_data['add_election_manager'].sessions.add(self.instance)
+            self.cleaned_data['add_election_manager'].save()
 
     def save(self, commit=True):
         self.instance = super().save(commit=False)
diff --git a/management/templates/management/session.html b/management/templates/management/session.html
index 418c73a..96daa9a 100644
--- a/management/templates/management/session.html
+++ b/management/templates/management/session.html
@@ -30,7 +30,8 @@
             <small>Meeting on <a href="{{ session.meeting_link }}">{{ session.meeting_link }}</a></small>
           {% endif %}
           {% if session.start_date %}
-            <small>- {{ session.start_date }}</small>
+            <br/>
+            <small>Starts on {{ session.start_date }}</small>
           {% endif %}
         </div>
         <div class="card-body">
diff --git a/management/templates/management/session_settings.html b/management/templates/management/session_settings.html
index 35301ef..95affad 100644
--- a/management/templates/management/session_settings.html
+++ b/management/templates/management/session_settings.html
@@ -2,6 +2,10 @@
 {% load static %}
 {% load crispy_forms_filters %}
 
+{% block head %}
+  <link rel="stylesheet" href="{% static "management/css/DateTimePicker.css" %}"/>
+{% endblock %}
+
 {% block content %}
   <div class="row justify-content-center">
     <div class="col-12">
@@ -86,14 +90,17 @@
             </div>
 
             <br>
-            <button type="submit" id="id_btn_start" class="btn btn-success">Save</button>
+            <button type="submit" id="id_btn_start" class="btn btn-success">Update</button>
+            <div id="dtBox"></div>
           </form>
         </div>
       </div>
     </div>
   </div>
-  <script src="{% static "js/jquery-3.5.1.slim.min.js" %}"
-          integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"></script>
+  <script src="{% static "js/jquery-3.5.1.min.js" %}"
+          integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="></script>
   <script src="{% static "bootstrap-4.5.3-dist/js/bootstrap.min.js" %}"
           integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"></script>
+  <script src="{% static "management/js/DateTimePicker.js" %}"></script>
+  <script src="{% static "management/js/datetime.js" %}"></script>
 {% endblock %}
diff --git a/management/views.py b/management/views.py
index 35c0d2f..123d541 100644
--- a/management/views.py
+++ b/management/views.py
@@ -115,6 +115,8 @@ def session_settings(request, pk=None):
                 )
             else:
                 form.save()
+                messages.add_message(request, messages.INFO, 'Session updated successfully!')
+                return redirect('management:session', session.id)
 
     context = {
         'session': session,
-- 
GitLab