diff --git a/generic/migrations/0017_alter_ciduser_cid.py b/generic/migrations/0017_alter_ciduser_cid.py
new file mode 100644
index 00000000..24066529
--- /dev/null
+++ b/generic/migrations/0017_alter_ciduser_cid.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.8 on 2021-12-11 22:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('generic', '0016_ciduser_active'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='ciduser',
+ name='cid',
+ field=models.IntegerField(blank=True, null=True, unique=True),
+ ),
+ ]
diff --git a/generic/models.py b/generic/models.py
index ba6dad4e..7adf2cbb 100644
--- a/generic/models.py
+++ b/generic/models.py
@@ -188,7 +188,7 @@ class QuestionNote(models.Model):
class CidUser(models.Model):
- cid = models.IntegerField(blank=True, null=True)
+ cid = models.IntegerField(blank=True, null=True, unique=True)
passcode = models.CharField(blank=True, max_length=50)
active = models.BooleanField(default=True)
diff --git a/generic/templates/generic/cid_view.html b/generic/templates/generic/cid_view.html
new file mode 100644
index 00000000..4c70e447
--- /dev/null
+++ b/generic/templates/generic/cid_view.html
@@ -0,0 +1,56 @@
+{% extends 'base.html' %}
+
+{% load render_table from django_tables2 %}
+{% block css %}
+{% endblock %}
+
+{% block content %}
+
+
+
Filter CID Users
+
+
+
+ {% render_table table %}
+
+
+
+
+{% endblock %}
+
+{% block js %}
+
+{% endblock %}
diff --git a/generic/templates/generic/question_view.html b/generic/templates/generic/question_view.html
deleted file mode 100644
index 78c5773f..00000000
--- a/generic/templates/generic/question_view.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends 'base.html' %}
-
-{% load render_table from django_tables2 %}
-{% block css %}
-{% endblock %}
-
-{% block content %}
-
-
-
Filter CID Users
-
-
-{% render_table table %}
-
-{% endblock %}
-
-{% block js %}
-{% endblock %}
\ No newline at end of file
diff --git a/generic/urls.py b/generic/urls.py
index c9749411..1c35ebb8 100755
--- a/generic/urls.py
+++ b/generic/urls.py
@@ -27,4 +27,5 @@ urlpatterns = [
name="examination-autocomplete",
),
path("cids/manage/", views.CidUserView.as_view(), name="manage_cids"),
+ path("cids/create", views.create_cid_users, name="create_cid_users"),
]
diff --git a/generic/views.py b/generic/views.py
index e184a21b..44915d61 100644
--- a/generic/views.py
+++ b/generic/views.py
@@ -1,6 +1,7 @@
from dal import autocomplete
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
+from django.db.models.expressions import Random
from django.forms.models import model_to_dict
from django.shortcuts import render, get_object_or_404, redirect
@@ -51,6 +52,7 @@ from django.conf import settings
from datetime import datetime
import os
+import string
#from rad.views import get_question_and_content_type
@@ -841,6 +843,18 @@ class ExaminationAutocomplete(autocomplete.Select2QuerySetView):
class CidUserView(LoginRequiredMixin, SingleTableMixin, FilterView):
model = CidUser
table_class = CidUserTable
- template_name = "generic/question_view.html"
+ template_name = "generic/cid_view.html"
- filterset_class = CidUserFilter
\ No newline at end of file
+ filterset_class = CidUserFilter
+
+def create_cid_users(request):
+ if request.is_ajax() and request.method == "POST":
+ number = request.POST.get("number")
+
+ new_cid = max(CidUser.objects.all().order_by("-cid")[0].cid+1, 50000)
+
+ for n in range(number):
+ passcode = Random.choice(string.aschii_uppercase)
+ c = CidUser(cid=new_cid, passcode=passcode)
+ c.save()
+ new_cid = new_cid + 1
\ No newline at end of file