Version 1.0
This commit is contained in:
131
GestionaleITS/gestionale/views/views.py
Normal file
131
GestionaleITS/gestionale/views/views.py
Normal file
@@ -0,0 +1,131 @@
|
||||
|
||||
# Copyright (C) 2024 Nastro_
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import copy
|
||||
import csv
|
||||
from datetime import datetime
|
||||
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import CSVUpdateForm
|
||||
from ..models import Computer, Accessory, Student, Course, Record, Ticket
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test, login_required
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@login_required
|
||||
def index(request):
|
||||
if request.user.is_superuser or request.user.is_staff:
|
||||
computers_available_count = Computer.objects.filter(status="in_stock").count()
|
||||
accessories_available_count = Accessory.objects.filter(status="in_stock").count()
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/index.html",{
|
||||
"computers_available_count": computers_available_count,
|
||||
"accessories_available_count": accessories_available_count
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
else:
|
||||
return redirect("studentview")
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def import_students(request):
|
||||
if request.method == "POST":
|
||||
form = CSVUpdateForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
csv_file = request.FILES["file"]
|
||||
if not csv_file.name.endswith(".csv"):
|
||||
form = CSVUpdateForm()
|
||||
err = True
|
||||
return render(request, "gestionale/importstudents.html", {
|
||||
"err": err, "form": form
|
||||
})
|
||||
try:
|
||||
record = Record()
|
||||
record.date = datetime.now().date()
|
||||
record.action = "import"
|
||||
record.product = "students"
|
||||
record.product_detail = csv_file
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
csv_data = csv_file.read().decode("utf-8").splitlines()
|
||||
reader = csv.DictReader(csv_data)
|
||||
for row in reader:
|
||||
course = get_object_or_404(Course, course_code=row["Codice Corso"])
|
||||
birth_date = datetime.strptime(row["DataNascita"], "%d/%m/%Y")
|
||||
student = Student()
|
||||
student.id_student_course = row["IDAllievoCorso"]
|
||||
student.codice_fiscale = row["CodiceFiscale"]
|
||||
student.course_acronym = row["SiglaCorso"]
|
||||
student.last_name = row["Cognome"]
|
||||
student.first_name = row["Nome"]
|
||||
student.email_user = row["EmailUser"]
|
||||
student.phone_number = row["Tel"]
|
||||
student.municipality_residence = row["ComuneRes"]
|
||||
student.province_residence = row["ProvRes"]
|
||||
student.student_status = row["StatoAllievo"]
|
||||
student.birth_date = birth_date
|
||||
student.municipality_birth = row["ComuneNascita"]
|
||||
student.province_birth = row["ProvNascita"]
|
||||
student.resignation_date = None if row["DataDimissioni"]=="" else row["DataDimissioni"]
|
||||
student.gender = row["Genere"]
|
||||
student.nation_birth = row["NazioneNasc"]
|
||||
student.course_id = course
|
||||
student.save()
|
||||
except Exception as e:
|
||||
form = CSVUpdateForm()
|
||||
err = True
|
||||
return render(request, "gestionale/importstudents.html", {
|
||||
"err": err, "form": form, "e": e
|
||||
})
|
||||
return redirect('import_students')
|
||||
else:
|
||||
form = CSVUpdateForm()
|
||||
err = True
|
||||
return render(request, "gestionale/importstudents.html", {
|
||||
"err": err, "form": form
|
||||
})
|
||||
else:
|
||||
form = CSVUpdateForm()
|
||||
return render(request, "gestionale/importstudents.html", {
|
||||
"form": form
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff )
|
||||
def toggle_course(request, id):
|
||||
course = get_object_or_404(Course, id=id)
|
||||
if request.method == "POST":
|
||||
course.course_status = not course.course_status
|
||||
course.save()
|
||||
return redirect("courses")
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff )
|
||||
def take_ticket(request, id):
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
ticket_copy = copy.deepcopy(ticket)
|
||||
ticket.id_user_in_charge = request.user
|
||||
ticket.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "take"
|
||||
record.product = "ticket"
|
||||
record.product_detail = ticket
|
||||
record.prev_product_detail = ticket_copy
|
||||
record.user = request.user
|
||||
|
||||
record.save()
|
||||
|
||||
return redirect("tickets")
|
||||
else:
|
||||
return bad_request
|
||||
Reference in New Issue
Block a user