This commit is contained in:
Ross
2022-05-25 16:50:18 +01:00
parent 41a09ea30d
commit 5701c8d613
30 changed files with 402 additions and 226 deletions
+98 -2
View File
@@ -6,6 +6,8 @@ from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.csrf import csrf_exempt
from django import forms
from django.utils.html import format_html
# from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.models import User
@@ -35,6 +37,7 @@ from anatomy.models import CidUserAnswer as AnatomyCidUserAnswer
from anatomy.models import Exam as AnatomyExam
from anatomy.models import AnatomyQuestion
from anatomy.models import Answer as AnatomyAnswer
from rad.filters import UserListFilter
from rapids.models import CidUserAnswer as RapidsCidUserAnswer
from rapids.models import Exam as RapidsExam
@@ -54,7 +57,9 @@ from rapids.views import GenericExamViews as RapidsExamsViews
from longs.views import GenericExamViews as LongsExamViews
from generic.forms import QuestionNoteForm
from generic.models import CidUser, QuestionNote, UserProfile
from generic.models import CidUser, QuestionNote, UserGrades, UserProfile
from django_filters.views import FilterView
import json
@@ -440,10 +445,12 @@ def server_error(request):
return response
class UserListView(CidManagerRequiredMixin, ListView):
class UserListView(CidManagerRequiredMixin, FilterView):
model = User
template_name = "user_list_view.html"
filterset_class = UserListFilter
class UpdateUserView(CidManagerRequiredMixin, UpdateView):
model = User
@@ -500,3 +507,92 @@ class UpdateUserProfileView(CidManagerRequiredMixin, UpdateView):
#
# def get(self, request, *args, **kwargs):
# return self.post(request, *args, **kwargs)
@user_is_cid_user_manager
def accounts_bulk_create(request):
if request.method == "POST":
context = {}
users = json.loads(request.POST.get("usersjson"))
print(users)
created_users = []
existing_users = []
error_text = ""
try:
users = json.loads(request.POST.get("usersjson"))
print(users)
for user in users:
if not User.objects.filter(username=user["email"]).exists():
try:
print(user)
user_dict = {
"username": user["email"],
"first_name": user["first_name"],
"last_name": user["last_name"],
"email": user["email"],
}
new_user = User.objects.create_user(**user_dict)
except Exception as error:
error_text = (
error_text
+ f"<p>Error creating user: { user['email'] }<br/>{error}</p>"
)
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 "grade" in user:
grade = UserGrades.objects.get(name=user["grade"])
user_profile.grade = grade
user_profile.save()
created_users.append(user["email"])
except Exception as error:
error_text = (
error_text
+ f"<p>Error creating user profile: { user['email'] }<br/>{error}</p>"
)
else:
existing_users.append(user["email"])
except Exception as error:
error_text = error_text + f"<p>Error creating users.<br/>{error}</p>"
context["error"] = format_html(error_text)
context["created_users"] = created_users
if existing_users:
context["message"] = "The following users already exist: " + ", ".join(
existing_users
)
# if not self.check_user_edit_access(request.user):
# data = {"status": "error, insufficient permission"}
# return JsonResponse(data, status=400)
# exam = get_object_or_404(self.Exam, pk=pk)
# exam.publish_results = (
# True if request.POST.get("publish_results") == "true" else False
# )
# exam.save()
# data = {
# "status": "success",
# "publish_results": exam.publish_results,
# "name": exam.name,
# "id": exam.id,
# }
return render(request, "accounts_bulk_create.html", context)
else:
return render(request, "accounts_bulk_create.html", {})