final final version

This commit is contained in:
2024-10-24 09:07:17 +02:00
parent e44bb5677d
commit b762b57ec3
14 changed files with 164 additions and 78 deletions

View File

@@ -15,6 +15,8 @@
<div class="benvenuto"> <div class="benvenuto">
<h3>Stai aggiungendo un seriale al bundle</h3> <h3>Stai aggiungendo un seriale al bundle</h3>
</div> </div>
<a href="/import/serials" class="pure-button pure-button-primary add-button">Importa Seriali</a>
<a href="/storage" class="pure-button pure-button-primary add-button">Ritorna al Magazzino</a>
<form action="/add/serial" method="post" class="pure-form pure-form-2 pure-form-stacked"> <form action="/add/serial" method="post" class="pure-form pure-form-2 pure-form-stacked">
{% csrf_token %} {% csrf_token %}
<div class="form-content width-100"> <div class="form-content width-100">

View File

@@ -20,12 +20,12 @@
<div class="pure-menu pure-menu-horizontal"> <div class="pure-menu pure-menu-horizontal">
<a href="/" class="pure-menu-heading pure-menu-link"><img src="{% static 'images/xlogo-itsaltoadriatico.svg' %}" width="150px"></a> <a href="/" class="pure-menu-heading pure-menu-link"><img src="{% static 'images/xlogo-itsaltoadriatico.svg' %}" width="150px"></a>
<ul class="pure-menu-list"> <ul class="pure-menu-list">
<li class="pure-menu-item">
<a href="/storage" class="pure-menu-link">Magazzino</a>
</li>
<li class="pure-menu-item"> <li class="pure-menu-item">
<a href="/suppliers" class="pure-menu-link">Fornitori</a> <a href="/suppliers" class="pure-menu-link">Fornitori</a>
</li> </li>
<li class="pure-menu-item">
<a href="/storage" class="pure-menu-link">Magazzino</a>
</li>
<li class="pure-menu-item"> <li class="pure-menu-item">
<a href="/courses" class="pure-menu-link">Corsi</a> <a href="/courses" class="pure-menu-link">Corsi</a>
</li> </li>

View File

@@ -7,6 +7,7 @@
{% load static %} {% load static %}
{% block content %} {% block content %}
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="/import/serials" class="pure-button pure-button-primary add-button">Importa Computer</a>
<div class="detail-content"> <div class="detail-content">
<table class="pure-table pure-table-horizontal width-100"> <table class="pure-table pure-table-horizontal width-100">
<thead> <thead>
@@ -178,4 +179,4 @@
</div> </div>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@@ -0,0 +1,28 @@
<!-- 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/. -->
{% extends "gestionale/base.html" %}
{% load static %}
{% block content %}
{% if user.is_authenticated %}
{% if err == True %}
<div>
{{ e }}
</div>
{% endif %}
<div class="import-card">
<div>
<form action="/import/courses" method="post" enctype="multipart/form-data" class="pure-form pure-form-stacked">
{% csrf_token %}
<div class="form-content">
{{ form }}
</div>
<button type="submit" class="pure-button pure-button-primary">Carica</button>
<button type="reset" class="pure-button button-warning">Reset</button>
</form>
</div>
</div>
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,28 @@
<!-- 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/. -->
{% extends "gestionale/base.html" %}
{% load static %}
{% block content %}
{% if user.is_authenticated %}
{% if err == True %}
<div>
{{ e }}
</div>
{% endif %}
<div class="import-card">
<div>
<form action="/import/serials" method="post" enctype="multipart/form-data" class="pure-form pure-form-stacked">
{% csrf_token %}
<div class="form-content">
{{ form }}
</div>
<button type="submit" class="pure-button pure-button-primary">Carica</button>
<button type="reset" class="pure-button button-warning">Reset</button>
</form>
</div>
</div>
{% endif %}
{% endblock %}

View File

@@ -9,6 +9,8 @@
{% block content %} {% block content %}
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="/add/course" class="pure-button pure-button-primary add-button">Aggiungi Corso</a> <a href="/add/course" class="pure-button pure-button-primary add-button">Aggiungi Corso</a>
<a href="/import/courses" class="pure-button pure-button-primary add-button">Importa Corsi</a>
<table class="pure-table pure-table-horizontal width-100"> <table class="pure-table pure-table-horizontal width-100">
<thead> <thead>
<tr> <tr>

View File

@@ -27,7 +27,7 @@ urlpatterns = [
path("add/bundle", views_add.add_bundle, name="add_bundle"), path("add/bundle", views_add.add_bundle, name="add_bundle"),
path("add/supplier", views_add.add_supplier, name="add_supplier"), path("add/supplier", views_add.add_supplier, name="add_supplier"),
path("add/serial", views_add.add_serial, name="add_serial"), path("add/serial", views_add.add_serial, name="add_serial"),
path("add/accessory", views_add.add_accessory, name="add_accessory"), path("add/accessory", views_add.add_accessory, name="add_accessory"),
path("add/course", views_add.add_course, name="add_course"), path("add/course", views_add.add_course, name="add_course"),
path("add/ticket", views_add.add_ticket, name="add_ticket"), path("add/ticket", views_add.add_ticket, name="add_ticket"),
@@ -57,6 +57,8 @@ urlpatterns = [
path("reset/accessory/<int:id>", views_reset.reset_accessory, name="reset_accessory"), path("reset/accessory/<int:id>", views_reset.reset_accessory, name="reset_accessory"),
path("import/students", views.import_students, name="import_students"), path("import/students", views.import_students, name="import_students"),
path("import/serials", views.import_serials, name="import_serials"),
path("import/courses", views.import_courses, name="import_courses"),
path("toggle/course/<int:id>", views.toggle_course, name="toggle_course"), path("toggle/course/<int:id>", views.toggle_course, name="toggle_course"),

View File

@@ -43,7 +43,7 @@ def import_students(request):
if not csv_file.name.endswith(".csv"): if not csv_file.name.endswith(".csv"):
form = CSVUpdateForm() form = CSVUpdateForm()
err = True err = True
return render(request, "gestionale/importstudents.html", { return render(request, "gestionale/import/students.html", {
"err": err, "form": form "err": err, "form": form
}) })
try: try:
@@ -82,82 +82,88 @@ def import_students(request):
except Exception as e: except Exception as e:
form = CSVUpdateForm() form = CSVUpdateForm()
err = True err = True
return render(request, "gestionale/importstudents.html", { return render(request, "gestionale/import/students.html", {
"err": err, "form": form, "e": e "err": err, "form": form, "e": e
}) })
return redirect('import_students') return redirect('import_students')
else: else:
form = CSVUpdateForm() form = CSVUpdateForm()
err = True err = True
return render(request, "gestionale/importstudents.html", { return render(request, "gestionale/import/students.html", {
"err": err, "form": form "err": err, "form": form
}) })
else: else:
form = CSVUpdateForm() form = CSVUpdateForm()
return render(request, "gestionale/importstudents.html", { return render(request, "gestionale/import/students.html", {
"form": form "form": form
}) })
def import_bundle(request): def import_courses(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/import/courses.html",{
"err": err, "form": form
})
try:
record = Record()
record.date = datetime.now().date()
record.action = "import"
record.product = "courses"
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 = Course()
course.course_name = row["Nome"]
course.course_name_extended = row["Nome Esteso"]
course.course_code = row["Codice"]
course.course_year = row["Anno"]
course.course_location = row["Posizione"]
course.student_number = row["Numero Studenti"]
if row["Status"] == 0:
course.course_status = False
else:
course.course_status = True
course.save()
return redirect("courses")
except Exception as e:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/courses.html", {
"err": err, "form": form, "e": e})
else:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/courses.html", {
"err": err, "form": form
})
else:
form = CSVUpdateForm()
return render(request, "gestionale/import/courses.html", {
"form": form
})
def import_serials(request):
if request.method == "POST": if request.method == "POST":
form = CSVUpdateForm(request.POST, request.FILES) form = CSVUpdateForm(request.POST, request.FILES)
if form.is_valid(): if form.is_valid():
csv_file = request.FILES["file"] csv_file = request.FILES["file"]
if not csv_file.endswith(".csv"): if not csv_file.name.endswith(".csv"):
form = CSVUpdateForm() form = CSVUpdateForm()
err = True err = True
return render(request, "gestionale/import/bundle.html",{ return render(request, "gestionale/import/serials.html",{
"err": err, "form": form
})
try:
record = Record()
record.date = datetime.now().date()
record.action = "import"
record.product = "bundle"
record.user = request.user
record.save()
csv_data = csv_file.read().decode("utf-8").splitlines()
reader = csv.DictReader(csv_data)
for row in reader:
pass
except:
if request.method == "POST":
form = CSVUpdateForm(request.POST, request.FILES)
if form.is_valid():
csv_file = request.FILES["file"]
if not csv_file.endswith(".csv"):
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/bundle.html",{
"err": err, "form": form
})
try:
record = Record()
record.date = datetime.now().date()
record.action = "import"
record.product = "bundle"
record.user = request.user
record.save()
csv_data = csv_file.read().decode("utf-8").splitlines()
reader = csv.DictReader(csv_data)
for row in reader:
pass
except:
pass
passpass
pass
def import_computers(request):
if request.method == "POST":
form = CSVUpdateForm(request.POST, request.FILES)
if form.is_valid():
csv_file = request.FILES["file"]
if not csv_file.endswith(".csv"):
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/computers.html",{
"err": err, "form": form "err": err, "form": form
}) })
try: try:
@@ -165,24 +171,42 @@ def import_computers(request):
record.date = datetime.now().date() record.date = datetime.now().date()
record.action = "import" record.action = "import"
record.product = "computers" record.product = "computers"
record.product_detail = csv_file
record.user = request.user record.user = request.user
record.save() record.save()
csv_data = csv_file.read().decode("utf-8").splitlines() csv_data = csv_file.read().decode("utf-8").splitlines()
reader = csv.DictReader(csv_data) reader = csv.DictReader(csv_data)
for row in reader: for row in reader:
bundle= get_object_or_404(Bundle, id = row["Id Bundle"]) bundle = get_object_or_404(Bundle, id = row["Id Bundle"])
computer = Computer()
pass computer.id_bundle = bundle
except: computer.status = "in_stock"
pass computer.serial = row["Seriale"]
computer.is_deleted = False
computer.eol = False
computer.eol_date = None
computer.save()
def import_accessories(request): return redirect("storage")
pass except Exception as e:
form = CSVUpdateForm()
def import_courses(request): err = True
pass return render(request, "gestionale/import/serials.html", {
"err": err, "form": form, "e": e})
else:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/serials.html", {
"err": err, "form": form
})
else:
form = CSVUpdateForm()
return render(request, "gestionale/import/serials.html", {
"form": form
})
@user_passes_test(lambda u: u.is_superuser or u.is_staff ) @user_passes_test(lambda u: u.is_superuser or u.is_staff )
def toggle_course(request, id): def toggle_course(request, id):

View File

@@ -87,7 +87,7 @@ def add_supplier(request):
return render(request, "gestionale/add/addsupplier.html", { return render(request, "gestionale/add/addsupplier.html", {
"form": form, "err": err "form": form, "err": err
}) })
return redirect('storage') return redirect('suppliers')
else: else:
form = SupplierForm() form = SupplierForm()
return render(request, "gestionale/add/addsupplier.html", { return render(request, "gestionale/add/addsupplier.html", {
@@ -95,7 +95,7 @@ def add_supplier(request):
}) })
@user_passes_test(lambda u: u.is_superuser or u.is_staff) @user_passes_test(lambda u: u.is_superuser or u.is_staff)
def add_serial(request): def add_serial(request, form_serial=None):
bundle = Bundle.objects.last() bundle = Bundle.objects.last()
qt = range(bundle.qt) qt = range(bundle.qt)
if request.method == "POST": if request.method == "POST":
@@ -122,9 +122,8 @@ def add_serial(request):
record.user = request.user record.user = request.user
record.save() record.save()
return redirect('storage') return redirect('storage')
except ValidationError: except ValidationError:
err = True err = True
err_str = "L'inserimento é errato o incompleto!" err_str = "L'inserimento é errato o incompleto!"

View File

@@ -64,7 +64,7 @@ def delete_supplier(request, id):
supplier.is_deleted = True supplier.is_deleted = True
record.date = datetime.now().date() record.date = datetime.now().date()
record.action = "reset" record.action = "delete"
record.product = "supplier" record.product = "supplier"
record.user = request.user record.user = request.user
record.save() record.save()