final final version
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
@@ -21,10 +21,10 @@
|
|||||||
<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">
|
<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>
|
||||||
<li class="pure-menu-item">
|
<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>
|
||||||
<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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 %}
|
||||||
@@ -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 %}
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|
||||||
|
|||||||
@@ -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":
|
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/courses.html",{
|
||||||
"err": err, "form": form
|
"err": err, "form": form
|
||||||
})
|
})
|
||||||
try:
|
try:
|
||||||
record = Record()
|
record = Record()
|
||||||
record.date = datetime.now().date()
|
record.date = datetime.now().date()
|
||||||
record.action = "import"
|
record.action = "import"
|
||||||
record.product = "bundle"
|
record.product = "courses"
|
||||||
|
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:
|
||||||
pass
|
course = Course()
|
||||||
except:
|
course.course_name = row["Nome"]
|
||||||
if request.method == "POST":
|
course.course_name_extended = row["Nome Esteso"]
|
||||||
form = CSVUpdateForm(request.POST, request.FILES)
|
course.course_code = row["Codice"]
|
||||||
if form.is_valid():
|
course.course_year = row["Anno"]
|
||||||
csv_file = request.FILES["file"]
|
course.course_location = row["Posizione"]
|
||||||
if not csv_file.endswith(".csv"):
|
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()
|
form = CSVUpdateForm()
|
||||||
err = True
|
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
|
"err": err, "form": form
|
||||||
})
|
})
|
||||||
try:
|
else:
|
||||||
record = Record()
|
form = CSVUpdateForm()
|
||||||
record.date = datetime.now().date()
|
return render(request, "gestionale/import/courses.html", {
|
||||||
record.action = "import"
|
"form": form
|
||||||
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):
|
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/computers.html",{
|
return render(request, "gestionale/import/serials.html",{
|
||||||
"err": err, "form": form
|
"err": err, "form": form
|
||||||
})
|
})
|
||||||
try:
|
try:
|
||||||
@@ -165,23 +171,41 @@ 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()
|
||||||
|
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
|
return redirect("storage")
|
||||||
except:
|
except Exception as e:
|
||||||
pass
|
form = CSVUpdateForm()
|
||||||
|
err = True
|
||||||
|
return render(request, "gestionale/import/serials.html", {
|
||||||
|
"err": err, "form": form, "e": e})
|
||||||
|
|
||||||
def import_accessories(request):
|
else:
|
||||||
pass
|
form = CSVUpdateForm()
|
||||||
|
err = True
|
||||||
def import_courses(request):
|
return render(request, "gestionale/import/serials.html", {
|
||||||
pass
|
"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 )
|
||||||
|
|||||||
@@ -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!"
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user