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">
<h3>Stai aggiungendo un seriale al bundle</h3>
</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">
{% csrf_token %}
<div class="form-content width-100">

View File

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

View File

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

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 %}
{% if user.is_authenticated %}
<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">
<thead>
<tr>

View File

@@ -57,6 +57,8 @@ urlpatterns = [
path("reset/accessory/<int:id>", views_reset.reset_accessory, name="reset_accessory"),
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"),

View File

@@ -43,7 +43,7 @@ def import_students(request):
if not csv_file.name.endswith(".csv"):
form = CSVUpdateForm()
err = True
return render(request, "gestionale/importstudents.html", {
return render(request, "gestionale/import/students.html", {
"err": err, "form": form
})
try:
@@ -82,82 +82,88 @@ def import_students(request):
except Exception as e:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/importstudents.html", {
return render(request, "gestionale/import/students.html", {
"err": err, "form": form, "e": e
})
return redirect('import_students')
else:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/importstudents.html", {
return render(request, "gestionale/import/students.html", {
"err": err, "form": form
})
else:
form = CSVUpdateForm()
return render(request, "gestionale/importstudents.html", {
return render(request, "gestionale/import/students.html", {
"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.endswith(".csv"):
if not csv_file.name.endswith(".csv"):
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/bundle.html",{
return render(request, "gestionale/import/courses.html",{
"err": err, "form": form
})
try:
record = Record()
record.date = datetime.now().date()
record.action = "import"
record.product = "bundle"
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:
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"):
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/bundle.html",{
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
})
try:
record = Record()
record.date = datetime.now().date()
record.action = "import"
record.product = "bundle"
record.user = request.user
record.save()
else:
form = CSVUpdateForm()
return render(request, "gestionale/import/courses.html", {
"form": form
})
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):
def import_serials(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"):
if not csv_file.name.endswith(".csv"):
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/computers.html",{
return render(request, "gestionale/import/serials.html",{
"err": err, "form": form
})
try:
@@ -165,23 +171,41 @@ def import_computers(request):
record.date = datetime.now().date()
record.action = "import"
record.product = "computers"
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:
bundle= get_object_or_404(Bundle, id = row["Id Bundle"])
bundle = get_object_or_404(Bundle, id = row["Id Bundle"])
computer = Computer()
computer.id_bundle = bundle
computer.status = "in_stock"
computer.serial = row["Seriale"]
computer.is_deleted = False
computer.eol = False
computer.eol_date = None
computer.save()
pass
except:
pass
return redirect("storage")
except Exception as e:
form = CSVUpdateForm()
err = True
return render(request, "gestionale/import/serials.html", {
"err": err, "form": form, "e": e})
def import_accessories(request):
pass
def import_courses(request):
pass
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 )

View File

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

View File

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