.
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
|
||||
import django_filters
|
||||
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
class UserListFilter(django_filters.FilterSet):
|
||||
|
||||
userprofile__grade = django_filters.CharFilter(label="Grade")
|
||||
|
||||
class Meta:
|
||||
model= User
|
||||
fields = {
|
||||
"username": ["contains"], "email": ["contains"], "userprofile__grade": ["exact"]
|
||||
}
|
||||
|
||||
#def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
|
||||
# super().__init__(data, queryset, request=request, prefix=prefix)
|
||||
# self.filters["userprofile__grade"].label == "Grade"
|
||||
@@ -53,6 +53,7 @@ urlpatterns = [
|
||||
path("sbas/", include("sbas.urls"), name="sbas"),
|
||||
path("generic/", include("generic.urls"), name="generic"),
|
||||
path("atlas/", include("atlas.urls"), name="atlas"),
|
||||
path("accounts/bulk_create/", views.accounts_bulk_create, name="accounts_bulk_create"),
|
||||
path("accounts/update/<str:slug>/", views.UpdateUserView.as_view(), name="account_update"),
|
||||
path("accounts/update_profile/<str:slug>/", views.UpdateUserProfileView.as_view(), name="account_profile_update"),
|
||||
path("accounts/", views.UserListView.as_view(), name="accounts_list"),
|
||||
|
||||
+98
-2
@@ -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", {})
|
||||
|
||||
Reference in New Issue
Block a user