Improvements to user management
This commit is contained in:
+87
-2
@@ -1,5 +1,6 @@
|
||||
from collections import defaultdict, Counter
|
||||
from pathlib import Path
|
||||
import secrets
|
||||
import statistics
|
||||
import threading
|
||||
from dal import autocomplete
|
||||
@@ -35,6 +36,8 @@ import urllib
|
||||
|
||||
from django.views import View
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.views.generic.list import ListView
|
||||
from django.views.generic.detail import DetailView
|
||||
from django_filters.views import FilterView
|
||||
from django_filters import FilterSet, OrderingFilter
|
||||
from django_tables2.views import SingleTableMixin
|
||||
@@ -49,10 +52,12 @@ from .forms import (
|
||||
CidUserForm,
|
||||
ExaminationForm,
|
||||
CidUserGroupForm,
|
||||
SupervisorForm,
|
||||
UserUserForm,
|
||||
UserUserGroupForm,
|
||||
)
|
||||
|
||||
from .models import CidUser, CidUserGroup, Examination, QuestionNote, UserUserGroup, get_next_cid
|
||||
from .models import CidUser, CidUserGroup, Examination, QuestionNote, Supervisor, UserGrades, UserProfile, UserUserGroup, get_next_cid
|
||||
|
||||
from rapids.models import Rapid as RapidQuestion
|
||||
from rapids.models import Exam as RapidExam
|
||||
@@ -2500,4 +2505,84 @@ class ExamDeleteBase(RevisionMixin, DeleteView):
|
||||
|
||||
|
||||
def exam_inactive(request, context):
|
||||
return render(request, "exam_inactive.html", context)
|
||||
return render(request, "exam_inactive.html", context)
|
||||
|
||||
#class UserUserCreate(CidManagerRequiredMixin, CreateView):
|
||||
# model = User
|
||||
# form_class = UserUserForm
|
||||
# template_name: str = "generic/user_creation_form.html"
|
||||
#
|
||||
# success_url = reverse_lazy("accounts_list")
|
||||
|
||||
def create_user(request, context=None):
|
||||
# if this is a POST request we need to process the form data
|
||||
if request.method == 'POST':
|
||||
# create a form instance and populate it with data from the request:
|
||||
form = UserUserForm(request.POST)
|
||||
# check whether it's valid:
|
||||
if form.is_valid():
|
||||
try:
|
||||
user_dict = {
|
||||
"username": request.POST["username"],
|
||||
"first_name": request.POST["first_name"],
|
||||
"last_name": request.POST["last_name"],
|
||||
"email": request.POST["username"],
|
||||
"password": secrets.token_hex(nbytes=16)
|
||||
}
|
||||
|
||||
|
||||
new_user = User.objects.create_user(**user_dict)
|
||||
except Exception as error:
|
||||
errors = f"Unable to create account: {error}"
|
||||
return render(request, 'generic/user_creation_form.html', {'form': form, "errors": errors})
|
||||
|
||||
try:
|
||||
|
||||
user_profile = UserProfile.objects.get(user=new_user)
|
||||
user_profile.peninsula_trainee = True
|
||||
#if "supervisor_email" in user:
|
||||
# user_profile.supervisor_email = user["supervisor_email"]
|
||||
#if "supervisor_name" in user:
|
||||
# user_profile.supervisor_name = user["supervisor_name"]
|
||||
|
||||
|
||||
if request.POST["grade"]:
|
||||
grade = UserGrades.objects.get(name=f"ST{ request.POST['grade'] }")
|
||||
user_profile.grade = grade
|
||||
|
||||
user_profile.save()
|
||||
|
||||
except Exception as error:
|
||||
errors = f"Unable to create account profile {error}"
|
||||
return render(request, 'generic/user_creation_form.html', {'form': form, "errors": errors})
|
||||
|
||||
return HttpResponseRedirect(reverse_lazy("accounts_list"))
|
||||
return reverse_lazy("accounts_list")
|
||||
|
||||
# if a GET (or any other method) we'll create a blank form
|
||||
else:
|
||||
form = UserUserForm()
|
||||
|
||||
return render(request, 'generic/user_creation_form.html', {'form': form})
|
||||
|
||||
class SupervisorDetail(CidManagerRequiredMixin, DetailView):
|
||||
model = Supervisor
|
||||
|
||||
|
||||
class SupervisorDelete(CidManagerRequiredMixin, DeleteView):
|
||||
model = Supervisor
|
||||
template_name: str = "confirm_delete.html"
|
||||
success_url = reverse_lazy("generic:supervisor")
|
||||
|
||||
class SupervisorUpdate(CidManagerRequiredMixin, UpdateView):
|
||||
model = Supervisor
|
||||
form_class = SupervisorForm
|
||||
#success_url = reverse_lazy("generic:supervisor_detail", kwargs={'pk': self.pk})
|
||||
|
||||
class SupervisorCreate(CidManagerRequiredMixin, CreateView):
|
||||
model = Supervisor
|
||||
form_class = SupervisorForm
|
||||
#success_url = reverse_lazy("generic:supervisor_detail")
|
||||
|
||||
class SupervisorList(CidManagerRequiredMixin, ListView):
|
||||
model = Supervisor
|
||||
Reference in New Issue
Block a user