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: