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
|
||||
229
GestionaleITS/gestionale/views/views_add.py
Normal file
229
GestionaleITS/gestionale/views/views_add.py
Normal file
@@ -0,0 +1,229 @@
|
||||
# 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/.
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.shortcuts import get_object_or_404, render, redirect
|
||||
from ..models import Bundle, Student, Supplier, Computer, Accessory, Record, Ticket
|
||||
from ..forms import BundleForm, SupplierForm, SerialFormSet, AccessoryForm, CourseForm, TicketForm
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_bundle(request):
|
||||
if request.method == "POST":
|
||||
form = BundleForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
form = form.cleaned_data
|
||||
bundle = Bundle()
|
||||
bundle.product_type = form["product_type"]
|
||||
bundle.product_name = form["product_name"]
|
||||
bundle.qt = form["qt"]
|
||||
bundle.qt_available = form["qt_available"]
|
||||
bundle.notes = form["notes"]
|
||||
bundle.brand = form["brand"]
|
||||
bundle.line = form["line"]
|
||||
if form["product_type"] == "Computer":
|
||||
bundle.cpu = form["cpu"]
|
||||
bundle.ram = form["ram"]
|
||||
bundle.storage_size = form["storage_size"]
|
||||
bundle.price = form["price"]
|
||||
bundle.delivery_date = form["delivery_date"]
|
||||
bundle.supplier_id = form["supplier_id"]
|
||||
bundle.is_deleted = form["is_deleted"]
|
||||
bundle.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "bundle"
|
||||
record.product_detail = bundle
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
if form["product_type"] == "Computer":
|
||||
return redirect("/add/serial")
|
||||
if form["product_type"] == "Accessory":
|
||||
return redirect("/add/accessory")
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/add/addbundle.html", {
|
||||
"err": err, "form": form
|
||||
})
|
||||
return redirect('storage')
|
||||
else:
|
||||
form = BundleForm()
|
||||
return render(request, "gestionale/add/addbundle.html", {
|
||||
"form": form
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_supplier(request):
|
||||
if request.method == "POST":
|
||||
form = SupplierForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
form = form.cleaned_data
|
||||
supplier = Supplier()
|
||||
supplier.supplier_name = form["supplier_name"]
|
||||
supplier.supplier_address = form["supplier_address"]
|
||||
supplier.supplier_phone = form["supplier_phone"]
|
||||
supplier.supplier_email = form["supplier_email"]
|
||||
supplier.partita_iva = form["partita_iva"]
|
||||
supplier.codice_societa = form["codice_societa"]
|
||||
supplier.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "supplier"
|
||||
record.product_detail = supplier
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/add/addsupplier.html", {
|
||||
"form": form, "err": err
|
||||
})
|
||||
return redirect('storage')
|
||||
else:
|
||||
form = SupplierForm()
|
||||
return render(request, "gestionale/add/addsupplier.html", {
|
||||
"form": form
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_serial(request):
|
||||
bundle = Bundle.objects.last()
|
||||
qt = range(bundle.qt)
|
||||
if request.method == "POST":
|
||||
form_serial = SerialFormSet(request.POST, initial=[{} for _ in qt])
|
||||
try:
|
||||
if form_serial.clean():
|
||||
if form_serial.is_valid():
|
||||
for form in form_serial:
|
||||
form = form.cleaned_data
|
||||
record = Record()
|
||||
|
||||
computer = Computer()
|
||||
computer.id_bundle = bundle
|
||||
computer.status = "in_stock"
|
||||
computer.eol = False
|
||||
computer.eol_date = None
|
||||
computer.serial = form["serial"]
|
||||
computer.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "computer"
|
||||
record.product_detail = computer
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
|
||||
|
||||
return redirect('storage')
|
||||
except ValidationError:
|
||||
err = True
|
||||
err_str = "L'inserimento é errato o incompleto!"
|
||||
return render(request, "gestionale/add/addserial.html", {
|
||||
"err": err, "form_serial": form_serial, "err_str": err_str
|
||||
})
|
||||
else:
|
||||
form_serial = SerialFormSet(initial=[{} for _ in qt])
|
||||
return render(request, "gestionale/add/addserial.html", {
|
||||
"form_serial": form_serial, "bundle_qt": qt
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_accessory(request):
|
||||
bundle = Bundle.objects.last()
|
||||
qt = range(bundle.qt)
|
||||
if request.method == "POST":
|
||||
form = AccessoryForm(request.POST)
|
||||
if form.is_valid():
|
||||
form = form.cleaned_data
|
||||
for _ in qt:
|
||||
record = Record()
|
||||
accessory = Accessory()
|
||||
accessory.id_bundle = bundle
|
||||
accessory.name = form["name"]
|
||||
accessory.description = form["description"]
|
||||
accessory.status = "in_stock"
|
||||
accessory.notes = form["notes"]
|
||||
accessory.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "accessory"
|
||||
record.product_detail = accessory
|
||||
record.user = request.user
|
||||
record.save()
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/add/addaccessory.html", {
|
||||
"err": err, "form": form
|
||||
})
|
||||
return redirect('storage')
|
||||
else:
|
||||
form = AccessoryForm()
|
||||
return render(request, "gestionale/add/addaccessory.html", {
|
||||
"form": form
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_course(request):
|
||||
if request.method == "POST":
|
||||
form = CourseForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "course"
|
||||
record.product_detail = form.cleaned_data
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
form = CourseForm()
|
||||
err = True
|
||||
return render(request, "gestionale/add/addcourse.html", {
|
||||
"form": form, "err": err
|
||||
})
|
||||
return redirect("courses")
|
||||
else:
|
||||
form = CourseForm()
|
||||
return render(request, "gestionale/add/addcourse.html",{
|
||||
"form": form
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def add_ticket(request):
|
||||
if request.method == "POST":
|
||||
form = TicketForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "add"
|
||||
record.product = "ticket"
|
||||
record.product_detail = form.cleaned_data
|
||||
record.user = request.user
|
||||
record.save()
|
||||
else:
|
||||
form = TicketForm()
|
||||
err = True
|
||||
return render(request, "gestionale/add/addticket.html", {
|
||||
"form": form, "err": err})
|
||||
|
||||
return redirect("tickets")
|
||||
|
||||
else:
|
||||
form = TicketForm(initial={"id_user_in_charge": request.user})
|
||||
return render(request, "gestionale/add/addticket.html", {
|
||||
"form": form})
|
||||
123
GestionaleITS/gestionale/views/views_assignment.py
Normal file
123
GestionaleITS/gestionale/views/views_assignment.py
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.http import Http404
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import AssignmentComputerForm, AssignmentAccessoryForm
|
||||
from ..models import Computer, Accessory, Student, Course, Record
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def assignment(request):
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/assignment/assignment.html")
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def assignment_computer(request):
|
||||
if request.method == "POST":
|
||||
form = AssignmentComputerForm(request.POST)
|
||||
if form.is_valid():
|
||||
form = form.cleaned_data
|
||||
try:
|
||||
course = get_object_or_404(Course, course_code=form["course_code"])
|
||||
student = get_object_or_404(Student, codice_fiscale=form["codice_fiscale"], course_id=course)
|
||||
computer = get_object_or_404(Computer, serial=form["serial"])
|
||||
record = Record()
|
||||
computer_copy = copy.deepcopy(computer)
|
||||
record.prev_product_detail = computer_copy
|
||||
eol_date = (form["assignment_date"] + timedelta(days=1460))
|
||||
computer.cespite = form["cespite"]
|
||||
computer.status = "assigned"
|
||||
computer.id_student = student
|
||||
computer.assignment_date = form["assignment_date"]
|
||||
computer.eol_date = eol_date
|
||||
computer.assignment_motivation = form["assignment_motivation"]
|
||||
computer.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "assignment"
|
||||
record.product = "computer"
|
||||
record.product_detail = computer
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
except Http404:
|
||||
form = AssignmentComputerForm()
|
||||
err = True
|
||||
err_str = "Uno o più dei valori inseriti non é stato trovato"
|
||||
return render(request, "gestionale/assignment/assignment_computer.html", {
|
||||
"err": err, "err_str": err_str, "form": form
|
||||
})
|
||||
else:
|
||||
form = AssignmentComputerForm()
|
||||
err = True
|
||||
err_str = "L'inserimento è incompleto o errato!"
|
||||
return render(request, "gestionale/assignment/assignment_computer.html", {
|
||||
"err": err, "err_str": err_str, "form": form
|
||||
})
|
||||
return redirect("assignment_computer")
|
||||
else:
|
||||
form = AssignmentComputerForm()
|
||||
err = False
|
||||
err_str = ""
|
||||
return render(request, "gestionale/assignment/assignment_computer.html", {
|
||||
"form": form, "err": err, "err_str": err_str
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def assignment_accessory(request):
|
||||
if request.method == "POST":
|
||||
form = AssignmentAccessoryForm(request.POST)
|
||||
if form.is_valid():
|
||||
form = form.cleaned_data
|
||||
try:
|
||||
course = get_object_or_404(Course, course_code=form["course_code"])
|
||||
student = get_object_or_404(Student, codice_fiscale=form["codice_fiscale"], course_id=course)
|
||||
accessory = get_object_or_404(Accessory, id=form["id"])
|
||||
record = Record()
|
||||
accessory_copy = copy.deepcopy(accessory)
|
||||
record.prev_product_detail = accessory_copy
|
||||
accessory.id_student = student
|
||||
accessory.status = "assigned"
|
||||
accessory.assignment_date = form["assignment_date"]
|
||||
accessory.assignment_motivation = form["assignment_motivation"]
|
||||
accessory.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "assignment"
|
||||
record.product = "accessory"
|
||||
record.product_detail = accessory
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
except Http404:
|
||||
form = AssignmentAccessoryForm()
|
||||
err = True
|
||||
err_str = "Uno o più dei valori inseriti non é stato trovato"
|
||||
return render(request, "gestionale/assignment/assignment_accessory.html", {
|
||||
"err": err, "err_str": err_str, "form": form
|
||||
})
|
||||
else:
|
||||
form = AssignmentAccessoryForm()
|
||||
err = True
|
||||
err_str = "L'inserimento è incompleto o errato!"
|
||||
return render(request, "gestionale/assignment/assignment_accessory.html", {
|
||||
"err": err, "err_str": err_str, "form": form
|
||||
})
|
||||
return redirect("assignment_accessory")
|
||||
else:
|
||||
form = AssignmentAccessoryForm()
|
||||
err = False
|
||||
err_str = ""
|
||||
return render(request, "gestionale/assignment/assignment_accessory.html", {
|
||||
"form": form, "err": err, "err_str": err_str
|
||||
})
|
||||
217
GestionaleITS/gestionale/views/views_delete.py
Normal file
217
GestionaleITS/gestionale/views/views_delete.py
Normal file
@@ -0,0 +1,217 @@
|
||||
# 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
|
||||
from datetime import datetime
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import ResignationForm
|
||||
from ..models import Bundle, Supplier, Computer, Accessory, Student, Course, Record, Ticket
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_bundle(request, id):
|
||||
bundle = get_object_or_404(Bundle, id=id)
|
||||
computers = None
|
||||
accessories = None
|
||||
if bundle.product_type == "Computer":
|
||||
computers = Computer.objects.filter(id_bundle=bundle)
|
||||
if bundle.product_type == "Accessory":
|
||||
accessories = Accessory.objects.filter(id_bundle=bundle)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
bundle_copy = copy.deepcopy(bundle)
|
||||
record.prev_product_detail = bundle_copy
|
||||
if computers is not None:
|
||||
for computer in computers:
|
||||
computer.is_deleted = True
|
||||
computer.save()
|
||||
bundle.qt_available += -1
|
||||
if accessories is not None:
|
||||
for accessory in accessories:
|
||||
accessory.is_deleted = True
|
||||
accessory.save()
|
||||
bundle.qt_available += -1
|
||||
|
||||
bundle.is_deleted = True
|
||||
bundle.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "delete"
|
||||
record.product = "bundle"
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect('storage')
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deletebundle.html", {
|
||||
"id": id
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_supplier(request, id):
|
||||
supplier = get_object_or_404(Supplier, id=id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
supplier_copy= copy.deepcopy(supplier)
|
||||
record.prev_product_detail = supplier_copy
|
||||
supplier.delete()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "reset"
|
||||
record.product = "supplier"
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect('storage')
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deletesupplier.html", {
|
||||
"id": id
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_computer(request, id):
|
||||
computer = get_object_or_404(Computer, id=id)
|
||||
bundle = get_object_or_404(Bundle, id=computer.id_bundle.id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
computer_copy = copy.deepcopy(computer)
|
||||
record.prev_product_detail = computer_copy
|
||||
bundle.qt = bundle.qt - 1
|
||||
bundle.qt_available = bundle.qt_available - 1
|
||||
bundle.save()
|
||||
computer.delete()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "reset"
|
||||
record.product = "computer"
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect(f"/details/bundle/{computer.id_bundle.id}")
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deletecomputer.html", {
|
||||
"id": id, "id_bundle": computer.id_bundle.id
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_accessory(request, id):
|
||||
accessory = get_object_or_404(Accessory, id=id)
|
||||
bundle = get_object_or_404(Bundle, id=accessory.id_bundle.id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
accessory_copy = copy.deepcopy(accessory)
|
||||
record.prev_product_detail = accessory_copy
|
||||
bundle.qt = bundle.qt - 1
|
||||
bundle.qt_available = bundle.qt_available - 1
|
||||
bundle.save()
|
||||
accessory.delete()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "reset"
|
||||
record.product = "computer"
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect(f"/details/bundle/{accessory.id_bundle.id}")
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deleteaccessory.html", {
|
||||
"id": id, "id_bundle": accessory.id_bundle.id
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_course(request, id):
|
||||
course = get_object_or_404(Course, id=id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
course_copy = copy.deepcopy(course)
|
||||
record.prev_product_detail = course_copy
|
||||
course.course_status = False
|
||||
course.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "delete"
|
||||
record.product = "course"
|
||||
record.product_detail = course
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect("courses")
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deletecourse.html", {
|
||||
"id": id
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_student(request, id):
|
||||
student = get_object_or_404(Student, id=id)
|
||||
course = get_object_or_404(Course, id=student.course_id.id)
|
||||
if request.method == "POST":
|
||||
form = ResignationForm(request.POST, instance=student)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
student_copy = copy.deepcopy(student)
|
||||
record.prev_product_detail = student_copy
|
||||
student.resignation_date = datetime.strptime(form["resignation_date"].value(), "%d/%m/%Y")
|
||||
student.student_status = "resigned"
|
||||
student.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "delete"
|
||||
record.product = "student"
|
||||
record.product_detail = student
|
||||
record.user = request.user
|
||||
record.save()
|
||||
else:
|
||||
form = ResignationForm()
|
||||
err = True
|
||||
return render(request, "gestionale/delete/deletestudent.html", {
|
||||
"err": err, "form": form, "id": id
|
||||
})
|
||||
return redirect(f"/details/course/{course.id}")
|
||||
else:
|
||||
form = ResignationForm()
|
||||
return render(request, "gestionale/delete/deletestudent.html", {
|
||||
"form": form, "id": id, "student": student, "course": course
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def delete_ticket(request, id):
|
||||
if request.method == "POST":
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
record = Record()
|
||||
|
||||
ticket_copy = copy.deepcopy(ticket)
|
||||
record.prev_product_detail = ticket_copy
|
||||
ticket.closing_date = datetime.now().date()
|
||||
ticket.is_closed = True
|
||||
ticket.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "close"
|
||||
record.product = "ticket"
|
||||
record.product_detail = ticket
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect("tickets")
|
||||
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/delete/deleteticket.html", {
|
||||
"id": id})
|
||||
else:
|
||||
return bad_request
|
||||
62
GestionaleITS/gestionale/views/views_details.py
Normal file
62
GestionaleITS/gestionale/views/views_details.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# 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/.
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.utils.autoreload import request_finished
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..models import Bundle, Computer, Accessory, Student, Course, Ticket
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def details_bundle(request, id):
|
||||
bundle = get_object_or_404(Bundle, id=id)
|
||||
bundle_type = bundle.product_type
|
||||
supplier = bundle.supplier_id
|
||||
computers = None
|
||||
accessories = None
|
||||
if bundle.product_type == "Computer":
|
||||
computers = Computer.objects.filter(id_bundle_id=id)
|
||||
if bundle.product_type == "Accessory":
|
||||
accessories = Accessory.objects.filter(id_bundle_id=id)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/details/detailsbundle.html", {
|
||||
"bundle": bundle, "computers": computers, "accessories": accessories, "bundle_type": bundle_type,
|
||||
"supplier": supplier
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def details_course(request, id):
|
||||
course = get_object_or_404(Course, id=id)
|
||||
students = Student.objects.filter(course_id= id)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/details/detailscourse.html", {
|
||||
"course": course, "students": students
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def details_student(request, id):
|
||||
student = get_object_or_404(Student, id=id)
|
||||
computers = Computer.objects.filter(id_student_id=id)
|
||||
accessories = Accessory.objects.filter(id_student_id=id)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/details/detailsstudent.html", {
|
||||
"student": student, "computers": computers, "accessories": accessories
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def details_ticket(request, id):
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/details/detailsticket.html", {
|
||||
"ticket": ticket})
|
||||
else:
|
||||
return bad_request
|
||||
240
GestionaleITS/gestionale/views/views_edit.py
Normal file
240
GestionaleITS/gestionale/views/views_edit.py
Normal file
@@ -0,0 +1,240 @@
|
||||
# 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
|
||||
from datetime import datetime
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import BundleForm, SupplierForm, ComputerForm, EditAccessoryForm, CourseForm, StudentForm, TicketCompleteForm, TicketForm
|
||||
from ..models import Bundle, Supplier, Computer, Accessory, Student, Course, Record, Ticket
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_bundle(request, id):
|
||||
bundle = get_object_or_404(Bundle, id=id)
|
||||
if request.method == "POST":
|
||||
form = BundleForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
bundle_copy = copy.deepcopy(bundle)
|
||||
record.prev_product_detail = bundle_copy
|
||||
form = form.cleaned_data
|
||||
#verificare se si può usare form.save()
|
||||
bundle.product_type = form["product_type"]
|
||||
bundle.product_name = form["product_name"]
|
||||
bundle.qt = form["qt"]
|
||||
bundle.qt_available = form["qt_available"]
|
||||
bundle.notes = form["notes"]
|
||||
bundle.brand = form["brand"]
|
||||
bundle.line = form["line"]
|
||||
if form["product_type"] == "Computer":
|
||||
bundle.cpu = form["cpu"]
|
||||
bundle.ram = form["ram"]
|
||||
bundle.storage_size = form["storage_size"]
|
||||
bundle.price = form["price"]
|
||||
bundle.delivery_date = form["delivery_date"]
|
||||
bundle.supplier_id = form["supplier_id"]
|
||||
bundle.is_deleted = form["is_deleted"]
|
||||
bundle.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "bundle"
|
||||
record.product_detail = bundle
|
||||
record.user = request.user
|
||||
record.save()
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/edit/editbundle.html", {
|
||||
"err": err, "id": id, "form": form
|
||||
})
|
||||
return redirect('storage')
|
||||
else:
|
||||
form = BundleForm(instance=bundle)
|
||||
return render(request, "gestionale/edit/editbundle.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_supplier(request, id):
|
||||
supplier = get_object_or_404(Supplier, id=id)
|
||||
if request.method == "POST":
|
||||
form = SupplierForm(request.POST, instance=supplier)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
supplier_copy = copy.deepcopy(supplier)
|
||||
record.prev_product_detail = supplier_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "supplier"
|
||||
record.product_detail = supplier
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/edit/editsupplier.html", {
|
||||
"err": err, "id": id, "form": form
|
||||
})
|
||||
return redirect('suppliers')
|
||||
else:
|
||||
form = SupplierForm(instance=supplier)
|
||||
return render(request, "gestionale/edit/editsupplier.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_computer(request, id):
|
||||
computer = get_object_or_404(Computer, id = id)
|
||||
bundle_id = computer.id_bundle.id
|
||||
if request.method == "POST":
|
||||
form = ComputerForm(request.POST, instance=computer)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
computer_copy = copy.deepcopy(computer)
|
||||
record.prev_product_detail = computer_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "computer"
|
||||
record.product_detail = computer
|
||||
record.user = request.user
|
||||
record.save()
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/edit/editcomputer.html", {
|
||||
"err": err, "form": form, "id": id
|
||||
})
|
||||
return redirect(f'/details/bundle/{bundle_id}')
|
||||
else:
|
||||
form = ComputerForm(instance=computer)
|
||||
return render(request, "gestionale/edit/editcomputer.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_accessory(request, id):
|
||||
accessory = get_object_or_404(Accessory, id=id)
|
||||
bundle_id = accessory.id_bundle.id
|
||||
if request.method == "POST":
|
||||
form = EditAccessoryForm(request.POST, instance=accessory)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
accessory_copy = copy.deepcopy(accessory)
|
||||
record.prev_product_detail = accessory_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "accessory"
|
||||
record.product_detail = accessory
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/edit/editaccessory.html", {
|
||||
"err": err, "form": form, "id": id
|
||||
})
|
||||
return redirect(f'/details/bundle/{bundle_id}')
|
||||
else:
|
||||
form = EditAccessoryForm(instance=accessory)
|
||||
return render(request, "gestionale/edit/editaccessory.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_course(request, id):
|
||||
course = get_object_or_404(Course, id=id)
|
||||
if request.method == "POST":
|
||||
form = CourseForm(request.POST, instance=course)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
course_copy = copy.deepcopy(course)
|
||||
record.prev_product_detail = course_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "course"
|
||||
record.product_detail = course
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
form = CourseForm(instance=course)
|
||||
err = True
|
||||
return render(request, "gestionale/edit/edutcourse.html", {
|
||||
"form": form, "err": err, "id": id
|
||||
})
|
||||
return redirect("courses")
|
||||
else:
|
||||
form = CourseForm(instance=course)
|
||||
return render(request, "gestionale/edit/editcourse.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_student(request, id):
|
||||
student = get_object_or_404(Student, id=id)
|
||||
if request.method == "POST":
|
||||
form = StudentForm(request.POST, request.FILES, instance=student)
|
||||
try:
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
student_copy = copy.deepcopy(student)
|
||||
record.prev_product_detail = student_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "student"
|
||||
record.product_detail = student
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
except ValidationError as e:
|
||||
form = StudentForm(instance=student)
|
||||
err = True
|
||||
err_str = e
|
||||
return render(request, "gestionale/editstudent.html", {
|
||||
"form": form, "err": err, "err_str": err_str
|
||||
})
|
||||
return redirect(f"/details/course/{student.course_id.id}")
|
||||
else:
|
||||
form = StudentForm(instance=student)
|
||||
return render(request, "gestionale/edit/editstudent.html", {
|
||||
"form": form, "id": id
|
||||
})
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def edit_ticket(request, id):
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
if request.method == "POST":
|
||||
form = TicketCompleteForm(request.POST, instance=ticket)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
ticket_copy = copy.deepcopy(ticket)
|
||||
record.prev_product_detail = ticket_copy
|
||||
form.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "edit"
|
||||
record.product = "ticket"
|
||||
record.product_detail = ticket
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
return redirect("tickets")
|
||||
else:
|
||||
form = TicketCompleteForm(instance=ticket, initial={"id_user_in_charge": request.user})
|
||||
return render(request, "gestionale/edit/editticket.html", {
|
||||
"form": form, "id": id})
|
||||
68
GestionaleITS/gestionale/views/views_list.py
Normal file
68
GestionaleITS/gestionale/views/views_list.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# 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/.
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.shortcuts import render
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..models import Bundle, Supplier, Student, Course, Ticket
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def storage(request):
|
||||
bundles = Bundle.objects.all()
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/storage.html", {
|
||||
"bundles": bundles
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def suppliers(request):
|
||||
suppliers = Supplier.objects.all()
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/suppliers.html", {
|
||||
"suppliers": suppliers
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def students(request):
|
||||
students = Student.objects.all().order_by("course_acronym")
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/students.html", {
|
||||
"students": students
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def courses(request):
|
||||
courses = Course.objects.all()
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/courses.html", {
|
||||
"courses": courses
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def tickets(request):
|
||||
tickets = Ticket.objects.filter(is_closed = False).order_by("-submit_date", "-id")
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/tickets.html", {
|
||||
"tickets": tickets})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def tickets_closed(request):
|
||||
tickets = Ticket.objects.filter(is_closed = True).order_by("-closing_date", "-id")
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/list/ticketsclosed.html", {
|
||||
"tickets": tickets})
|
||||
else:
|
||||
return bad_request
|
||||
84
GestionaleITS/gestionale/views/views_reset.py
Normal file
84
GestionaleITS/gestionale/views/views_reset.py
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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
|
||||
from copy import deepcopy
|
||||
from datetime import datetime
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import ReturnComputerDateForm, ReturnAccessoryDateForm
|
||||
from ..models import Bundle, Computer, Accessory, Record
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def reset_computer(request, id):
|
||||
computer = get_object_or_404(Computer, id=id)
|
||||
bundle = get_object_or_404(Bundle, id=computer.id_bundle.id)
|
||||
if request.method == "POST":
|
||||
form = ReturnComputerDateForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
computer_copy = copy.deepcopy(computer)
|
||||
record.prev_product_detail = computer_copy
|
||||
form = form.cleaned_data
|
||||
computer.assignment_date = None
|
||||
computer.assignment_motivation = None
|
||||
computer.id_student = None
|
||||
computer.status = "in_stock"
|
||||
computer.return_date = form["return_date"]
|
||||
computer.return_motivation = form["return_motivation"]
|
||||
computer.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "reset"
|
||||
record.product = "computer"
|
||||
record.product_detail = computer
|
||||
record.user = request.user
|
||||
record.save()
|
||||
return redirect(f"/details/bundle/{computer.id_bundle.id}")
|
||||
elif request.method == "GET":
|
||||
form = ReturnComputerDateForm()
|
||||
return render(request, "gestionale/reset/resetcomputer.html",{
|
||||
"computer": computer, "bundle": bundle, "form": form
|
||||
})
|
||||
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser or u.is_staff)
|
||||
def reset_accessory(request, id):
|
||||
accessory = get_object_or_404(Accessory, id=id)
|
||||
bundle = get_object_or_404(Bundle, id=accessory.id_bundle.id)
|
||||
if request.method == "POST":
|
||||
form = ReturnAccessoryDateForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
accessory_copy = copy.deepcopy(accessory)
|
||||
record.prev_product_detail = accessory_copy
|
||||
form = form.cleaned_data
|
||||
accessory.assignment_date = None
|
||||
accessory.assignment_motivation = None
|
||||
accessory.id_student = None
|
||||
accessory.status = "in_stock"
|
||||
accessory.return_date = form["return_date"]
|
||||
accessory.return_motivation = form["return_motivation"]
|
||||
accessory.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "reset"
|
||||
record.product = "computer"
|
||||
record.product_detail = accessory
|
||||
record.user = request.user
|
||||
record.save()
|
||||
return redirect(f"/details/bundle/{accessory.id_bundle.id}")
|
||||
elif request.method == "GET":
|
||||
form = ReturnAccessoryDateForm()
|
||||
return render(request, "gestionale/reset/resetaccessory.html", {
|
||||
"accessory": accessory, "bundle": bundle, "form": form
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
133
GestionaleITS/gestionale/views/views_studentview.py
Normal file
133
GestionaleITS/gestionale/views/views_studentview.py
Normal file
@@ -0,0 +1,133 @@
|
||||
# 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
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.views.defaults import bad_request
|
||||
|
||||
from ..forms import StudentViewEditForm, StudentViewSubmitTicketForm
|
||||
from ..models import Computer, Accessory, Student, Record, Ticket
|
||||
|
||||
from django.contrib.auth.decorators import user_passes_test
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentview(request):
|
||||
student = get_object_or_404(Student, email_user=request.user.email)
|
||||
computers = Computer.objects.filter(id_student=student)
|
||||
accessories = Accessory.objects.filter(id_student=student)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/studentview/studentview.html" ,{
|
||||
"student": student, "computers": computers, "accessories": accessories
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentview_edit(request):
|
||||
student = get_object_or_404(Student, email_user=request.user.email)
|
||||
if request.method == "POST":
|
||||
form = StudentViewEditForm(request.POST, request.FILES, instance=student)
|
||||
try:
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
|
||||
except ValidationError as e:
|
||||
err = True
|
||||
err_str = e
|
||||
return render(request, "gestionale/studentview/studentviewedit.html",{
|
||||
"student": student, "err": err, "err_str": err_str
|
||||
})
|
||||
return redirect("studentview")
|
||||
elif request.method == "GET":
|
||||
form = StudentViewEditForm(instance=student)
|
||||
return render(request, "gestionale/studentview/studentviewedit.html",{
|
||||
"student": student, "form": form
|
||||
})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentviewtickets(request):
|
||||
student = get_object_or_404(Student, email_user = request.user.email)
|
||||
tickets = Ticket.objects.filter(id_student = student).order_by("is_closed","-submit_date", "-id")
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/studentview/studentviewtickets.html", {
|
||||
"tickets": tickets})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentviewsubmitticket(request):
|
||||
student = get_object_or_404(Student, email_user = request.user.email)
|
||||
if request.method == "POST":
|
||||
form = StudentViewSubmitTicketForm(request.POST)
|
||||
if form.is_valid():
|
||||
record = Record()
|
||||
form = form.cleaned_data
|
||||
ticket = Ticket()
|
||||
|
||||
ticket.title = form["title"]
|
||||
ticket.content = form["content"]
|
||||
ticket.id_student = student
|
||||
ticket.submit_date = form["submit_date"]
|
||||
|
||||
ticket.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "submit"
|
||||
record.product = "ticket"
|
||||
record.product_detail = ticket
|
||||
record.user = request.user
|
||||
record.save()
|
||||
|
||||
else:
|
||||
err = True
|
||||
return render(request, "gestionale/studentview/studentviewsubmitticket.html",{
|
||||
"form": form, "err": err} )
|
||||
|
||||
return redirect("studentview_tickets")
|
||||
|
||||
else:
|
||||
form = StudentViewSubmitTicketForm();
|
||||
return render(request, "gestionale/studentview/studentviewsubmitticket.html", {
|
||||
"form": form})
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentviewcloseticket(request, id):
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
if request.method == "POST":
|
||||
record = Record()
|
||||
ticket.is_closed = True
|
||||
ticket.closing_date = datetime.now().date()
|
||||
ticket_copy = copy.deepcopy(ticket)
|
||||
ticket.save()
|
||||
|
||||
record.date = datetime.now().date()
|
||||
record.action = "close"
|
||||
record.product = "ticket"
|
||||
record.product_detail = ticket
|
||||
record.prev_product_detail = ticket_copy
|
||||
record.user = request.user
|
||||
|
||||
record.save()
|
||||
|
||||
return redirect("studentview_tickets")
|
||||
elif request.method == "GET":
|
||||
return render(request, "gestionale/studentview/studentviewcloseticket.html", {
|
||||
"ticket": ticket})
|
||||
else:
|
||||
return bad_request
|
||||
|
||||
@user_passes_test(lambda u: u.groups.filter(name='student').exists())
|
||||
def studentviewdetailsticket(request, id):
|
||||
ticket = get_object_or_404(Ticket, id=id)
|
||||
if request.method == "GET":
|
||||
return render(request, "gestionale/studentview/studentviewdetailsticket.html", {
|
||||
"ticket": ticket})
|
||||
else:
|
||||
return bad_request
|
||||
Reference in New Issue
Block a user