From 0dd585d6e06f087220bb8c8fadb10d99a5075e07 Mon Sep 17 00:00:00 2001 From: Ross Date: Tue, 14 Dec 2021 18:05:34 +0000 Subject: [PATCH] . --- .../migrations/0019_cidusergroup_archive.py | 18 ++++++++++++++ generic/models.py | 1 + generic/tables.py | 2 ++ generic/templates/generic/cid_view.html | 16 +++++++++++++ generic/views.py | 24 +++++++++++++------ 5 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 generic/migrations/0019_cidusergroup_archive.py diff --git a/generic/migrations/0019_cidusergroup_archive.py b/generic/migrations/0019_cidusergroup_archive.py new file mode 100644 index 00000000..24c42060 --- /dev/null +++ b/generic/migrations/0019_cidusergroup_archive.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.8 on 2021-12-14 18:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('generic', '0018_auto_20211214_1745'), + ] + + operations = [ + migrations.AddField( + model_name='cidusergroup', + name='archive', + field=models.BooleanField(default=False), + ), + ] diff --git a/generic/models.py b/generic/models.py index 69137f3c..e775e657 100644 --- a/generic/models.py +++ b/generic/models.py @@ -230,6 +230,7 @@ class CidUserExam(models.Model): class CidUserGroup(models.Model): name = models.CharField(blank=True, max_length=50) + archive = models.BooleanField(default=False) def __str__(self) -> str: return str(self.name) diff --git a/generic/tables.py b/generic/tables.py index 8e42106d..90bf23be 100644 --- a/generic/tables.py +++ b/generic/tables.py @@ -46,5 +46,7 @@ class CidUserTable(tables.Table): "cid", "passcode", "active", + "group" + "internal" ) # sequence = ("view") diff --git a/generic/templates/generic/cid_view.html b/generic/templates/generic/cid_view.html index 8da87b44..1e18c7fc 100644 --- a/generic/templates/generic/cid_view.html +++ b/generic/templates/generic/cid_view.html @@ -74,6 +74,16 @@ + +
+ Groups
+ +
@@ -121,6 +131,7 @@ sba_exams: JSON.stringify($("#sbas-exams").val()), longs_exams: JSON.stringify($("#longs-exams").val()), anatomy_exams: JSON.stringify($("#anatomy-exams").val()), + cid_groups: JSON.stringify($("#cid-groups").val()), delete: false, number_to_create: 0, activate: false, @@ -132,6 +143,11 @@ } $(document).ready(function () { + $("#add-group").click((evt) => { + data = getGenericData(); + data["add_group"] = true; + postAjax(data); + }); $("#add-exams-selected-cids").click((evt) => { data = getGenericData(); data["add_exams"] = true; diff --git a/generic/views.py b/generic/views.py index b7d1222f..33056e2e 100644 --- a/generic/views.py +++ b/generic/views.py @@ -34,7 +34,7 @@ from .forms import ( ExaminationForm, ) -from .models import CidUser, Examination, QuestionNote +from .models import CidUser, CidUserGroup, Examination, QuestionNote from rapids.models import Rapid as RapidQuestion from rapids.models import Exam as RapidExam @@ -432,11 +432,7 @@ class ExamViews(View, LoginRequiredMixin): return render( request, "{}/exam_cids.html".format(self.app_name), - { - "exam": exam, - "cid_users": cid_users, - "cid_user_count": cid_user_count - }, + {"exam": exam, "cid_users": cid_users, "cid_user_count": cid_user_count}, ) # @method_decorator(login_required) @@ -980,11 +976,16 @@ class CidUserView(LoginRequiredMixin, SingleTableMixin, FilterView): (i.name, i.pk) for i in AnatomyExam.objects.filter(archive=False) ] + cid_user_groups = [ + (i.name, i.pk) for i in CidUserGroup.objects.filter(archive=False) + ] + context["physics_exams"] = physics_exams context["rapid_exams"] = rapid_exams context["sba_exams"] = sba_exams context["longs_exams"] = longs_exams context["anatomy_exams"] = anatomy_exams + context["cid_user_groups"] = cid_user_groups return context @@ -997,17 +998,27 @@ def manage_cid_users(request): sba_exams = json.loads(request.POST.get("sba_exams")) longs_exams = json.loads(request.POST.get("longs_exams")) anatomy_exams = json.loads(request.POST.get("anatomy_exams")) + cid_groups = json.loads(request.POST.get("cid_groups")) selected_cids = json.loads(request.POST.get("selected_cids")) number_to_create = int(request.POST.get("number_to_create")) + add_group = request.POST.get("add_group") delete = request.POST.get("delete") activate = request.POST.get("activate") deactivate = request.POST.get("deactivate") add_exams = request.POST.get("add_exams") clear_exams = request.POST.get("clear_exams") + if add_group == "true": + cids = CidUser.objects.filter(pk__in=selected_cids) + for c in cids: + c.group_id = cid_groups[0] + c.save() + return JsonResponse({"status": "success"}) + + if delete == "true": cids = CidUser.objects.filter(pk__in=selected_cids).delete() return JsonResponse({"status": "success"}) @@ -1037,7 +1048,6 @@ def manage_cid_users(request): return JsonResponse({"status": "success"}) if add_exams == "true": - print("ADD EXAMS", selected_cids) cids = CidUser.objects.filter(pk__in=selected_cids) for c in cids: if physics_exams: