from django.shortcuts import render, get_object_or_404
|
from django.contrib.admin.views.decorators import staff_member_required
|
from django.utils.decorators import method_decorator
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.models import User
|
from django.views import generic
|
from django.urls import reverse
|
from django.http import HttpResponseRedirect
|
from .forms import StudentUploadForm
|
from django.contrib.auth.decorators import login_required
|
# Create your views here.
|
|
|
@method_decorator(staff_member_required, name="dispatch")
|
class StudentListView(LoginRequiredMixin, generic.ListView):
|
model = User
|
template_name = "organization/studentlist.html"
|
|
def get_queryset(self):
|
return User.objects.all() # Here add filtering
|
|
|
|
def handle_uploaded_file(f):
|
cont=""
|
for chunk in f.chunks():
|
cont=cont+bytes.decode(chunk, 'utf8')
|
|
for line in cont.split('\n'):
|
fields=line.strip().split(',')
|
#print(fields)
|
if len(fields)!=5:
|
continue
|
try:
|
u=User.objects.create_user(username=fields[2], first_name=fields[1], last_name=fields[0], email=fields[3], password=fields[4])
|
except:
|
continue
|
|
pass
|
|
|
# Upload form
|
#@login_required
|
@staff_member_required
|
def studentupload_view(request):
|
|
if request.method == "POST":
|
form = StudentUploadForm(request.POST, request.FILES)
|
if form.is_valid():
|
for f in request.FILES.getlist("file_field"):
|
handle_uploaded_file(f)
|
return HttpResponseRedirect(reverse("studentlist"))
|
else:
|
form = StudentUploadForm()
|
context = {"form": form}
|
return render(request, "organization/studentupload.html", context)
|
|
|
|
|
#Login Handler
|
@login_required
|
def loginlandingpage(request):
|
"""Simple redirector to figure out where the user goes next."""
|
if request.user.is_staff:
|
return HttpResponseRedirect(reverse('examlist'))
|
else:
|
return HttpResponseRedirect(reverse('studentpages'))
|