From 03efc319232db6f8bee0fe5cc166bd61d0730255 Mon Sep 17 00:00:00 2001 From: Nastro_ Date: Wed, 9 Oct 2024 21:10:49 +0200 Subject: [PATCH] Version 1.0 --- .gitignore | 167 + GestionaleITS/.dockerignore | 7 + GestionaleITS/GestionaleITS/__init__.py | 0 GestionaleITS/GestionaleITS/asgi.py | 16 + GestionaleITS/GestionaleITS/settings.py | 220 + .../GestionaleITS/templates/account/base.html | 16 + .../templates/account/signup.html | 10 + .../templates/registration/base.html | 21 + .../templates/registration/login.html | 31 + GestionaleITS/GestionaleITS/urls.py | 31 + GestionaleITS/GestionaleITS/wsgi.py | 16 + GestionaleITS/Readme.md | 90 + GestionaleITS/__init__.py | 0 GestionaleITS/accounts/__init__.py | 0 GestionaleITS/accounts/admin.py | 3 + GestionaleITS/accounts/apps.py | 6 + GestionaleITS/accounts/migrations/__init__.py | 0 GestionaleITS/accounts/models.py | 3 + .../accounts/templates/accounts/base.html | 15 + .../templates/accounts/registration.html | 9 + GestionaleITS/accounts/tests.py | 3 + GestionaleITS/accounts/urls.py | 7 + GestionaleITS/accounts/views.py | 12 + GestionaleITS/dockerfile | 24 + GestionaleITS/gestionale/__init__.py | 0 GestionaleITS/gestionale/adapters.py | 22 + GestionaleITS/gestionale/admin.py | 30 + GestionaleITS/gestionale/apps.py | 6 + GestionaleITS/gestionale/forms.py | 301 + .../gestionale/migrations/0001_initial.py | 142 + .../gestionale/migrations/0002_ticket.py | 25 + .../migrations/0003_ticket_closing_date.py | 18 + ...et_id_user_in_charge_alter_ticket_title.py | 26 + ...ter_record_prev_product_detail_and_more.py | 23 + .../gestionale/migrations/__init__.py | 0 GestionaleITS/gestionale/models.py | 157 + .../admin/css/autocomplete.4a81fc4242d0.css | 275 + .../css/autocomplete.4a81fc4242d0.css.gz | Bin 0 -> 1147 bytes .../static/admin/css/autocomplete.css | 275 + .../static/admin/css/autocomplete.css.gz | Bin 0 -> 1147 bytes .../static/admin/css/base.523eb49842a7.css | 1145 ++ .../static/admin/css/base.523eb49842a7.css.gz | Bin 0 -> 4865 bytes .../gestionale/static/admin/css/base.css | 1145 ++ .../gestionale/static/admin/css/base.css.gz | Bin 0 -> 4755 bytes .../admin/css/changelists.9237a1ac391b.css | 328 + .../admin/css/changelists.9237a1ac391b.css.gz | Bin 0 -> 1564 bytes .../static/admin/css/changelists.css | 328 + .../static/admin/css/changelists.css.gz | Bin 0 -> 1564 bytes .../gestionale/static/admin/css/dark_mode.css | 137 + .../static/admin/css/dark_mode.css.gz | Bin 0 -> 849 bytes .../admin/css/dark_mode.ef27a31af300.css | 137 + .../admin/css/dark_mode.ef27a31af300.css.gz | Bin 0 -> 849 bytes .../gestionale/static/admin/css/dashboard.css | 29 + .../static/admin/css/dashboard.css.gz | Bin 0 -> 267 bytes .../admin/css/dashboard.e90f2068217b.css | 29 + .../admin/css/dashboard.e90f2068217b.css.gz | Bin 0 -> 267 bytes .../static/admin/css/forms.c14e1cb06392.css | 534 + .../admin/css/forms.c14e1cb06392.css.gz | Bin 0 -> 2243 bytes .../gestionale/static/admin/css/forms.css | 534 + .../gestionale/static/admin/css/forms.css.gz | Bin 0 -> 2207 bytes .../static/admin/css/login.586129c60a93.css | 61 + .../admin/css/login.586129c60a93.css.gz | Bin 0 -> 417 bytes .../gestionale/static/admin/css/login.css | 61 + .../gestionale/static/admin/css/login.css.gz | Bin 0 -> 417 bytes .../admin/css/nav_sidebar.269a1bd44627.css | 144 + .../admin/css/nav_sidebar.269a1bd44627.css.gz | Bin 0 -> 779 bytes .../static/admin/css/nav_sidebar.css | 144 + .../static/admin/css/nav_sidebar.css.gz | Bin 0 -> 779 bytes .../static/admin/css/responsive.css | 999 ++ .../static/admin/css/responsive.css.gz | Bin 0 -> 3441 bytes .../admin/css/responsive.f6533dab034d.css | 999 ++ .../admin/css/responsive.f6533dab034d.css.gz | Bin 0 -> 3441 bytes .../admin/css/responsive_rtl.7d1130848605.css | 84 + .../css/responsive_rtl.7d1130848605.css.gz | Bin 0 -> 550 bytes .../static/admin/css/responsive_rtl.css | 84 + .../static/admin/css/responsive_rtl.css.gz | Bin 0 -> 550 bytes .../static/admin/css/rtl.512d4b53fc59.css | 298 + .../static/admin/css/rtl.512d4b53fc59.css.gz | Bin 0 -> 1281 bytes .../gestionale/static/admin/css/rtl.css | 298 + .../gestionale/static/admin/css/rtl.css.gz | Bin 0 -> 1254 bytes .../select2/LICENSE-SELECT2.f94142512c91.md | 21 + .../LICENSE-SELECT2.f94142512c91.md.gz | Bin 0 -> 685 bytes .../css/vendor/select2/LICENSE-SELECT2.md | 21 + .../css/vendor/select2/LICENSE-SELECT2.md.gz | Bin 0 -> 685 bytes .../vendor/select2/select2.a2194c262648.css | 481 + .../select2/select2.a2194c262648.css.gz | Bin 0 -> 2232 bytes .../admin/css/vendor/select2/select2.css | 481 + .../admin/css/vendor/select2/select2.css.gz | Bin 0 -> 2232 bytes .../select2/select2.min.9f54e6414f87.css | 1 + .../select2/select2.min.9f54e6414f87.css.gz | Bin 0 -> 1978 bytes .../admin/css/vendor/select2/select2.min.css | 1 + .../css/vendor/select2/select2.min.css.gz | Bin 0 -> 1978 bytes .../gestionale/static/admin/css/widgets.css | 604 + .../static/admin/css/widgets.css.gz | Bin 0 -> 2474 bytes .../static/admin/css/widgets.ee33ab26c7c2.css | 604 + .../admin/css/widgets.ee33ab26c7c2.css.gz | Bin 0 -> 2567 bytes .../gestionale/static/admin/img/LICENSE | 20 + .../static/admin/img/LICENSE.2c54f4e1ca1c | 20 + .../static/admin/img/LICENSE.2c54f4e1ca1c.gz | Bin 0 -> 656 bytes .../gestionale/static/admin/img/LICENSE.gz | Bin 0 -> 656 bytes .../static/admin/img/README.a70711a38d87.txt | 7 + .../admin/img/README.a70711a38d87.txt.gz | Bin 0 -> 214 bytes .../gestionale/static/admin/img/README.txt | 7 + .../gestionale/static/admin/img/README.txt.gz | Bin 0 -> 214 bytes .../admin/img/calendar-icons.39b290681a8b.svg | 14 + .../img/calendar-icons.39b290681a8b.svg.gz | Bin 0 -> 385 bytes .../static/admin/img/calendar-icons.svg | 14 + .../static/admin/img/calendar-icons.svg.gz | Bin 0 -> 385 bytes .../img/gis/move_vertex_off.7a23bf31ef8a.svg | 1 + .../gis/move_vertex_off.7a23bf31ef8a.svg.gz | Bin 0 -> 470 bytes .../static/admin/img/gis/move_vertex_off.svg | 1 + .../admin/img/gis/move_vertex_off.svg.gz | Bin 0 -> 470 bytes .../img/gis/move_vertex_on.0047eba25b67.svg | 1 + .../gis/move_vertex_on.0047eba25b67.svg.gz | Bin 0 -> 472 bytes .../static/admin/img/gis/move_vertex_on.svg | 1 + .../admin/img/gis/move_vertex_on.svg.gz | Bin 0 -> 472 bytes .../admin/img/icon-addlink.d519b3bab011.svg | 3 + .../img/icon-addlink.d519b3bab011.svg.gz | Bin 0 -> 206 bytes .../static/admin/img/icon-addlink.svg | 3 + .../static/admin/img/icon-addlink.svg.gz | Bin 0 -> 206 bytes .../admin/img/icon-alert.034cc7d8a67f.svg | 3 + .../admin/img/icon-alert.034cc7d8a67f.svg.gz | Bin 0 -> 329 bytes .../static/admin/img/icon-alert.svg | 3 + .../static/admin/img/icon-alert.svg.gz | Bin 0 -> 329 bytes .../admin/img/icon-calendar.ac7aea671bea.svg | 9 + .../img/icon-calendar.ac7aea671bea.svg.gz | Bin 0 -> 438 bytes .../static/admin/img/icon-calendar.svg | 9 + .../static/admin/img/icon-calendar.svg.gz | Bin 0 -> 438 bytes .../img/icon-changelink.18d2fd706348.svg | 3 + .../img/icon-changelink.18d2fd706348.svg.gz | Bin 0 -> 269 bytes .../static/admin/img/icon-changelink.svg | 3 + .../static/admin/img/icon-changelink.svg.gz | Bin 0 -> 269 bytes .../admin/img/icon-clock.e1d4dfac3f2b.svg | 9 + .../admin/img/icon-clock.e1d4dfac3f2b.svg.gz | Bin 0 -> 357 bytes .../static/admin/img/icon-clock.svg | 9 + .../static/admin/img/icon-clock.svg.gz | Bin 0 -> 357 bytes .../img/icon-deletelink.564ef9dc3854.svg | 3 + .../img/icon-deletelink.564ef9dc3854.svg.gz | Bin 0 -> 221 bytes .../static/admin/img/icon-deletelink.svg | 3 + .../static/admin/img/icon-deletelink.svg.gz | Bin 0 -> 221 bytes .../static/admin/img/icon-no.439e821418cd.svg | 3 + .../admin/img/icon-no.439e821418cd.svg.gz | Bin 0 -> 297 bytes .../gestionale/static/admin/img/icon-no.svg | 3 + .../static/admin/img/icon-no.svg.gz | Bin 0 -> 297 bytes .../img/icon-unknown-alt.81536e128bb6.svg | 3 + .../img/icon-unknown-alt.81536e128bb6.svg.gz | Bin 0 -> 377 bytes .../static/admin/img/icon-unknown-alt.svg | 3 + .../static/admin/img/icon-unknown-alt.svg.gz | Bin 0 -> 377 bytes .../admin/img/icon-unknown.a18cb4398978.svg | 3 + .../img/icon-unknown.a18cb4398978.svg.gz | Bin 0 -> 377 bytes .../static/admin/img/icon-unknown.svg | 3 + .../static/admin/img/icon-unknown.svg.gz | Bin 0 -> 377 bytes .../admin/img/icon-viewlink.41eb31f7826e.svg | 3 + .../img/icon-viewlink.41eb31f7826e.svg.gz | Bin 0 -> 346 bytes .../static/admin/img/icon-viewlink.svg | 3 + .../static/admin/img/icon-viewlink.svg.gz | Bin 0 -> 346 bytes .../admin/img/icon-yes.d2f9f035226a.svg | 3 + .../admin/img/icon-yes.d2f9f035226a.svg.gz | Bin 0 -> 266 bytes .../gestionale/static/admin/img/icon-yes.svg | 3 + .../static/admin/img/icon-yes.svg.gz | Bin 0 -> 266 bytes .../admin/img/inline-delete.fec1b761f254.svg | 3 + .../img/inline-delete.fec1b761f254.svg.gz | Bin 0 -> 293 bytes .../static/admin/img/inline-delete.svg | 3 + .../static/admin/img/inline-delete.svg.gz | Bin 0 -> 293 bytes .../static/admin/img/search.7cf54ff789c6.svg | 3 + .../admin/img/search.7cf54ff789c6.svg.gz | Bin 0 -> 264 bytes .../gestionale/static/admin/img/search.svg | 3 + .../gestionale/static/admin/img/search.svg.gz | Bin 0 -> 264 bytes .../admin/img/selector-icons.b4555096cea2.svg | 34 + .../img/selector-icons.b4555096cea2.svg.gz | Bin 0 -> 770 bytes .../static/admin/img/selector-icons.svg | 34 + .../static/admin/img/selector-icons.svg.gz | Bin 0 -> 770 bytes .../admin/img/sorting-icons.3a097b59f104.svg | 19 + .../img/sorting-icons.3a097b59f104.svg.gz | Bin 0 -> 366 bytes .../static/admin/img/sorting-icons.svg | 19 + .../static/admin/img/sorting-icons.svg.gz | Bin 0 -> 366 bytes .../admin/img/tooltag-add.e59d620a9742.svg | 3 + .../admin/img/tooltag-add.e59d620a9742.svg.gz | Bin 0 -> 203 bytes .../static/admin/img/tooltag-add.svg | 3 + .../static/admin/img/tooltag-add.svg.gz | Bin 0 -> 203 bytes .../img/tooltag-arrowright.bbfb788a849e.svg | 3 + .../tooltag-arrowright.bbfb788a849e.svg.gz | Bin 0 -> 194 bytes .../static/admin/img/tooltag-arrowright.svg | 3 + .../admin/img/tooltag-arrowright.svg.gz | Bin 0 -> 194 bytes .../static/admin/js/SelectBox.7d3ce5a98007.js | 116 + .../admin/js/SelectBox.7d3ce5a98007.js.gz | Bin 0 -> 1025 bytes .../gestionale/static/admin/js/SelectBox.js | 116 + .../static/admin/js/SelectBox.js.gz | Bin 0 -> 1025 bytes .../admin/js/SelectFilter2.bdb8d0cc579e.js | 283 + .../admin/js/SelectFilter2.bdb8d0cc579e.js.gz | Bin 0 -> 2914 bytes .../static/admin/js/SelectFilter2.js | 283 + .../static/admin/js/SelectFilter2.js.gz | Bin 0 -> 2914 bytes .../static/admin/js/actions.eac7e3441574.js | 201 + .../admin/js/actions.eac7e3441574.js.gz | Bin 0 -> 1874 bytes .../gestionale/static/admin/js/actions.js | 201 + .../gestionale/static/admin/js/actions.js.gz | Bin 0 -> 1874 bytes .../admin/DateTimeShortcuts.9f6e209cebca.js | 408 + .../DateTimeShortcuts.9f6e209cebca.js.gz | Bin 0 -> 3645 bytes .../admin/js/admin/DateTimeShortcuts.js | 408 + .../admin/js/admin/DateTimeShortcuts.js.gz | Bin 0 -> 3645 bytes .../RelatedObjectLookups.8609f99b9ab2.js | 238 + .../RelatedObjectLookups.8609f99b9ab2.js.gz | Bin 0 -> 2301 bytes .../admin/js/admin/RelatedObjectLookups.js | 238 + .../admin/js/admin/RelatedObjectLookups.js.gz | Bin 0 -> 2301 bytes .../admin/js/autocomplete.01591ab27be7.js | 33 + .../admin/js/autocomplete.01591ab27be7.js.gz | Bin 0 -> 425 bytes .../static/admin/js/autocomplete.js | 33 + .../static/admin/js/autocomplete.js.gz | Bin 0 -> 425 bytes .../static/admin/js/calendar.f8a5d055eb33.js | 221 + .../admin/js/calendar.f8a5d055eb33.js.gz | Bin 0 -> 2193 bytes .../gestionale/static/admin/js/calendar.js | 221 + .../gestionale/static/admin/js/calendar.js.gz | Bin 0 -> 2193 bytes .../static/admin/js/cancel.ecc4c5ca7b32.js | 29 + .../static/admin/js/cancel.ecc4c5ca7b32.js.gz | Bin 0 -> 430 bytes .../gestionale/static/admin/js/cancel.js | 29 + .../gestionale/static/admin/js/cancel.js.gz | Bin 0 -> 430 bytes .../admin/js/change_form.9d8ca4f96b75.js | 16 + .../admin/js/change_form.9d8ca4f96b75.js.gz | Bin 0 -> 322 bytes .../gestionale/static/admin/js/change_form.js | 16 + .../static/admin/js/change_form.js.gz | Bin 0 -> 322 bytes .../static/admin/js/collapse.f84e7410290f.js | 43 + .../admin/js/collapse.f84e7410290f.js.gz | Bin 0 -> 614 bytes .../gestionale/static/admin/js/collapse.js | 43 + .../gestionale/static/admin/js/collapse.js.gz | Bin 0 -> 614 bytes .../static/admin/js/core.cf103cd04ebf.js | 170 + .../static/admin/js/core.cf103cd04ebf.js.gz | Bin 0 -> 1505 bytes .../gestionale/static/admin/js/core.js | 170 + .../gestionale/static/admin/js/core.js.gz | Bin 0 -> 1505 bytes .../static/admin/js/filters.0e360b7a9f80.js | 30 + .../admin/js/filters.0e360b7a9f80.js.gz | Bin 0 -> 502 bytes .../gestionale/static/admin/js/filters.js | 30 + .../gestionale/static/admin/js/filters.js.gz | Bin 0 -> 502 bytes .../static/admin/js/inlines.22d4d93c00b4.js | 359 + .../admin/js/inlines.22d4d93c00b4.js.gz | Bin 0 -> 3744 bytes .../gestionale/static/admin/js/inlines.js | 359 + .../gestionale/static/admin/js/inlines.js.gz | Bin 0 -> 3744 bytes .../admin/js/jquery.init.b7781a0897fc.js | 8 + .../admin/js/jquery.init.b7781a0897fc.js.gz | Bin 0 -> 236 bytes .../gestionale/static/admin/js/jquery.init.js | 8 + .../static/admin/js/jquery.init.js.gz | Bin 0 -> 236 bytes .../admin/js/nav_sidebar.3b9190d420b1.js | 79 + .../admin/js/nav_sidebar.3b9190d420b1.js.gz | Bin 0 -> 845 bytes .../gestionale/static/admin/js/nav_sidebar.js | 79 + .../static/admin/js/nav_sidebar.js.gz | Bin 0 -> 845 bytes .../admin/js/popup_response.c6cc78ea5551.js | 16 + .../js/popup_response.c6cc78ea5551.js.gz | Bin 0 -> 270 bytes .../static/admin/js/popup_response.js | 16 + .../static/admin/js/popup_response.js.gz | Bin 0 -> 270 bytes .../admin/js/prepopulate.bd2361dfd64d.js | 43 + .../admin/js/prepopulate.bd2361dfd64d.js.gz | Bin 0 -> 536 bytes .../gestionale/static/admin/js/prepopulate.js | 43 + .../static/admin/js/prepopulate.js.gz | Bin 0 -> 536 bytes .../admin/js/prepopulate_init.6cac7f3105b8.js | 15 + .../js/prepopulate_init.6cac7f3105b8.js.gz | Bin 0 -> 277 bytes .../static/admin/js/prepopulate_init.js | 15 + .../static/admin/js/prepopulate_init.js.gz | Bin 0 -> 277 bytes .../static/admin/js/theme.ab270f56bb9c.js | 56 + .../static/admin/js/theme.ab270f56bb9c.js.gz | Bin 0 -> 605 bytes .../gestionale/static/admin/js/theme.js | 56 + .../gestionale/static/admin/js/theme.js.gz | Bin 0 -> 605 bytes .../static/admin/js/urlify.ae970a820212.js | 169 + .../static/admin/js/urlify.ae970a820212.js.gz | Bin 0 -> 2578 bytes .../gestionale/static/admin/js/urlify.js | 169 + .../gestionale/static/admin/js/urlify.js.gz | Bin 0 -> 2578 bytes .../js/vendor/jquery/LICENSE.de877aa6d744.txt | 20 + .../vendor/jquery/LICENSE.de877aa6d744.txt.gz | Bin 0 -> 656 bytes .../static/admin/js/vendor/jquery/LICENSE.txt | 20 + .../admin/js/vendor/jquery/LICENSE.txt.gz | Bin 0 -> 656 bytes .../js/vendor/jquery/jquery.0208b96062ba.js | 10965 ++++++++++++++++ .../vendor/jquery/jquery.0208b96062ba.js.gz | Bin 0 -> 86002 bytes .../static/admin/js/vendor/jquery/jquery.js | 10965 ++++++++++++++++ .../admin/js/vendor/jquery/jquery.js.gz | Bin 0 -> 86002 bytes .../vendor/jquery/jquery.min.641dd1437010.js | 2 + .../jquery/jquery.min.641dd1437010.js.gz | Bin 0 -> 31011 bytes .../admin/js/vendor/jquery/jquery.min.js | 2 + .../admin/js/vendor/jquery/jquery.min.js.gz | Bin 0 -> 31011 bytes .../js/vendor/select2/LICENSE.f94142512c91.md | 21 + .../vendor/select2/LICENSE.f94142512c91.md.gz | Bin 0 -> 685 bytes .../static/admin/js/vendor/select2/LICENSE.md | 21 + .../admin/js/vendor/select2/LICENSE.md.gz | Bin 0 -> 685 bytes .../js/vendor/select2/i18n/af.4f6fcd73488c.js | 3 + .../vendor/select2/i18n/af.4f6fcd73488c.js.gz | Bin 0 -> 460 bytes .../static/admin/js/vendor/select2/i18n/af.js | 3 + .../admin/js/vendor/select2/i18n/af.js.gz | Bin 0 -> 460 bytes .../js/vendor/select2/i18n/ar.65aa8e36bf5d.js | 3 + .../vendor/select2/i18n/ar.65aa8e36bf5d.js.gz | Bin 0 -> 498 bytes .../static/admin/js/vendor/select2/i18n/ar.js | 3 + .../admin/js/vendor/select2/i18n/ar.js.gz | Bin 0 -> 498 bytes .../js/vendor/select2/i18n/az.270c257daf81.js | 3 + .../vendor/select2/i18n/az.270c257daf81.js.gz | Bin 0 -> 413 bytes .../static/admin/js/vendor/select2/i18n/az.js | 3 + .../admin/js/vendor/select2/i18n/az.js.gz | Bin 0 -> 413 bytes .../js/vendor/select2/i18n/bg.39b8be30d4f0.js | 3 + .../vendor/select2/i18n/bg.39b8be30d4f0.js.gz | Bin 0 -> 541 bytes .../static/admin/js/vendor/select2/i18n/bg.js | 3 + .../admin/js/vendor/select2/i18n/bg.js.gz | Bin 0 -> 541 bytes .../js/vendor/select2/i18n/bn.6d42b4dd5665.js | 3 + .../vendor/select2/i18n/bn.6d42b4dd5665.js.gz | Bin 0 -> 553 bytes .../static/admin/js/vendor/select2/i18n/bn.js | 3 + .../admin/js/vendor/select2/i18n/bn.js.gz | Bin 0 -> 553 bytes .../js/vendor/select2/i18n/bs.91624382358e.js | 3 + .../vendor/select2/i18n/bs.91624382358e.js.gz | Bin 0 -> 523 bytes .../static/admin/js/vendor/select2/i18n/bs.js | 3 + .../admin/js/vendor/select2/i18n/bs.js.gz | Bin 0 -> 523 bytes .../js/vendor/select2/i18n/ca.a166b745933a.js | 3 + .../vendor/select2/i18n/ca.a166b745933a.js.gz | Bin 0 -> 470 bytes .../static/admin/js/vendor/select2/i18n/ca.js | 3 + .../admin/js/vendor/select2/i18n/ca.js.gz | Bin 0 -> 470 bytes .../js/vendor/select2/i18n/cs.4f43e8e7d33a.js | 3 + .../vendor/select2/i18n/cs.4f43e8e7d33a.js.gz | Bin 0 -> 623 bytes .../static/admin/js/vendor/select2/i18n/cs.js | 3 + .../admin/js/vendor/select2/i18n/cs.js.gz | Bin 0 -> 623 bytes .../js/vendor/select2/i18n/da.766346afe4dd.js | 3 + .../vendor/select2/i18n/da.766346afe4dd.js.gz | Bin 0 -> 441 bytes .../static/admin/js/vendor/select2/i18n/da.js | 3 + .../admin/js/vendor/select2/i18n/da.js.gz | Bin 0 -> 441 bytes .../js/vendor/select2/i18n/de.8a1c222b0204.js | 3 + .../vendor/select2/i18n/de.8a1c222b0204.js.gz | Bin 0 -> 467 bytes .../static/admin/js/vendor/select2/i18n/de.js | 3 + .../admin/js/vendor/select2/i18n/de.js.gz | Bin 0 -> 467 bytes .../vendor/select2/i18n/dsb.56372c92d2f1.js | 3 + .../select2/i18n/dsb.56372c92d2f1.js.gz | Bin 0 -> 551 bytes .../admin/js/vendor/select2/i18n/dsb.js | 3 + .../admin/js/vendor/select2/i18n/dsb.js.gz | Bin 0 -> 551 bytes .../js/vendor/select2/i18n/el.27097f071856.js | 3 + .../vendor/select2/i18n/el.27097f071856.js.gz | Bin 0 -> 644 bytes .../static/admin/js/vendor/select2/i18n/el.js | 3 + .../admin/js/vendor/select2/i18n/el.js.gz | Bin 0 -> 644 bytes .../js/vendor/select2/i18n/en.cf932ba09a98.js | 3 + .../vendor/select2/i18n/en.cf932ba09a98.js.gz | Bin 0 -> 447 bytes .../static/admin/js/vendor/select2/i18n/en.js | 3 + .../admin/js/vendor/select2/i18n/en.js.gz | Bin 0 -> 447 bytes .../js/vendor/select2/i18n/es.66dbc2652fb1.js | 3 + .../vendor/select2/i18n/es.66dbc2652fb1.js.gz | Bin 0 -> 474 bytes .../static/admin/js/vendor/select2/i18n/es.js | 3 + .../admin/js/vendor/select2/i18n/es.js.gz | Bin 0 -> 474 bytes .../js/vendor/select2/i18n/et.2b96fd98289d.js | 3 + .../vendor/select2/i18n/et.2b96fd98289d.js.gz | Bin 0 -> 432 bytes .../static/admin/js/vendor/select2/i18n/et.js | 3 + .../admin/js/vendor/select2/i18n/et.js.gz | Bin 0 -> 432 bytes .../js/vendor/select2/i18n/eu.adfe5c97b72c.js | 3 + .../vendor/select2/i18n/eu.adfe5c97b72c.js.gz | Bin 0 -> 450 bytes .../static/admin/js/vendor/select2/i18n/eu.js | 3 + .../admin/js/vendor/select2/i18n/eu.js.gz | Bin 0 -> 450 bytes .../js/vendor/select2/i18n/fa.3b5bd1961cfd.js | 3 + .../vendor/select2/i18n/fa.3b5bd1961cfd.js.gz | Bin 0 -> 538 bytes .../static/admin/js/vendor/select2/i18n/fa.js | 3 + .../admin/js/vendor/select2/i18n/fa.js.gz | Bin 0 -> 538 bytes .../js/vendor/select2/i18n/fi.614ec42aa9ba.js | 3 + .../vendor/select2/i18n/fi.614ec42aa9ba.js.gz | Bin 0 -> 429 bytes .../static/admin/js/vendor/select2/i18n/fi.js | 3 + .../admin/js/vendor/select2/i18n/fi.js.gz | Bin 0 -> 429 bytes .../js/vendor/select2/i18n/fr.05e0542fcfe6.js | 3 + .../vendor/select2/i18n/fr.05e0542fcfe6.js.gz | Bin 0 -> 484 bytes .../static/admin/js/vendor/select2/i18n/fr.js | 3 + .../admin/js/vendor/select2/i18n/fr.js.gz | Bin 0 -> 484 bytes .../js/vendor/select2/i18n/gl.d99b1fedaa86.js | 3 + .../vendor/select2/i18n/gl.d99b1fedaa86.js.gz | Bin 0 -> 465 bytes .../static/admin/js/vendor/select2/i18n/gl.js | 3 + .../admin/js/vendor/select2/i18n/gl.js.gz | Bin 0 -> 465 bytes .../js/vendor/select2/i18n/he.e420ff6cd3ed.js | 3 + .../vendor/select2/i18n/he.e420ff6cd3ed.js.gz | Bin 0 -> 518 bytes .../static/admin/js/vendor/select2/i18n/he.js | 3 + .../admin/js/vendor/select2/i18n/he.js.gz | Bin 0 -> 518 bytes .../js/vendor/select2/i18n/hi.70640d41628f.js | 3 + .../vendor/select2/i18n/hi.70640d41628f.js.gz | Bin 0 -> 572 bytes .../static/admin/js/vendor/select2/i18n/hi.js | 3 + .../admin/js/vendor/select2/i18n/hi.js.gz | Bin 0 -> 572 bytes .../js/vendor/select2/i18n/hr.a2b092cc1147.js | 3 + .../vendor/select2/i18n/hr.a2b092cc1147.js.gz | Bin 0 -> 477 bytes .../static/admin/js/vendor/select2/i18n/hr.js | 3 + .../admin/js/vendor/select2/i18n/hr.js.gz | Bin 0 -> 477 bytes .../vendor/select2/i18n/hsb.fa3b55265efe.js | 3 + .../select2/i18n/hsb.fa3b55265efe.js.gz | Bin 0 -> 556 bytes .../admin/js/vendor/select2/i18n/hsb.js | 3 + .../admin/js/vendor/select2/i18n/hsb.js.gz | Bin 0 -> 556 bytes .../js/vendor/select2/i18n/hu.6ec6039cb8a3.js | 3 + .../vendor/select2/i18n/hu.6ec6039cb8a3.js.gz | Bin 0 -> 467 bytes .../static/admin/js/vendor/select2/i18n/hu.js | 3 + .../admin/js/vendor/select2/i18n/hu.js.gz | Bin 0 -> 467 bytes .../js/vendor/select2/i18n/hy.c7babaeef5a6.js | 3 + .../vendor/select2/i18n/hy.c7babaeef5a6.js.gz | Bin 0 -> 530 bytes .../static/admin/js/vendor/select2/i18n/hy.js | 3 + .../admin/js/vendor/select2/i18n/hy.js.gz | Bin 0 -> 530 bytes .../js/vendor/select2/i18n/id.04debded514d.js | 3 + .../vendor/select2/i18n/id.04debded514d.js.gz | Bin 0 -> 416 bytes .../static/admin/js/vendor/select2/i18n/id.js | 3 + .../admin/js/vendor/select2/i18n/id.js.gz | Bin 0 -> 416 bytes .../js/vendor/select2/i18n/is.3ddd9a6a97e9.js | 3 + .../vendor/select2/i18n/is.3ddd9a6a97e9.js.gz | Bin 0 -> 465 bytes .../static/admin/js/vendor/select2/i18n/is.js | 3 + .../admin/js/vendor/select2/i18n/is.js.gz | Bin 0 -> 465 bytes .../js/vendor/select2/i18n/it.be4fe8d365b5.js | 3 + .../vendor/select2/i18n/it.be4fe8d365b5.js.gz | Bin 0 -> 488 bytes .../static/admin/js/vendor/select2/i18n/it.js | 3 + .../admin/js/vendor/select2/i18n/it.js.gz | Bin 0 -> 488 bytes .../js/vendor/select2/i18n/ja.170ae885d74f.js | 3 + .../vendor/select2/i18n/ja.170ae885d74f.js.gz | Bin 0 -> 511 bytes .../static/admin/js/vendor/select2/i18n/ja.js | 3 + .../admin/js/vendor/select2/i18n/ja.js.gz | Bin 0 -> 511 bytes .../js/vendor/select2/i18n/ka.2083264a54f0.js | 3 + .../vendor/select2/i18n/ka.2083264a54f0.js.gz | Bin 0 -> 533 bytes .../static/admin/js/vendor/select2/i18n/ka.js | 3 + .../admin/js/vendor/select2/i18n/ka.js.gz | Bin 0 -> 533 bytes .../js/vendor/select2/i18n/km.c23089cb06ca.js | 3 + .../vendor/select2/i18n/km.c23089cb06ca.js.gz | Bin 0 -> 540 bytes .../static/admin/js/vendor/select2/i18n/km.js | 3 + .../admin/js/vendor/select2/i18n/km.js.gz | Bin 0 -> 540 bytes .../js/vendor/select2/i18n/ko.e7be6c20e673.js | 3 + .../vendor/select2/i18n/ko.e7be6c20e673.js.gz | Bin 0 -> 506 bytes .../static/admin/js/vendor/select2/i18n/ko.js | 3 + .../admin/js/vendor/select2/i18n/ko.js.gz | Bin 0 -> 506 bytes .../js/vendor/select2/i18n/lt.23c7ce903300.js | 3 + .../vendor/select2/i18n/lt.23c7ce903300.js.gz | Bin 0 -> 521 bytes .../static/admin/js/vendor/select2/i18n/lt.js | 3 + .../admin/js/vendor/select2/i18n/lt.js.gz | Bin 0 -> 521 bytes .../js/vendor/select2/i18n/lv.08e62128eac1.js | 3 + .../vendor/select2/i18n/lv.08e62128eac1.js.gz | Bin 0 -> 505 bytes .../static/admin/js/vendor/select2/i18n/lv.js | 3 + .../admin/js/vendor/select2/i18n/lv.js.gz | Bin 0 -> 505 bytes .../js/vendor/select2/i18n/mk.dabbb9087130.js | 3 + .../vendor/select2/i18n/mk.dabbb9087130.js.gz | Bin 0 -> 557 bytes .../static/admin/js/vendor/select2/i18n/mk.js | 3 + .../admin/js/vendor/select2/i18n/mk.js.gz | Bin 0 -> 557 bytes .../js/vendor/select2/i18n/ms.4ba82c9a51ce.js | 3 + .../vendor/select2/i18n/ms.4ba82c9a51ce.js.gz | Bin 0 -> 436 bytes .../static/admin/js/vendor/select2/i18n/ms.js | 3 + .../admin/js/vendor/select2/i18n/ms.js.gz | Bin 0 -> 436 bytes .../js/vendor/select2/i18n/nb.da2fce143f27.js | 3 + .../vendor/select2/i18n/nb.da2fce143f27.js.gz | Bin 0 -> 413 bytes .../static/admin/js/vendor/select2/i18n/nb.js | 3 + .../admin/js/vendor/select2/i18n/nb.js.gz | Bin 0 -> 413 bytes .../js/vendor/select2/i18n/ne.3d79fd3f08db.js | 3 + .../vendor/select2/i18n/ne.3d79fd3f08db.js.gz | Bin 0 -> 591 bytes .../static/admin/js/vendor/select2/i18n/ne.js | 3 + .../admin/js/vendor/select2/i18n/ne.js.gz | Bin 0 -> 591 bytes .../js/vendor/select2/i18n/nl.997868a37ed8.js | 3 + .../vendor/select2/i18n/nl.997868a37ed8.js.gz | Bin 0 -> 469 bytes .../static/admin/js/vendor/select2/i18n/nl.js | 3 + .../admin/js/vendor/select2/i18n/nl.js.gz | Bin 0 -> 469 bytes .../js/vendor/select2/i18n/pl.6031b4f16452.js | 3 + .../vendor/select2/i18n/pl.6031b4f16452.js.gz | Bin 0 -> 524 bytes .../static/admin/js/vendor/select2/i18n/pl.js | 3 + .../admin/js/vendor/select2/i18n/pl.js.gz | Bin 0 -> 524 bytes .../js/vendor/select2/i18n/ps.38dfa47af9e0.js | 3 + .../vendor/select2/i18n/ps.38dfa47af9e0.js.gz | Bin 0 -> 587 bytes .../static/admin/js/vendor/select2/i18n/ps.js | 3 + .../admin/js/vendor/select2/i18n/ps.js.gz | Bin 0 -> 587 bytes .../vendor/select2/i18n/pt-BR.e1b294433e7f.js | 3 + .../select2/i18n/pt-BR.e1b294433e7f.js.gz | Bin 0 -> 486 bytes .../admin/js/vendor/select2/i18n/pt-BR.js | 3 + .../admin/js/vendor/select2/i18n/pt-BR.js.gz | Bin 0 -> 486 bytes .../js/vendor/select2/i18n/pt.33b4a3b44d43.js | 3 + .../vendor/select2/i18n/pt.33b4a3b44d43.js.gz | Bin 0 -> 470 bytes .../static/admin/js/vendor/select2/i18n/pt.js | 3 + .../admin/js/vendor/select2/i18n/pt.js.gz | Bin 0 -> 470 bytes .../js/vendor/select2/i18n/ro.f75cb460ec3b.js | 3 + .../vendor/select2/i18n/ro.f75cb460ec3b.js.gz | Bin 0 -> 511 bytes .../static/admin/js/vendor/select2/i18n/ro.js | 3 + .../admin/js/vendor/select2/i18n/ro.js.gz | Bin 0 -> 511 bytes .../js/vendor/select2/i18n/ru.934aa95f5b5f.js | 3 + .../vendor/select2/i18n/ru.934aa95f5b5f.js.gz | Bin 0 -> 632 bytes .../static/admin/js/vendor/select2/i18n/ru.js | 3 + .../admin/js/vendor/select2/i18n/ru.js.gz | Bin 0 -> 632 bytes .../js/vendor/select2/i18n/sk.33d02cef8d11.js | 3 + .../vendor/select2/i18n/sk.33d02cef8d11.js.gz | Bin 0 -> 617 bytes .../static/admin/js/vendor/select2/i18n/sk.js | 3 + .../admin/js/vendor/select2/i18n/sk.js.gz | Bin 0 -> 617 bytes .../js/vendor/select2/i18n/sl.131a78bc0752.js | 3 + .../vendor/select2/i18n/sl.131a78bc0752.js.gz | Bin 0 -> 487 bytes .../static/admin/js/vendor/select2/i18n/sl.js | 3 + .../admin/js/vendor/select2/i18n/sl.js.gz | Bin 0 -> 487 bytes .../js/vendor/select2/i18n/sq.5636b60d29c9.js | 3 + .../vendor/select2/i18n/sq.5636b60d29c9.js.gz | Bin 0 -> 490 bytes .../static/admin/js/vendor/select2/i18n/sq.js | 3 + .../admin/js/vendor/select2/i18n/sq.js.gz | Bin 0 -> 490 bytes .../select2/i18n/sr-Cyrl.f254bb8c4c7c.js | 3 + .../select2/i18n/sr-Cyrl.f254bb8c4c7c.js.gz | Bin 0 -> 608 bytes .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 + .../js/vendor/select2/i18n/sr-Cyrl.js.gz | Bin 0 -> 608 bytes .../js/vendor/select2/i18n/sr.5ed85a48f483.js | 3 + .../vendor/select2/i18n/sr.5ed85a48f483.js.gz | Bin 0 -> 552 bytes .../static/admin/js/vendor/select2/i18n/sr.js | 3 + .../admin/js/vendor/select2/i18n/sr.js.gz | Bin 0 -> 552 bytes .../js/vendor/select2/i18n/sv.7a9c2f71e777.js | 3 + .../vendor/select2/i18n/sv.7a9c2f71e777.js.gz | Bin 0 -> 429 bytes .../static/admin/js/vendor/select2/i18n/sv.js | 3 + .../admin/js/vendor/select2/i18n/sv.js.gz | Bin 0 -> 429 bytes .../js/vendor/select2/i18n/th.f38c20b0221b.js | 3 + .../vendor/select2/i18n/th.f38c20b0221b.js.gz | Bin 0 -> 515 bytes .../static/admin/js/vendor/select2/i18n/th.js | 3 + .../admin/js/vendor/select2/i18n/th.js.gz | Bin 0 -> 515 bytes .../js/vendor/select2/i18n/tk.7c572a68c78f.js | 3 + .../vendor/select2/i18n/tk.7c572a68c78f.js.gz | Bin 0 -> 434 bytes .../static/admin/js/vendor/select2/i18n/tk.js | 3 + .../admin/js/vendor/select2/i18n/tk.js.gz | Bin 0 -> 434 bytes .../js/vendor/select2/i18n/tr.b5a0643d1545.js | 3 + .../vendor/select2/i18n/tr.b5a0643d1545.js.gz | Bin 0 -> 423 bytes .../static/admin/js/vendor/select2/i18n/tr.js | 3 + .../admin/js/vendor/select2/i18n/tr.js.gz | Bin 0 -> 423 bytes .../js/vendor/select2/i18n/uk.8cede7f4803c.js | 3 + .../vendor/select2/i18n/uk.8cede7f4803c.js.gz | Bin 0 -> 626 bytes .../static/admin/js/vendor/select2/i18n/uk.js | 3 + .../admin/js/vendor/select2/i18n/uk.js.gz | Bin 0 -> 626 bytes .../js/vendor/select2/i18n/vi.097a5b75b3e1.js | 3 + .../vendor/select2/i18n/vi.097a5b75b3e1.js.gz | Bin 0 -> 479 bytes .../static/admin/js/vendor/select2/i18n/vi.js | 3 + .../admin/js/vendor/select2/i18n/vi.js.gz | Bin 0 -> 479 bytes .../vendor/select2/i18n/zh-CN.2cff662ec5f9.js | 3 + .../select2/i18n/zh-CN.2cff662ec5f9.js.gz | Bin 0 -> 468 bytes .../admin/js/vendor/select2/i18n/zh-CN.js | 3 + .../admin/js/vendor/select2/i18n/zh-CN.js.gz | Bin 0 -> 468 bytes .../vendor/select2/i18n/zh-TW.04554a227c2b.js | 3 + .../select2/i18n/zh-TW.04554a227c2b.js.gz | Bin 0 -> 451 bytes .../admin/js/vendor/select2/i18n/zh-TW.js | 3 + .../admin/js/vendor/select2/i18n/zh-TW.js.gz | Bin 0 -> 451 bytes .../select2/select2.full.c2afdeda3058.js | 6820 ++++++++++ .../select2/select2.full.c2afdeda3058.js.gz | Bin 0 -> 37925 bytes .../admin/js/vendor/select2/select2.full.js | 6820 ++++++++++ .../js/vendor/select2/select2.full.js.gz | Bin 0 -> 37925 bytes .../select2/select2.full.min.fcd7500d8e13.js | 2 + .../select2.full.min.fcd7500d8e13.js.gz | Bin 0 -> 21986 bytes .../js/vendor/select2/select2.full.min.js | 2 + .../js/vendor/select2/select2.full.min.js.gz | Bin 0 -> 21986 bytes .../vendor/xregexp/LICENSE.bf79e414957a.txt | 21 + .../xregexp/LICENSE.bf79e414957a.txt.gz | Bin 0 -> 679 bytes .../admin/js/vendor/xregexp/LICENSE.txt | 21 + .../admin/js/vendor/xregexp/LICENSE.txt.gz | Bin 0 -> 679 bytes .../js/vendor/xregexp/xregexp.efda034b9537.js | 4652 +++++++ .../vendor/xregexp/xregexp.efda034b9537.js.gz | Bin 0 -> 60899 bytes .../static/admin/js/vendor/xregexp/xregexp.js | 4652 +++++++ .../admin/js/vendor/xregexp/xregexp.js.gz | Bin 0 -> 60899 bytes .../xregexp/xregexp.min.b0439563a5d3.js | 160 + .../xregexp/xregexp.min.b0439563a5d3.js.gz | Bin 0 -> 37609 bytes .../admin/js/vendor/xregexp/xregexp.min.js | 160 + .../admin/js/vendor/xregexp/xregexp.min.js.gz | Bin 0 -> 37609 bytes .../static/css/style.19eb7cb9ea13.css | 277 + .../static/css/style.19eb7cb9ea13.css.gz | Bin 0 -> 1448 bytes GestionaleITS/gestionale/static/css/style.css | 316 + .../gestionale/static/css/style.css.gz | Bin 0 -> 1448 bytes .../sign_in_with_google.576a4c6b61cf.svg | 16 + .../sign_in_with_google.576a4c6b61cf.svg.gz | Bin 0 -> 7267 bytes .../static/images/sign_in_with_google.svg | 16 + .../static/images/sign_in_with_google.svg.gz | Bin 0 -> 7267 bytes .../xlogo-itsaltoadriatico.7e9f952c53fd.svg | 17 + ...xlogo-itsaltoadriatico.7e9f952c53fd.svg.gz | Bin 0 -> 2103 bytes .../static/images/xlogo-itsaltoadriatico.svg | 17 + .../images/xlogo-itsaltoadriatico.svg.gz | Bin 0 -> 2103 bytes .../static/js/script.d41d8cd98f00.js | 0 GestionaleITS/gestionale/static/js/script.js | 0 .../static/js/stopForm.b37b87fb64ab.js | 34 + .../static/js/stopForm.b37b87fb64ab.js.gz | Bin 0 -> 541 bytes .../gestionale/static/js/stopForm.js | 34 + .../gestionale/static/js/stopForm.js.gz | Bin 0 -> 541 bytes .../static/js/toggleFields.475830e32a84.js | 30 + .../static/js/toggleFields.475830e32a84.js.gz | Bin 0 -> 322 bytes .../gestionale/static/js/toggleFields.js | 30 + .../gestionale/static/js/toggleFields.js.gz | Bin 0 -> 322 bytes .../gestionale/static/staticfiles.json | 1 + .../gestionale/add/addaccessory.html | 27 + .../templates/gestionale/add/addbundle.html | 30 + .../templates/gestionale/add/addcourse.html | 28 + .../templates/gestionale/add/addserial.html | 30 + .../templates/gestionale/add/addsupplier.html | 29 + .../templates/gestionale/add/addticket.html | 27 + .../gestionale/assignment/assignment.html | 44 + .../assignment/assignment_accessory.html | 31 + .../assignment/assignment_computer.html | 31 + .../gestionale/templates/gestionale/base.html | 59 + .../gestionale/delete/deleteaccessory.html | 24 + .../gestionale/delete/deletebundle.html | 26 + .../gestionale/delete/deletecomputer.html | 23 + .../gestionale/delete/deletecourse.html | 25 + .../gestionale/delete/deletestudent.html | 29 + .../gestionale/delete/deletesupplier.html | 25 + .../gestionale/delete/deleteticket.html | 26 + .../gestionale/details/detailsbundle.html | 181 + .../gestionale/details/detailscourse.html | 103 + .../gestionale/details/detailsstudent.html | 169 + .../gestionale/details/detailsticket.html | 43 + .../gestionale/edit/editaccessory.html | 27 + .../templates/gestionale/edit/editbundle.html | 28 + .../gestionale/edit/editcomputer.html | 27 + .../templates/gestionale/edit/editcourse.html | 27 + .../gestionale/edit/editstudent.html | 27 + .../gestionale/edit/editsupplier.html | 27 + .../templates/gestionale/edit/editticket.html | 27 + .../templates/gestionale/importstudents.html | 28 + .../templates/gestionale/index.html | 26 + .../templates/gestionale/list/courses.html | 79 + .../templates/gestionale/list/storage.html | 80 + .../templates/gestionale/list/students.html | 72 + .../templates/gestionale/list/suppliers.html | 58 + .../templates/gestionale/list/tickets.html | 91 + .../gestionale/list/ticketsclosed.html | 91 + .../gestionale/reset/resetaccessory.html | 26 + .../gestionale/reset/resetcomputer.html | 26 + .../gestionale/studentview/studentview.html | 94 + .../studentview/studentviewcloseticket.html | 25 + .../studentview/studentviewcloseticket.html~ | 0 .../studentview/studentviewdetailsticket.html | 32 + .../studentview/studentviewedit.html | 31 + .../studentview/studentviewsubmitticket.html | 32 + .../studentview/studentviewtickets.html | 74 + .../templates/gestionale/studentviewbase.html | 37 + GestionaleITS/gestionale/tests.py | 3 + GestionaleITS/gestionale/urls.py | 72 + GestionaleITS/gestionale/views/views.py | 131 + GestionaleITS/gestionale/views/views_add.py | 229 + .../gestionale/views/views_assignment.py | 123 + .../gestionale/views/views_delete.py | 217 + .../gestionale/views/views_details.py | 62 + GestionaleITS/gestionale/views/views_edit.py | 240 + GestionaleITS/gestionale/views/views_list.py | 68 + GestionaleITS/gestionale/views/views_reset.py | 84 + .../gestionale/views/views_studentview.py | 133 + GestionaleITS/manage.py | 22 + GestionaleITS/requirements.txt | 23 + GestionaleITS/startup.sh | 34 + LICENSE | 373 + 620 files changed, 67495 insertions(+) create mode 100644 .gitignore create mode 100644 GestionaleITS/.dockerignore create mode 100644 GestionaleITS/GestionaleITS/__init__.py create mode 100644 GestionaleITS/GestionaleITS/asgi.py create mode 100644 GestionaleITS/GestionaleITS/settings.py create mode 100644 GestionaleITS/GestionaleITS/templates/account/base.html create mode 100644 GestionaleITS/GestionaleITS/templates/account/signup.html create mode 100644 GestionaleITS/GestionaleITS/templates/registration/base.html create mode 100644 GestionaleITS/GestionaleITS/templates/registration/login.html create mode 100644 GestionaleITS/GestionaleITS/urls.py create mode 100644 GestionaleITS/GestionaleITS/wsgi.py create mode 100644 GestionaleITS/Readme.md create mode 100644 GestionaleITS/__init__.py create mode 100644 GestionaleITS/accounts/__init__.py create mode 100644 GestionaleITS/accounts/admin.py create mode 100644 GestionaleITS/accounts/apps.py create mode 100644 GestionaleITS/accounts/migrations/__init__.py create mode 100644 GestionaleITS/accounts/models.py create mode 100644 GestionaleITS/accounts/templates/accounts/base.html create mode 100644 GestionaleITS/accounts/templates/accounts/registration.html create mode 100644 GestionaleITS/accounts/tests.py create mode 100644 GestionaleITS/accounts/urls.py create mode 100644 GestionaleITS/accounts/views.py create mode 100644 GestionaleITS/dockerfile create mode 100644 GestionaleITS/gestionale/__init__.py create mode 100644 GestionaleITS/gestionale/adapters.py create mode 100644 GestionaleITS/gestionale/admin.py create mode 100644 GestionaleITS/gestionale/apps.py create mode 100644 GestionaleITS/gestionale/forms.py create mode 100644 GestionaleITS/gestionale/migrations/0001_initial.py create mode 100644 GestionaleITS/gestionale/migrations/0002_ticket.py create mode 100644 GestionaleITS/gestionale/migrations/0003_ticket_closing_date.py create mode 100644 GestionaleITS/gestionale/migrations/0004_ticket_id_user_in_charge_alter_ticket_title.py create mode 100644 GestionaleITS/gestionale/migrations/0005_alter_record_prev_product_detail_and_more.py create mode 100644 GestionaleITS/gestionale/migrations/__init__.py create mode 100644 GestionaleITS/gestionale/models.py create mode 100644 GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css create mode 100644 GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/autocomplete.css create mode 100644 GestionaleITS/gestionale/static/admin/css/autocomplete.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/base.523eb49842a7.css create mode 100644 GestionaleITS/gestionale/static/admin/css/base.523eb49842a7.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/base.css create mode 100644 GestionaleITS/gestionale/static/admin/css/base.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/changelists.9237a1ac391b.css create mode 100644 GestionaleITS/gestionale/static/admin/css/changelists.9237a1ac391b.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/changelists.css create mode 100644 GestionaleITS/gestionale/static/admin/css/changelists.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/dark_mode.css create mode 100644 GestionaleITS/gestionale/static/admin/css/dark_mode.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css create mode 100644 GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/dashboard.css create mode 100644 GestionaleITS/gestionale/static/admin/css/dashboard.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/dashboard.e90f2068217b.css create mode 100644 GestionaleITS/gestionale/static/admin/css/dashboard.e90f2068217b.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/forms.c14e1cb06392.css create mode 100644 GestionaleITS/gestionale/static/admin/css/forms.c14e1cb06392.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/forms.css create mode 100644 GestionaleITS/gestionale/static/admin/css/forms.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css create mode 100644 GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/login.css create mode 100644 GestionaleITS/gestionale/static/admin/css/login.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css create mode 100644 GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/nav_sidebar.css create mode 100644 GestionaleITS/gestionale/static/admin/css/nav_sidebar.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive.css create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive_rtl.css create mode 100644 GestionaleITS/gestionale/static/admin/css/responsive_rtl.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css create mode 100644 GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/rtl.css create mode 100644 GestionaleITS/gestionale/static/admin/css/rtl.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/LICENSE-SELECT2.md create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/LICENSE-SELECT2.md.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.a2194c262648.css create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.a2194c262648.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.css create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.min.9f54e6414f87.css create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.min.9f54e6414f87.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.min.css create mode 100644 GestionaleITS/gestionale/static/admin/css/vendor/select2/select2.min.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/widgets.css create mode 100644 GestionaleITS/gestionale/static/admin/css/widgets.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/css/widgets.ee33ab26c7c2.css create mode 100644 GestionaleITS/gestionale/static/admin/css/widgets.ee33ab26c7c2.css.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/LICENSE create mode 100644 GestionaleITS/gestionale/static/admin/img/LICENSE.2c54f4e1ca1c create mode 100644 GestionaleITS/gestionale/static/admin/img/LICENSE.2c54f4e1ca1c.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/LICENSE.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/README.a70711a38d87.txt create mode 100644 GestionaleITS/gestionale/static/admin/img/README.a70711a38d87.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/README.txt create mode 100644 GestionaleITS/gestionale/static/admin/img/README.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/calendar-icons.39b290681a8b.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/calendar-icons.39b290681a8b.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/calendar-icons.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/calendar-icons.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_off.7a23bf31ef8a.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_off.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_off.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_on.0047eba25b67.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_on.0047eba25b67.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_on.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/gis/move_vertex_on.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-addlink.d519b3bab011.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-addlink.d519b3bab011.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-addlink.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-addlink.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-alert.034cc7d8a67f.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-alert.034cc7d8a67f.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-alert.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-alert.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-calendar.ac7aea671bea.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-calendar.ac7aea671bea.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-calendar.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-calendar.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-changelink.18d2fd706348.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-changelink.18d2fd706348.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-changelink.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-changelink.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-clock.e1d4dfac3f2b.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-clock.e1d4dfac3f2b.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-clock.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-clock.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-deletelink.564ef9dc3854.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-deletelink.564ef9dc3854.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-deletelink.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-deletelink.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-no.439e821418cd.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-no.439e821418cd.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-no.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-no.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown-alt.81536e128bb6.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown-alt.81536e128bb6.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown-alt.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown-alt.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown.a18cb4398978.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown.a18cb4398978.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-unknown.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-viewlink.41eb31f7826e.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-viewlink.41eb31f7826e.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-viewlink.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-viewlink.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-yes.d2f9f035226a.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-yes.d2f9f035226a.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-yes.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/icon-yes.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/inline-delete.fec1b761f254.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/inline-delete.fec1b761f254.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/inline-delete.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/inline-delete.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/search.7cf54ff789c6.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/search.7cf54ff789c6.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/search.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/search.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/selector-icons.b4555096cea2.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/selector-icons.b4555096cea2.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/selector-icons.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/selector-icons.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/sorting-icons.3a097b59f104.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/sorting-icons.3a097b59f104.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/sorting-icons.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/sorting-icons.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-add.e59d620a9742.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-add.e59d620a9742.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-add.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-add.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-arrowright.bbfb788a849e.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-arrowright.bbfb788a849e.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-arrowright.svg create mode 100644 GestionaleITS/gestionale/static/admin/img/tooltag-arrowright.svg.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectBox.7d3ce5a98007.js create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectBox.7d3ce5a98007.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectBox.js create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectBox.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectFilter2.bdb8d0cc579e.js create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectFilter2.bdb8d0cc579e.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectFilter2.js create mode 100644 GestionaleITS/gestionale/static/admin/js/SelectFilter2.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/actions.eac7e3441574.js create mode 100644 GestionaleITS/gestionale/static/admin/js/actions.eac7e3441574.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/actions.js create mode 100644 GestionaleITS/gestionale/static/admin/js/actions.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/DateTimeShortcuts.js create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/DateTimeShortcuts.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/RelatedObjectLookups.8609f99b9ab2.js create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/RelatedObjectLookups.8609f99b9ab2.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/RelatedObjectLookups.js create mode 100644 GestionaleITS/gestionale/static/admin/js/admin/RelatedObjectLookups.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/autocomplete.01591ab27be7.js create mode 100644 GestionaleITS/gestionale/static/admin/js/autocomplete.01591ab27be7.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/autocomplete.js create mode 100644 GestionaleITS/gestionale/static/admin/js/autocomplete.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/calendar.f8a5d055eb33.js create mode 100644 GestionaleITS/gestionale/static/admin/js/calendar.f8a5d055eb33.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/calendar.js create mode 100644 GestionaleITS/gestionale/static/admin/js/calendar.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/cancel.ecc4c5ca7b32.js create mode 100644 GestionaleITS/gestionale/static/admin/js/cancel.ecc4c5ca7b32.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/cancel.js create mode 100644 GestionaleITS/gestionale/static/admin/js/cancel.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/change_form.9d8ca4f96b75.js create mode 100644 GestionaleITS/gestionale/static/admin/js/change_form.9d8ca4f96b75.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/change_form.js create mode 100644 GestionaleITS/gestionale/static/admin/js/change_form.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/collapse.f84e7410290f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/collapse.f84e7410290f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/collapse.js create mode 100644 GestionaleITS/gestionale/static/admin/js/collapse.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/core.cf103cd04ebf.js create mode 100644 GestionaleITS/gestionale/static/admin/js/core.cf103cd04ebf.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/core.js create mode 100644 GestionaleITS/gestionale/static/admin/js/core.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/filters.0e360b7a9f80.js create mode 100644 GestionaleITS/gestionale/static/admin/js/filters.0e360b7a9f80.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/filters.js create mode 100644 GestionaleITS/gestionale/static/admin/js/filters.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/inlines.22d4d93c00b4.js create mode 100644 GestionaleITS/gestionale/static/admin/js/inlines.22d4d93c00b4.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/inlines.js create mode 100644 GestionaleITS/gestionale/static/admin/js/inlines.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/jquery.init.b7781a0897fc.js create mode 100644 GestionaleITS/gestionale/static/admin/js/jquery.init.b7781a0897fc.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/jquery.init.js create mode 100644 GestionaleITS/gestionale/static/admin/js/jquery.init.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/nav_sidebar.3b9190d420b1.js create mode 100644 GestionaleITS/gestionale/static/admin/js/nav_sidebar.3b9190d420b1.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/nav_sidebar.js create mode 100644 GestionaleITS/gestionale/static/admin/js/nav_sidebar.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/popup_response.c6cc78ea5551.js create mode 100644 GestionaleITS/gestionale/static/admin/js/popup_response.c6cc78ea5551.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/popup_response.js create mode 100644 GestionaleITS/gestionale/static/admin/js/popup_response.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate.bd2361dfd64d.js create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate.bd2361dfd64d.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate.js create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate_init.6cac7f3105b8.js create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate_init.6cac7f3105b8.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate_init.js create mode 100644 GestionaleITS/gestionale/static/admin/js/prepopulate_init.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/theme.ab270f56bb9c.js create mode 100644 GestionaleITS/gestionale/static/admin/js/theme.ab270f56bb9c.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/theme.js create mode 100644 GestionaleITS/gestionale/static/admin/js/theme.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/urlify.ae970a820212.js create mode 100644 GestionaleITS/gestionale/static/admin/js/urlify.ae970a820212.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/urlify.js create mode 100644 GestionaleITS/gestionale/static/admin/js/urlify.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/LICENSE.txt create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/LICENSE.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.0208b96062ba.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.0208b96062ba.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.min.641dd1437010.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.min.641dd1437010.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.min.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/jquery/jquery.min.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/LICENSE.f94142512c91.md create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/LICENSE.f94142512c91.md.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/LICENSE.md create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/LICENSE.md.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/af.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/af.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ar.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ar.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/az.270c257daf81.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/az.270c257daf81.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/az.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/az.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bg.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bg.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bn.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bn.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bs.91624382358e.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bs.91624382358e.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bs.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/bs.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ca.a166b745933a.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ca.a166b745933a.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ca.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ca.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/cs.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/cs.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/da.766346afe4dd.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/da.766346afe4dd.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/da.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/da.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/de.8a1c222b0204.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/de.8a1c222b0204.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/de.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/de.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/dsb.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/dsb.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/el.27097f071856.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/el.27097f071856.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/el.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/el.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/en.cf932ba09a98.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/en.cf932ba09a98.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/en.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/en.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/es.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/es.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/et.2b96fd98289d.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/et.2b96fd98289d.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/et.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/et.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/eu.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/eu.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fa.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fa.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fi.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fi.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fr.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/fr.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/gl.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/gl.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/he.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/he.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hi.70640d41628f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hi.70640d41628f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hi.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hi.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hr.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hr.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hsb.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hsb.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hu.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hu.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hy.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/hy.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/id.04debded514d.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/id.04debded514d.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/id.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/id.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/is.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/is.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/it.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/it.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ja.170ae885d74f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ja.170ae885d74f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ja.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ja.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ka.2083264a54f0.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ka.2083264a54f0.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ka.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ka.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/km.c23089cb06ca.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/km.c23089cb06ca.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/km.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/km.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ko.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ko.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lt.23c7ce903300.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lt.23c7ce903300.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lt.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lt.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lv.08e62128eac1.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lv.08e62128eac1.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lv.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/lv.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/mk.dabbb9087130.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/mk.dabbb9087130.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/mk.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/mk.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ms.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ms.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nb.da2fce143f27.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nb.da2fce143f27.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nb.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nb.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ne.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ne.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nl.997868a37ed8.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nl.997868a37ed8.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nl.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/nl.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pl.6031b4f16452.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pl.6031b4f16452.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pl.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pl.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ps.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ps.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt-BR.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt-BR.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/pt.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ro.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ro.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ru.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/ru.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sk.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sk.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sl.131a78bc0752.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sl.131a78bc0752.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sl.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sl.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sq.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sq.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr-Cyrl.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr-Cyrl.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sr.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sv.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/sv.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/th.f38c20b0221b.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/th.f38c20b0221b.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/th.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/th.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tk.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tk.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tr.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/tr.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/uk.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/uk.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/vi.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/vi.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-CN.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-CN.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-TW.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/i18n/zh-TW.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.c2afdeda3058.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.c2afdeda3058.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.min.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/select2/select2.full.min.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/LICENSE.txt create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/LICENSE.txt.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.efda034b9537.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.efda034b9537.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js.gz create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.min.js create mode 100644 GestionaleITS/gestionale/static/admin/js/vendor/xregexp/xregexp.min.js.gz create mode 100644 GestionaleITS/gestionale/static/css/style.19eb7cb9ea13.css create mode 100644 GestionaleITS/gestionale/static/css/style.19eb7cb9ea13.css.gz create mode 100644 GestionaleITS/gestionale/static/css/style.css create mode 100644 GestionaleITS/gestionale/static/css/style.css.gz create mode 100644 GestionaleITS/gestionale/static/images/sign_in_with_google.576a4c6b61cf.svg create mode 100644 GestionaleITS/gestionale/static/images/sign_in_with_google.576a4c6b61cf.svg.gz create mode 100644 GestionaleITS/gestionale/static/images/sign_in_with_google.svg create mode 100644 GestionaleITS/gestionale/static/images/sign_in_with_google.svg.gz create mode 100644 GestionaleITS/gestionale/static/images/xlogo-itsaltoadriatico.7e9f952c53fd.svg create mode 100644 GestionaleITS/gestionale/static/images/xlogo-itsaltoadriatico.7e9f952c53fd.svg.gz create mode 100644 GestionaleITS/gestionale/static/images/xlogo-itsaltoadriatico.svg create mode 100644 GestionaleITS/gestionale/static/images/xlogo-itsaltoadriatico.svg.gz create mode 100644 GestionaleITS/gestionale/static/js/script.d41d8cd98f00.js create mode 100644 GestionaleITS/gestionale/static/js/script.js create mode 100644 GestionaleITS/gestionale/static/js/stopForm.b37b87fb64ab.js create mode 100644 GestionaleITS/gestionale/static/js/stopForm.b37b87fb64ab.js.gz create mode 100644 GestionaleITS/gestionale/static/js/stopForm.js create mode 100644 GestionaleITS/gestionale/static/js/stopForm.js.gz create mode 100644 GestionaleITS/gestionale/static/js/toggleFields.475830e32a84.js create mode 100644 GestionaleITS/gestionale/static/js/toggleFields.475830e32a84.js.gz create mode 100644 GestionaleITS/gestionale/static/js/toggleFields.js create mode 100644 GestionaleITS/gestionale/static/js/toggleFields.js.gz create mode 100644 GestionaleITS/gestionale/static/staticfiles.json create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addaccessory.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addbundle.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addcourse.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addserial.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addsupplier.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/add/addticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/assignment/assignment.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/assignment/assignment_accessory.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/assignment/assignment_computer.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/base.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deleteaccessory.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deletebundle.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deletecomputer.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deletecourse.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deletestudent.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deletesupplier.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/delete/deleteticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/details/detailsbundle.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/details/detailscourse.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/details/detailsstudent.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/details/detailsticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editaccessory.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editbundle.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editcomputer.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editcourse.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editstudent.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editsupplier.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/edit/editticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/importstudents.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/index.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/courses.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/storage.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/students.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/suppliers.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/tickets.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/list/ticketsclosed.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/reset/resetaccessory.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/reset/resetcomputer.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentview.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewcloseticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewcloseticket.html~ create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewdetailsticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewedit.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewsubmitticket.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentview/studentviewtickets.html create mode 100644 GestionaleITS/gestionale/templates/gestionale/studentviewbase.html create mode 100644 GestionaleITS/gestionale/tests.py create mode 100644 GestionaleITS/gestionale/urls.py create mode 100644 GestionaleITS/gestionale/views/views.py create mode 100644 GestionaleITS/gestionale/views/views_add.py create mode 100644 GestionaleITS/gestionale/views/views_assignment.py create mode 100644 GestionaleITS/gestionale/views/views_delete.py create mode 100644 GestionaleITS/gestionale/views/views_details.py create mode 100644 GestionaleITS/gestionale/views/views_edit.py create mode 100644 GestionaleITS/gestionale/views/views_list.py create mode 100644 GestionaleITS/gestionale/views/views_reset.py create mode 100644 GestionaleITS/gestionale/views/views_studentview.py create mode 100755 GestionaleITS/manage.py create mode 100644 GestionaleITS/requirements.txt create mode 100755 GestionaleITS/startup.sh create mode 100644 LICENSE diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6160e15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,167 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +GestionaleITS/.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +GestionaleITS/media +*.env +*.sqlite3 +docker-compose.yaml diff --git a/GestionaleITS/.dockerignore b/GestionaleITS/.dockerignore new file mode 100644 index 0000000..cb7604b --- /dev/null +++ b/GestionaleITS/.dockerignore @@ -0,0 +1,7 @@ +.idea +.venv +.gitignore +*.env +*.sqlite3 +docker-compose.yaml +dockerfile \ No newline at end of file diff --git a/GestionaleITS/GestionaleITS/__init__.py b/GestionaleITS/GestionaleITS/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/GestionaleITS/asgi.py b/GestionaleITS/GestionaleITS/asgi.py new file mode 100644 index 0000000..9001121 --- /dev/null +++ b/GestionaleITS/GestionaleITS/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for GestionaleITS project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GestionaleITS.settings') + +application = get_asgi_application() diff --git a/GestionaleITS/GestionaleITS/settings.py b/GestionaleITS/GestionaleITS/settings.py new file mode 100644 index 0000000..a6f15fd --- /dev/null +++ b/GestionaleITS/GestionaleITS/settings.py @@ -0,0 +1,220 @@ +# 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/. + +""" +Django settings for GestionaleITS project. + +Generated by 'django-admin startproject' using Django 4.2.15. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.2/ref/settings/ +""" +import os.path +import environ +from pathlib import Path + +from django.conf.global_settings import DATABASES + +env = environ.Env( + # set casting, default value + DEBUG=(bool, False) +) + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +environ.Env.read_env(os.path.join(BASE_DIR, '.env')) +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = env("SECRET_KEY", default="django-insecure-)fmj5^(30h+oh*5efj=bncn(-x&*4pyho3c&(ls=x0#odrscme") + +SECURE_SSL_REDIRECT = False + +SESSION_COOKIE_SECURE = not(env("DEBUG")) + +CSRF_COOKIE_SECURE = not(env("DEBUG")) + +CSRF_TRUSTED_ORIGINS = [f"https://{env('SERVER_ADDRESS')}"] + ["http://127.0.0.1"] + +SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTOCOL", "https") + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = env("DEBUG") + +ALLOWED_HOSTS = [f"{f"{env('SERVER_ADDRESS')}".split(':', 1).pop(0)}"] + ["127.0.0.1"] + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'allauth', + 'allauth.account', + "allauth.socialaccount", + "allauth.socialaccount.providers.google", + "gestionale", + "accounts", +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + "whitenoise.middleware.WhiteNoiseMiddleware", + "allauth.account.middleware.AccountMiddleware", +] + +SOCIALACCOUNT_PROVIDERS = { + 'google': { + 'SCOPE': [ + 'profile', + 'email', + ], + 'AUTH_PARAMS': { + 'access_type': 'online', + }, + 'OAUTH_PKCE_ENABLED': True, + # For each OAuth based provider, either add a ``SocialApp`` + # (``socialaccount`` app) containing the required client + # credentials, or list them here: + 'APP': { + 'client_id': env("GOOGLE_CLIENT_ID"), + 'secret': env("GOOGLE_SECRET"), + 'key': env("GOOGLE_KEY") + } + } +} + +ROOT_URLCONF = 'GestionaleITS.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [BASE_DIR / "GestionaleITS/templates"], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'GestionaleITS.wsgi.application' + + +AUTHENTICATION_BACKENDS = [ + # Needed to login by username in Django admin, regardless of `allauth` + 'django.contrib.auth.backends.ModelBackend', + + # `allauth` specific authentication methods, such as login by email + 'allauth.account.auth_backends.AuthenticationBackend', +] + + +# Database +# https://docs.djangoproject.com/en/4.2/ref/settings/#databases +if DEBUG: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } + } +else: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': env("DB_NAME"), + 'USER': env("DB_USER"), + 'PASSWORD': env("DB_PASS"), + 'HOST': env("DB_HOST"), + 'PORT': env("DB_PORT"), + } + } + + +# Password validation +# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.2/topics/i18n/ + +LANGUAGE_CODE = 'it-it' + +TIME_ZONE = 'Europe/Rome' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.2/howto/static-files/ + +STATIC_URL = 'static/' + +STATIC_ROOT = BASE_DIR / "gestionale/static" + +STORAGES = { + "default": { + "BACKEND": "django.core.files.storage.FileSystemStorage", + }, + "staticfiles": { + "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", + }, +} +# Default primary key field type +# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +LOGIN_REDIRECT_URL = "/" + +LOGOUT_REDIRECT_URL = "/accounts/login" + +MEDIA_ROOT = env("MEDIA_ROOT") +MEDIA_URL = "/media/" + +DATE_INPUT_FORMATS = ['%d/%m/%Y'] +DATE_FORMAT = 'd/m/Y' + +SOCIALACCOUNT_ADAPTER = "gestionale.adapters.GoogleSocialAdapterStudents" + +#fix registration tab +REGISTRATION_OPEN = False +SOCIALACCOUNT_LOGIN_ON_GET = True diff --git a/GestionaleITS/GestionaleITS/templates/account/base.html b/GestionaleITS/GestionaleITS/templates/account/base.html new file mode 100644 index 0000000..e2958f7 --- /dev/null +++ b/GestionaleITS/GestionaleITS/templates/account/base.html @@ -0,0 +1,16 @@ + + + + + + + + Index + + + {% block content %} + {% endblock %} + + \ No newline at end of file diff --git a/GestionaleITS/GestionaleITS/templates/account/signup.html b/GestionaleITS/GestionaleITS/templates/account/signup.html new file mode 100644 index 0000000..63fdb75 --- /dev/null +++ b/GestionaleITS/GestionaleITS/templates/account/signup.html @@ -0,0 +1,10 @@ + + + +{% extends "account/base.html" %} +{% block content %} +

Le registrazioni non sono abilitate

+ Ritorna al Login +{% endblock %} \ No newline at end of file diff --git a/GestionaleITS/GestionaleITS/templates/registration/base.html b/GestionaleITS/GestionaleITS/templates/registration/base.html new file mode 100644 index 0000000..022271d --- /dev/null +++ b/GestionaleITS/GestionaleITS/templates/registration/base.html @@ -0,0 +1,21 @@ + + + + +{% load static %} + + + + Index + + + + +
+ {% block content %} + {% endblock %} +
+ + diff --git a/GestionaleITS/GestionaleITS/templates/registration/login.html b/GestionaleITS/GestionaleITS/templates/registration/login.html new file mode 100644 index 0000000..f6a1844 --- /dev/null +++ b/GestionaleITS/GestionaleITS/templates/registration/login.html @@ -0,0 +1,31 @@ + + + +{% extends "registration/base.html" %} +{% load socialaccount %} +{% load static %} +{% block content %} +
+ +

Login

+ +
+ {% csrf_token %} +
+ {{ form }} +
+
+ + + + +
+
+
+{% endblock %} diff --git a/GestionaleITS/GestionaleITS/urls.py b/GestionaleITS/GestionaleITS/urls.py new file mode 100644 index 0000000..2d6a870 --- /dev/null +++ b/GestionaleITS/GestionaleITS/urls.py @@ -0,0 +1,31 @@ +# 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/. + +""" +URL configuration for GestionaleITS project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + path('admin/', admin.site.urls), + path("accounts/", include("django.contrib.auth.urls")), + path("accounts/", include("accounts.urls")), + path('accounts/', include('allauth.urls')), + path("", include("gestionale.urls")), +] diff --git a/GestionaleITS/GestionaleITS/wsgi.py b/GestionaleITS/GestionaleITS/wsgi.py new file mode 100644 index 0000000..993c68b --- /dev/null +++ b/GestionaleITS/GestionaleITS/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for GestionaleITS project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'GestionaleITS.settings') + +application = get_wsgi_application() diff --git a/GestionaleITS/Readme.md b/GestionaleITS/Readme.md new file mode 100644 index 0000000..bde245f --- /dev/null +++ b/GestionaleITS/Readme.md @@ -0,0 +1,90 @@ +# Dependences + +- python 3 +- pip + +`pip install -r requirements.txt` + +# Example of .env needs to be mounted in docker compose file + +``` +DEBUG= (True or False) +DJANGO_SUPERUSER_USERNAME= (username of superuser) +DJANGO_SUPERUSER_PASSWORD= (password of superuser) +DJANGO_SUPERUSER_EMAIL= (email of superuser) +SECRET_KEY= (django secret key at least 30 characters and 5 simbols and numbers) +SERVER_ADDRESS= (url of hosting for the app) +DB_NAME= (name of db) +DB_USER= (username of db) +DB_PASS= (password of db) +DB_HOST= (ip/url of db host) +DB_PORT= (db port) +MEDIA_ROOT= (path for medias) +GOOGLE_CLIENT_ID= (Google Client ID from the google cloud console) +GOOGLE_SECRET= (Google Secret from google cloud console) +GOOGLE_KEY= (generally empty) +``` + +# Docker Compose example + +```yaml + services: + gestionale: + image: nastroa/gestionaleits:release + restart: always + volumes: + - path/to/media/folder:/gestionale/media + - path/to/env/file:/gestionale/.env + environment: + - PORT=8000 + - BUILD=false #if true creates the superuser, if already done please set it false + expose: + - "8000" #must match with env port + - "8000/udp" + networks: + - nginx + depends_on: + - db + - nginx + db: + image: postgres + restart: always + volumes: + - path/to/postgres/data:/var/lib/postgresql/data/pgdata + environment: + POSTGRES_DB: #db name + POSTGRES_PASSWORD: #db password + PGDATA: /var/lib/postgresql/data/pgdata + expose: + - "5432" + networks: + - nginx + nginx: + image: nginx:stable + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - path/to/nginx/conf:/etc/nginx/nginx.conf + - path/to/certificate/generated/with/certbot:/etc/nginx/cert.crt + - path/to/key/generated/with/certbot:/etc/nginx/cert.key + networks: + - nginx +networks: + nginx: + external: true +``` + +# TODO + +- Tables Sorting with filters + +# Licence + +This project is under the MPL 2.0 + +If you want to contribute insert in every file this header: +> 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/. diff --git a/GestionaleITS/__init__.py b/GestionaleITS/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/accounts/__init__.py b/GestionaleITS/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/accounts/admin.py b/GestionaleITS/accounts/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/GestionaleITS/accounts/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/GestionaleITS/accounts/apps.py b/GestionaleITS/accounts/apps.py new file mode 100644 index 0000000..3e3c765 --- /dev/null +++ b/GestionaleITS/accounts/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'accounts' diff --git a/GestionaleITS/accounts/migrations/__init__.py b/GestionaleITS/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/accounts/models.py b/GestionaleITS/accounts/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/GestionaleITS/accounts/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/GestionaleITS/accounts/templates/accounts/base.html b/GestionaleITS/accounts/templates/accounts/base.html new file mode 100644 index 0000000..591eec5 --- /dev/null +++ b/GestionaleITS/accounts/templates/accounts/base.html @@ -0,0 +1,15 @@ + + + + + Index + + + + +
+ {% block content %} + {% endblock %} +
+ + \ No newline at end of file diff --git a/GestionaleITS/accounts/templates/accounts/registration.html b/GestionaleITS/accounts/templates/accounts/registration.html new file mode 100644 index 0000000..8f719ef --- /dev/null +++ b/GestionaleITS/accounts/templates/accounts/registration.html @@ -0,0 +1,9 @@ +{% extends "accounts/base.html" %} + +{% block content %} +
+ {% csrf_token %} + {{ form }}
+ +
+{% endblock %} \ No newline at end of file diff --git a/GestionaleITS/accounts/tests.py b/GestionaleITS/accounts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/GestionaleITS/accounts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/GestionaleITS/accounts/urls.py b/GestionaleITS/accounts/urls.py new file mode 100644 index 0000000..51f143c --- /dev/null +++ b/GestionaleITS/accounts/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from .views import RegistrationView + +urlpatterns = [ + path("registration", RegistrationView.as_view(), name="registration" ) +] \ No newline at end of file diff --git a/GestionaleITS/accounts/views.py b/GestionaleITS/accounts/views.py new file mode 100644 index 0000000..df81045 --- /dev/null +++ b/GestionaleITS/accounts/views.py @@ -0,0 +1,12 @@ +from django.contrib.auth.forms import UserCreationForm +from django.shortcuts import render +from django.urls import reverse_lazy +from django.views.generic import CreateView + + +# Create your views here. + +class RegistrationView(CreateView): + form_class = UserCreationForm + success_url = reverse_lazy("login") + template_name = "accounts/registration.html" \ No newline at end of file diff --git a/GestionaleITS/dockerfile b/GestionaleITS/dockerfile new file mode 100644 index 0000000..1976e0e --- /dev/null +++ b/GestionaleITS/dockerfile @@ -0,0 +1,24 @@ +# 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 python:3.12.6-alpine3.20 + +ENV PORT=8000 + +ENV BUILD="false" + +WORKDIR /gestionale + +COPY requirements.txt . + +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE ${PORT} + +RUN chmod a+x ./startup.sh + +CMD ["/bin/sh", "-c", "./startup.sh"] diff --git a/GestionaleITS/gestionale/__init__.py b/GestionaleITS/gestionale/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/gestionale/adapters.py b/GestionaleITS/gestionale/adapters.py new file mode 100644 index 0000000..80e2671 --- /dev/null +++ b/GestionaleITS/gestionale/adapters.py @@ -0,0 +1,22 @@ +from allauth.socialaccount.adapter import DefaultSocialAccountAdapter +from django.contrib.auth.models import Group + +class GoogleSocialAdapterStudents(DefaultSocialAccountAdapter): + def save_user(self, request, sociallogin, form=None): + + user = super().save_user(request, sociallogin, form) + + try: + group = Group.objects.get(name='student') + user.groups.add(group) + except Group.DoesNotExist: + group, created = Group.objects.get_or_create(name="student") + if created: + user.groups.add(group) + else: + print("C'é stato un errore nella creazione del gruppo") + + # Salva l'utente con il gruppo assegnato + user.save() + + return user diff --git a/GestionaleITS/gestionale/admin.py b/GestionaleITS/gestionale/admin.py new file mode 100644 index 0000000..4ab0a30 --- /dev/null +++ b/GestionaleITS/gestionale/admin.py @@ -0,0 +1,30 @@ +from django.contrib import admin + +from .models import Bundle, Supplier, Course, Student, Computer, Accessory + + +# Register your models here. + +@admin.register(Bundle) +class BundleAdmin(admin.ModelAdmin): + ... + +@admin.register(Supplier) +class SupplierAdmin(admin.ModelAdmin): + ... + +@admin.register(Course) +class CourseAdmin(admin.ModelAdmin): + ... + +@admin.register(Student) +class StudentAdmin(admin.ModelAdmin): + ... + +@admin.register(Computer) +class ComputerAdmin(admin.ModelAdmin): + ... + +@admin.register(Accessory) +class AccessoryAdmin(admin.ModelAdmin): + ... \ No newline at end of file diff --git a/GestionaleITS/gestionale/apps.py b/GestionaleITS/gestionale/apps.py new file mode 100644 index 0000000..b30ff69 --- /dev/null +++ b/GestionaleITS/gestionale/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class GestionaleConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'gestionale' diff --git a/GestionaleITS/gestionale/forms.py b/GestionaleITS/gestionale/forms.py new file mode 100644 index 0000000..8f2a57d --- /dev/null +++ b/GestionaleITS/gestionale/forms.py @@ -0,0 +1,301 @@ +# 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, timedelta +from django import forms +from django.forms import SelectDateWidget, ModelForm, formset_factory, BaseFormSet +from .models import Supplier, Bundle, Computer, Accessory, Course, Student, Record, validate_image, StudentViewEditModel, Ticket + + +class BundleForm(forms.ModelForm): + type_choices = ( + ("", "Selezionare il tipo di prodotto"), + ("Accessory", "Accessorio"), + ("Computer", "Computer") + ) + product_type = forms.ChoiceField(choices=type_choices, initial="") + delivery_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now().date() ) + class Meta: + model = Bundle + fields = "__all__" + + labels = { + "product_type": "Tipo Prodotto", + "product_name": "Nome Prodotto", + "qt": "Qt", + "qt_available": "Qt. Disponibile", + "notes": "Note", + "brand": "Brand", + "line": "Linea", + "cpu": "Cpu", + "ram": "Ram", + "storage_size": "Dimensione Storage", + "price": "Prezzo", + "delivery_date": "Data di consegna", + "supplier_id": "Fornitore", + "is_deleted": "È cancellato?" + } + + widgets = { + "delivery_date": forms.SelectDateWidget() + } + + +class BaseSerialFormSet(BaseFormSet): + def clean(self): + super().clean() + + values = [] + for form in self.forms: + if form.is_valid(): + form_value = form.cleaned_data.get("serial") + if form_value: + values.append(form_value) + + if len(values) != len(set(values)): + raise forms.ValidationError("I valori devono essere univoci") + else: + return True + +class SerialForm(forms.ModelForm): + serial = forms.CharField(max_length=255) + + class Meta: + model = Computer + fields = ["serial"] + labels = { + "serial": "Seriale" + } + + +SerialFormSet = formset_factory(SerialForm, formset=BaseSerialFormSet, extra=0) + + +class SupplierForm(forms.ModelForm): + class Meta: + model = Supplier + fields = "__all__" + labels = { + "supplier_name": "Nome", + "supplier_address": "Indirizzo", + "supplier_phone": "Telefono", + "supplier_email": "Email", + "partita_iva": "Partita IVA", + "codice_societa": "Codice Società" + } + + +class ComputerForm(forms.ModelForm): + class Meta: + model = Computer + fields = "__all__" + labels = { + "id_student": "Studente", + "id_bundle": "Bundle", + "status": "Status", + "assignment_date": "Data di assegnazione", + "assignment_motivation": "Motivazione di assegnazione", + "return_date": "Data di restituzione", + "return_motivation": "Motivazione di restituzione", + "eol": "Eol", + "eol_date": "Data di eol", + "notes": "Note", + "cespite": "Cespite", + "serial": "Seriale" + } + + +class AccessoryForm(forms.ModelForm): + class Meta: + model = Accessory + fields = ["name", "description", "notes"] + labels = { + "name": "Nome Prodotto", + "description": "Descrizione", + "notes": "Note" + } + + +class EditAccessoryForm(forms.ModelForm): + class Meta: + model = Accessory + fields = "__all__" + labels = { + "name": "Nome Prodotto", + "description": "Descrizione", + "id_student": "Studente", + "id_bundle": "Bundle", + "status": "Status", + "assignment_date": "Data di assegnazione", + "assignment_motivation": "Motivazione di assegnazione", + "return_date": "Data di restituzione", + "return_motivation": "Motivazione di restituzione", + "notes": "Note", + } + exclude = [ + "assignment_date", + "assignment_motivation", + "return_date", + "return_motivation" + ] + + +class CSVUpdateForm(forms.Form): + file = forms.FileField(label="Seleziona un file CSV") + +class CourseForm(forms.ModelForm): + class Meta: + model = Course + fields = "__all__" + labels = { + "course_name": "Nome Corso", + "course_name_extended": "Nome Corso esteso", + "course_code": "Codice Corso", + "course_year": "Anno Corso", + "student_number": "Numero Studenti", + "course_location": "Posizione Corso", + "course_status": "Status Corso" + } + + +class ResignationForm(forms.ModelForm): + + resignation_date = forms.DateField(widget=SelectDateWidget(), label="Data di Dimissioni:", initial=datetime.now().date()) + class Meta: + model = Student + fields = ["resignation_date"] + + +class StudentForm(forms.ModelForm): + class Meta: + model = Student + fields= "__all__" + labels= { + "first_name": "Nome", + "last_name": "Cognome", + "course_name": "Nome Corso", + "gender": "Sesso", + "profile_image": "Immagine Profilo", + "id_student_course": "Id Studente Corso", + "codice_fiscale": "Codice Fiscale", + "course_acronym": "Sigla Corso", + "course_code": "Codice Corso", + "email_user": "Email Studente", + "phone_number": "Numero di Telefono", + "municipality_residence": "Comune di Residenza", + "province_residence": "Provincia di Residenza", + "student_status": "Status Studente", + "course_status": "Status Corso", + "course_year": "Anno Corso", + "birth_date": "Data di Nascita", + "municipality_birth": "Comune di Nascita", + "province_birth": "Provincia di Nascita", + "resignation_date": "Data di Dimissioni", + "nation_birth": "Nazione di Nascita", + "course_id": "Corso" + } + exclude = ["course_acronym", "course_code", "course_status", "course_year", "course_name"] + + +class AssignmentComputerForm(forms.Form): + choice= ( + ("", "Seleziona il motivo"), + ("deposit_paid", "Pagamento Effettuato"), + ("replacement", "Sostitutivo"), + ("temporary", "Temporaneo") + ) + course_code = forms.CharField(label="Codice Corso", max_length=255) + codice_fiscale = forms.CharField(label="Codice Fiscale", max_length=255) + cespite = forms.CharField(label="Cespite", max_length=255) + serial = forms.CharField(label="Seriale", max_length=255) + assignment_date = forms.DateField(widget=SelectDateWidget(), label="Data di assegnazione", initial=datetime.now().date) + assignment_motivation = forms.ChoiceField(choices=choice) + +class AssignmentAccessoryForm(forms.Form): + choice= ( + ("", "Seleziona il motivo"), + ("needed", "Necessario"), + ("replacement", "Sostitutivo"), + ("temporary", "Temporaneo") + ) + course_code = forms.CharField(label="Codice Corso", max_length=255) + codice_fiscale = forms.CharField(label="Codice Fiscale", max_length=255) + id = forms.IntegerField() + assignment_date = forms.DateField(widget=SelectDateWidget(), label="Data di assegnazione", initial=datetime.now().date) + assignment_motivation = forms.ChoiceField(choices=choice) + +class ReturnComputerDateForm(forms.Form): + choice = ( + ("", "Seleziona il motivo"), + ("student_resigned", "Studente Dimesso"), + ("damaged", "Danneggiato"), + ("not_necessary", "Non più necessario") + ) + return_date = forms.DateField(widget=SelectDateWidget(), label="Data di ritorno", initial=datetime.now().date) + return_motivation = forms.ChoiceField(choices=choice) + +class ReturnAccessoryDateForm(forms.Form): + choice = ( + ("", "Seleziona il motivo"), + ("not_necessary", "Non più necessario"), + ("damaged", "Danneggiato"), + ) + return_date = forms.DateField(widget=SelectDateWidget(), label="Data di ritorno", initial=datetime.now().date) + return_motivation = forms.ChoiceField(choices=choice) + +class StudentViewEditForm(forms.ModelForm): + class Meta: + model = StudentViewEditModel + fields = "__all__" + labels = { + "profile_image": "Immagine Profilo" + } + +class TicketForm(forms.ModelForm): + submit_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now().date(), label="Data del Ticket") + id_student = forms.ModelChoiceField(Student.objects.order_by("course_id_id")) + class Meta: + model = Ticket + fields = "__all__" + labels = { + "title": "Titolo del Ticket", + "content": "Contenuto del Ticket", + "id_student": "Studente", + "submit_date": "Data del Ticket", + "id_user_in_charge" : "Utente Staff assegnato" + } + exclude = ["is_closed", "closing_date"] + +class TicketCompleteForm(forms.ModelForm): + submit_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now().date(), label="Data del Ticket") + closing_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now().date(), label="Data di Chiusura") + id_student = forms.ModelChoiceField(Student.objects.order_by("course_acronym"), label="Studente") + class Meta: + model = Ticket + fields = "__all__" + labels = { + "title": "Titolo del Ticket", + "content": "Contenuto del Ticket", + "id_student": "Studente", + "submit_date": "Data del Ticket", + "closing_date": "Data di chiusura Ticket", + "is_closed": "É Chiuso?", + "id_user_in_charge": "Utente Staff assegnato" + } + +class StudentViewSubmitTicketForm(forms.ModelForm): + submit_date = forms.DateField(widget=SelectDateWidget(), initial=datetime.now().date(), label="Data del Ticket", disabled=True) + class Meta: + model = Ticket + fields = "__all__" + labels = { + "title": "Titolo del Ticket", + "content": "Contenuto del Ticket", + "id_student": "Studente", + "submit_date": "Data del Ticket", + "closing_date": "Data di Chiusura Ticket", + "is_closed": "É Chiuso?" + } + exclude = ["is_closed","id_student", "closing_date", "id_user_in_charge"] diff --git a/GestionaleITS/gestionale/migrations/0001_initial.py b/GestionaleITS/gestionale/migrations/0001_initial.py new file mode 100644 index 0000000..3bbf9c6 --- /dev/null +++ b/GestionaleITS/gestionale/migrations/0001_initial.py @@ -0,0 +1,142 @@ +# Generated by Django 4.2.16 on 2024-09-15 21:34 + +from django.db import migrations, models +import django.db.models.deletion +import gestionale.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Bundle', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('product_type', models.CharField(max_length=255)), + ('product_name', models.CharField(max_length=255)), + ('qt', models.IntegerField()), + ('qt_available', models.IntegerField()), + ('notes', models.CharField(blank=True, max_length=255)), + ('brand', models.CharField(max_length=255)), + ('line', models.CharField(max_length=255)), + ('cpu', models.CharField(blank=True, max_length=255)), + ('ram', models.CharField(blank=True, max_length=255)), + ('storage_size', models.CharField(blank=True, max_length=255)), + ('price', models.DecimalField(decimal_places=2, max_digits=10)), + ('delivery_date', models.DateField()), + ('is_deleted', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='Course', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('course_name', models.CharField(blank=True, max_length=255)), + ('course_name_extended', models.CharField(blank=True, max_length=255)), + ('course_code', models.CharField(max_length=255)), + ('course_year', models.IntegerField(blank=True)), + ('student_number', models.IntegerField(blank=True, null=True)), + ('course_location', models.CharField(max_length=255)), + ('course_status', models.BooleanField(default=True)), + ], + ), + migrations.CreateModel( + name='Record', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField()), + ('action', models.CharField(max_length=255)), + ('user', models.CharField(max_length=255)), + ('product', models.CharField(max_length=255)), + ('product_detail', models.TextField(null=True)), + ('prev_product_detail', models.TextField(null=True)), + ], + ), + migrations.CreateModel( + name='StudentViewEditModel', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('profile_image', models.ImageField(blank=True, null=True, upload_to='profile_pictures/', validators=[gestionale.models.validate_image])), + ], + ), + migrations.CreateModel( + name='Supplier', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('supplier_name', models.CharField(max_length=255)), + ('supplier_address', models.CharField(max_length=255)), + ('supplier_phone', models.CharField(max_length=255)), + ('supplier_email', models.EmailField(max_length=255)), + ('partita_iva', models.CharField(max_length=255)), + ('codice_societa', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Student', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('profile_image', models.ImageField(blank=True, null=True, upload_to='profile_pictures/', validators=[gestionale.models.validate_image])), + ('first_name', models.CharField(max_length=255)), + ('last_name', models.CharField(max_length=255)), + ('birth_date', models.DateField()), + ('codice_fiscale', models.CharField(max_length=255)), + ('gender', models.CharField(max_length=255)), + ('id_student_course', models.IntegerField(blank=True, null=True)), + ('course_acronym', models.CharField(max_length=255)), + ('email_user', models.EmailField(max_length=255)), + ('phone_number', models.CharField(max_length=255)), + ('municipality_residence', models.CharField(max_length=255)), + ('province_residence', models.CharField(max_length=255)), + ('municipality_birth', models.CharField(max_length=255)), + ('province_birth', models.CharField(max_length=255)), + ('nation_birth', models.CharField(max_length=255)), + ('resignation_date', models.DateField(blank=True, null=True)), + ('student_status', models.CharField(max_length=255)), + ('course_id', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='students', to='gestionale.course')), + ], + ), + migrations.CreateModel( + name='Computer', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.CharField(max_length=255)), + ('assignment_date', models.DateField(blank=True, null=True)), + ('assignment_motivation', models.CharField(blank=True, max_length=255, null=True)), + ('return_date', models.DateField(blank=True, null=True)), + ('return_motivation', models.CharField(blank=True, max_length=255, null=True)), + ('eol', models.BooleanField(default=False)), + ('eol_date', models.DateField(blank=True, null=True)), + ('notes', models.CharField(blank=True, max_length=255, null=True)), + ('cespite', models.CharField(blank=True, max_length=255, null=True)), + ('serial', models.CharField(max_length=255, unique=True)), + ('id_bundle', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='bundles', to='gestionale.bundle')), + ('id_student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='gestionale.student')), + ], + ), + migrations.AddField( + model_name='bundle', + name='supplier_id', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestionale.supplier'), + ), + migrations.CreateModel( + name='Accessory', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('status', models.CharField(max_length=255)), + ('description', models.CharField(max_length=255)), + ('assignment_date', models.DateField(blank=True, null=True)), + ('assignment_motivation', models.CharField(blank=True, max_length=255, null=True)), + ('return_date', models.DateField(blank=True, null=True)), + ('return_motivation', models.CharField(blank=True, max_length=255, null=True)), + ('notes', models.CharField(blank=True, max_length=255, null=True)), + ('id_bundle', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='bundles_accessory', to='gestionale.bundle')), + ('id_student', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='gestionale.student')), + ], + ), + ] diff --git a/GestionaleITS/gestionale/migrations/0002_ticket.py b/GestionaleITS/gestionale/migrations/0002_ticket.py new file mode 100644 index 0000000..367ba45 --- /dev/null +++ b/GestionaleITS/gestionale/migrations/0002_ticket.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.16 on 2024-10-02 15:25 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('gestionale', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Ticket', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.TextField()), + ('content', models.TextField()), + ('submit_date', models.DateField()), + ('is_closed', models.BooleanField(default=False)), + ('id_student', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='gestionale.student')), + ], + ), + ] diff --git a/GestionaleITS/gestionale/migrations/0003_ticket_closing_date.py b/GestionaleITS/gestionale/migrations/0003_ticket_closing_date.py new file mode 100644 index 0000000..322e56d --- /dev/null +++ b/GestionaleITS/gestionale/migrations/0003_ticket_closing_date.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.16 on 2024-10-02 19:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('gestionale', '0002_ticket'), + ] + + operations = [ + migrations.AddField( + model_name='ticket', + name='closing_date', + field=models.DateField(blank=True, null=True), + ), + ] diff --git a/GestionaleITS/gestionale/migrations/0004_ticket_id_user_in_charge_alter_ticket_title.py b/GestionaleITS/gestionale/migrations/0004_ticket_id_user_in_charge_alter_ticket_title.py new file mode 100644 index 0000000..ceca94b --- /dev/null +++ b/GestionaleITS/gestionale/migrations/0004_ticket_id_user_in_charge_alter_ticket_title.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.16 on 2024-10-07 19:45 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('gestionale', '0003_ticket_closing_date'), + ] + + operations = [ + migrations.AddField( + model_name='ticket', + name='id_user_in_charge', + field=models.ForeignKey(blank=True, limit_choices_to={'is_staff': True}, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='ticket', + name='title', + field=models.CharField(max_length=255), + ), + ] diff --git a/GestionaleITS/gestionale/migrations/0005_alter_record_prev_product_detail_and_more.py b/GestionaleITS/gestionale/migrations/0005_alter_record_prev_product_detail_and_more.py new file mode 100644 index 0000000..5315b99 --- /dev/null +++ b/GestionaleITS/gestionale/migrations/0005_alter_record_prev_product_detail_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.16 on 2024-10-09 14:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('gestionale', '0004_ticket_id_user_in_charge_alter_ticket_title'), + ] + + operations = [ + migrations.AlterField( + model_name='record', + name='prev_product_detail', + field=models.TextField(null=True), + ), + migrations.AlterField( + model_name='record', + name='product_detail', + field=models.TextField(null=True), + ), + ] diff --git a/GestionaleITS/gestionale/migrations/__init__.py b/GestionaleITS/gestionale/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GestionaleITS/gestionale/models.py b/GestionaleITS/gestionale/models.py new file mode 100644 index 0000000..af3c5b0 --- /dev/null +++ b/GestionaleITS/gestionale/models.py @@ -0,0 +1,157 @@ +# 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 PIL import Image +from django.core.exceptions import ValidationError +from django.db import models +from django.conf import settings + +# Create your models here. + +class Record(models.Model): + date = models.DateField() + action = models.CharField(max_length=255) + user = models.CharField(max_length=255) + product = models.CharField(max_length=255) + product_detail = models.TextField(null=True) + prev_product_detail = models.TextField(null=True) + +class Supplier(models.Model): + supplier_name = models.CharField(max_length=255) + supplier_address = models.CharField(max_length=255) + supplier_phone = models.CharField(max_length=255) + supplier_email = models.EmailField(max_length=255) + partita_iva = models.CharField(max_length=255) + codice_societa = models.CharField(max_length=255) + + + def __str__(self): + return f"Nome: {self.supplier_name}, Indirizzo: {self.supplier_address}, Telefono: {self.supplier_phone}, Email: {self.supplier_email}, Partita IVA: {self.partita_iva}, Codice Societá: {self.codice_societa}" + + +class Bundle(models.Model): + product_type = models.CharField(max_length=255) + product_name = models.CharField(max_length=255) + qt = models.IntegerField() + qt_available = models.IntegerField() + notes = models.CharField(max_length=255, blank=True) + brand = models.CharField(max_length=255) + line = models.CharField(max_length=255) + cpu = models.CharField(max_length=255, blank=True) + ram = models.CharField(max_length=255, blank=True) + storage_size = models.CharField(max_length=255, blank=True) + price = models.DecimalField(max_digits=10, decimal_places=2) + delivery_date = models.DateField() + supplier_id = models.ForeignKey(Supplier, on_delete=models.PROTECT) + is_deleted = models.BooleanField(default=False) + + + def __str__(self): + return f"Tipo Prodotto: {self.product_type}, Nome Prodotto: {self.product_name}, Qt: {self.qt}, Qt. Disponibile: {self.qt_available}, Note: {self.notes}, Brand: {self.brand}, Linea: {self.line}, Cpu: {self.cpu}, Ram: {self.ram}, Storage: {self.storage_size}, Prezzo: {self.price}, Data di consegna: {self.delivery_date}, Fornitore: {self.supplier_id.supplier_name} È cancellato?: {self.is_deleted}" + + +class Course(models.Model): + course_name = models.CharField(max_length=255, blank= True) + course_name_extended = models.CharField(max_length=255, blank= True) + course_code = models.CharField(max_length=255) + course_year = models.IntegerField(blank= True) + student_number = models.IntegerField(blank= True, null= True) + course_location = models.CharField(max_length=255) + course_status = models.BooleanField(default= True) + + def __str__(self): + return f"Id Corso: {self.id}, Nome Corso: {self.course_name}, Anno Corso: {self.course_year}" + +def validate_image(image): + max_size = 2 * 1024 * 1024 # 2 MB + if image.size > max_size: + raise ValidationError("Il file è troppo grande. La dimensione massima è 2 MB.") + + img = Image.open(image) + width = img.width + height = img.height + max_width = 200 + max_height = 200 + if width > max_width or height > max_height: + raise ValidationError(f"Le dimensioni dell'immagine devono essere al massimo {max_width}x{max_height} pixel.") + else: + return image + +class Student(models.Model): + profile_image = models.ImageField(upload_to="profile_pictures/", blank=True, null=True, validators=[validate_image]) + first_name = models.CharField(max_length=255) + last_name = models.CharField(max_length=255) + birth_date = models.DateField() + codice_fiscale = models.CharField(max_length=255) + gender = models.CharField(max_length=255) + id_student_course = models.IntegerField(blank= True, null=True) + course_acronym = models.CharField(max_length=255) + email_user = models.EmailField(max_length=255) + phone_number = models.CharField(max_length=255) + municipality_residence = models.CharField(max_length=255) + province_residence = models.CharField(max_length=255) + municipality_birth = models.CharField(max_length=255) + province_birth = models.CharField(max_length=255) + nation_birth = models.CharField(max_length=255) + resignation_date = models.DateField(null=True, blank=True) + student_status = models.CharField(max_length=255) + course_id = models.ForeignKey(Course, related_name="students", on_delete=models.PROTECT) + + def __str__(self): + return f"Nome: {self.first_name}, Cognome: {self.last_name}, Sesso: {self.gender}, Data di nascita: {self.birth_date}, Corso: {self.course_id.course_name}, Anno corso {self.course_id.course_year}" + + +class Computer(models.Model): + id_student = models.ForeignKey(Student, blank=True, null=True, on_delete=models.PROTECT) + id_bundle = models.ForeignKey(Bundle, related_name="bundles" , on_delete=models.PROTECT) + # deve essere una choice + status = models.CharField(max_length=255) + assignment_date = models.DateField(blank=True, null=True) + #deve essere una choice + assignment_motivation = models.CharField(max_length=255, blank=True, null=True) + return_date = models.DateField(blank=True, null=True) + return_motivation = models.CharField(max_length=255, blank=True, null=True) + eol = models.BooleanField(default=False) + eol_date = models.DateField(null=True, blank=True) + notes = models.CharField(max_length=255, blank=True, null=True) + cespite = models.CharField(max_length=255, blank=True, null=True) + serial = models.CharField(max_length=255, unique=True) + # is_deleted = models.BooleanField(default=False) + + def __str__(self): + return f"Id Studente: {self.id_student}, Id Bundle: {self.id_bundle}, Status: {self.status}, Data di assegnazione: {self.assignment_date}, Motivazione di Assegnazione: {self.assignment_motivation}, Data di restituzione: {self.return_date}, Motivazione di restituzione: {self.return_motivation}, Eol: {self.eol}, Data di Eol: {self.eol_date}, Note: {self.notes}, Cespite: {self.cespite}, Seriale: {self.serial}" + + +class Accessory(models.Model): + id_student = models.ForeignKey(Student, blank=True, null=True, on_delete=models.PROTECT) + id_bundle = models.ForeignKey(Bundle, related_name="bundles_accessory" , on_delete=models.PROTECT) + name = models.CharField(max_length=255) + status = models.CharField(max_length=255) + description = models.CharField(max_length=255) + assignment_date = models.DateField(blank=True, null=True) + assignment_motivation = models.CharField(max_length=255, blank=True, null=True) + return_date = models.DateField(blank=True, null=True) + return_motivation = models.CharField(max_length=255, blank=True, null=True) + notes = models.CharField(max_length=255, blank=True, null=True) + # is_deleted = models.BooleanField(default=False) + + def __str__(self): + return f"Id Studente: {self.id_student}, Id Bundle: {self.id_bundle}, Name: {self.name}, Status: {self.status}, Data di assegnazione: {self.assignment_date}, Motivazione di Assegnazione: {self.assignment_motivation}, Data di restituzione: {self.return_date}, Motivazione di restituzione: {self.return_motivation}, Note: {self.notes}" + +class StudentViewEditModel(models.Model): + profile_image = models.ImageField(upload_to="profile_pictures/", blank=True, null=True, validators=[validate_image]) + +class Ticket(models.Model): + title = models.CharField(max_length = 255) + content = models.TextField() + id_student = models.ForeignKey(Student, on_delete=models.PROTECT) + submit_date = models.DateField() + closing_date = models.DateField(blank=True, null=True) + is_closed = models.BooleanField(default=False) + id_user_in_charge = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,limit_choices_to={'is_staff': True}, on_delete=models.PROTECT) + + def __str__(self): + return f"title: {self.title} content: {self.content} student: {self.id_student} submit_date:{self.submit_date} closing_date:{self.closing_date} is_closed:{self.is_closed}" + diff --git a/GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css b/GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css new file mode 100644 index 0000000..69c94e7 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css @@ -0,0 +1,275 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: var(--body-quiet-color); + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: var(--body-fg); + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 10px 5px 5px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: var(--body-quiet-color); + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; + position: absolute; + right: 0; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: var(--darkened-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: var(--body-quiet-color); + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--body-fg); +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid var(--body-quiet-color) 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown { + background: var(--darkened-bg); +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + background: var(--body-bg); + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + color: var(--body-fg); + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + color: var(--body-fg); + background: var(--body-bg); +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: var(--selected-bg); + color: var(--body-fg); +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: var(--primary); + color: var(--primary-fg); +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css.gz b/GestionaleITS/gestionale/static/admin/css/autocomplete.4a81fc4242d0.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7cd12df9483ef372338842a86eb0aedf148d04aa GIT binary patch literal 1147 zcmV->1cdt^iwFP!00002|J_;ZZsRBv{@-s>)U8MMhPG4T({S@nSql zcD3)m*kIxdPU7p#Y=5K)V9s}L-#OrvFcQkI2=8eOQ6_oF_X#7CfPe0Q`a4i8BOk0h zvVXn%_wMd%T0F3VA&(`ZF%b~9A8xNQ+vN)*LU)n$!K0TPd+Z79GX0cDY7Vo#os*s-NiDBuFCRUv0w_}~W;e?S;; ze1d;vlt?}P=j&MS^wD*^BYRk(TbQxW?5@2ObPFlmi19%xgR7PdQ24PEJd3d-+Jc=4 zG98aTcu0;Q<&0vx>Kv!FrBEPDv(yJqQ}KmkYO@g}R>BB2%Ct4umKrc6at0Q2q6!&7 zC3%LKNOMdHr?DhLgV{2U6bzB0F(XPoJQ#QZXLv?<2}2=?lnl%8*LY?&C`br?Fd$0j zte!1_^OWZ6e1HNKb(ti3T=Jv{Mg2?Y$Lw!g{bu#CMjkl%`t!@n3y=cEX@XRQ%C7IV zgh}Oz5npFlZNliYR;j0w33xiCsuuH1h?A}QvG%^0!hpn1DXB-HeaH+KHiWC2Ol`L` zQ2H>?cTC0GCn4FV_c3W?GA37M8R6B))Fx~OTrOy2^}#en0aNrfn5HojA0#IDOw}df zV6sK3f-HdWn(x#eigHdqhVO}W&;Bkt8iP#@m9;vRB_HaTITM#)EQ>HX z!h=AH;PTI9lxMW$l$MS&itk_Xo0Y;^b{G-&hdfOWRgIhVwOS`^HJwwhh|{n?t52Be zwlK8ZS#i3t#oE<1tlI}{JvO`9@4J+z11|tvZP_l+pKEi-ps&Z&F2K*8o5^kxtauI zpZl41!(<4uPL2&qIQQ^8lex>sUm#s(`~GPOUd__>}6IAH(8syvET{jhq#qu?&O+6 zQe$Sb*;2xACxH5q?ZOr1&$wi*)xVn+YaNVl(CU1Ut8%YB3PwoTwz^6+VZjHL5G9F1 zgW{0rLu!F(khX%PDsEHotu?gS@Fb7y)E2j+y(?aM_Jva3hNL4I ziT1nTjJ)OhC-2j|Bxnjif+AZz-lWLL`+PUXPT_j8A-t=OmW!`u+jw-{6E#Pe{^+6C zi`W4|+Y?1tIKg;JL#Y|2ek)xVrVVkmyuF5?U%Amg{(9(psrBeq>*+UAtCzk{ZhhDP z2Yq`PV(m7>^E8HlFj5tj .select2-results__options { + max-height: 200px; + overflow-y: auto; + color: var(--body-fg); + background: var(--body-bg); +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: var(--selected-bg); + color: var(--body-fg); +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: var(--primary); + color: var(--primary-fg); +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/GestionaleITS/gestionale/static/admin/css/autocomplete.css.gz b/GestionaleITS/gestionale/static/admin/css/autocomplete.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7cd12df9483ef372338842a86eb0aedf148d04aa GIT binary patch literal 1147 zcmV->1cdt^iwFP!00002|J_;ZZsRBv{@-s>)U8MMhPG4T({S@nSql zcD3)m*kIxdPU7p#Y=5K)V9s}L-#OrvFcQkI2=8eOQ6_oF_X#7CfPe0Q`a4i8BOk0h zvVXn%_wMd%T0F3VA&(`ZF%b~9A8xNQ+vN)*LU)n$!K0TPd+Z79GX0cDY7Vo#os*s-NiDBuFCRUv0w_}~W;e?S;; ze1d;vlt?}P=j&MS^wD*^BYRk(TbQxW?5@2ObPFlmi19%xgR7PdQ24PEJd3d-+Jc=4 zG98aTcu0;Q<&0vx>Kv!FrBEPDv(yJqQ}KmkYO@g}R>BB2%Ct4umKrc6at0Q2q6!&7 zC3%LKNOMdHr?DhLgV{2U6bzB0F(XPoJQ#QZXLv?<2}2=?lnl%8*LY?&C`br?Fd$0j zte!1_^OWZ6e1HNKb(ti3T=Jv{Mg2?Y$Lw!g{bu#CMjkl%`t!@n3y=cEX@XRQ%C7IV zgh}Oz5npFlZNliYR;j0w33xiCsuuH1h?A}QvG%^0!hpn1DXB-HeaH+KHiWC2Ol`L` zQ2H>?cTC0GCn4FV_c3W?GA37M8R6B))Fx~OTrOy2^}#en0aNrfn5HojA0#IDOw}df zV6sK3f-HdWn(x#eigHdqhVO}W&;Bkt8iP#@m9;vRB_HaTITM#)EQ>HX z!h=AH;PTI9lxMW$l$MS&itk_Xo0Y;^b{G-&hdfOWRgIhVwOS`^HJwwhh|{n?t52Be zwlK8ZS#i3t#oE<1tlI}{JvO`9@4J+z11|tvZP_l+pKEi-ps&Z&F2K*8o5^kxtauI zpZl41!(<4uPL2&qIQQ^8lex>sUm#s(`~GPOUd__>}6IAH(8syvET{jhq#qu?&O+6 zQe$Sb*;2xACxH5q?ZOr1&$wi*)xVn+YaNVl(CU1Ut8%YB3PwoTwz^6+VZjHL5G9F1 zgW{0rLu!F(khX%PDsEHotu?gS@Fb7y)E2j+y(?aM_Jva3hNL4I ziT1nTjJ)OhC-2j|Bxnjif+AZz-lWLL`+PUXPT_j8A-t=OmW!`u+jw-{6E#Pe{^+6C zi`W4|+Y?1tIKg;JL#Y|2ek)xVrVVkmyuF5?U%Amg{(9(psrBeq>*+UAtCzk{ZhhDP z2Yq`PV(m7>^E8HlFj5tj li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 0.8125rem; + line-height: 1.25rem; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid var(--hairline-color); +} + +blockquote { + font-size: 0.6875rem; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: var(--font-family-monospace); + color: var(--body-quiet-color); + font-size: 0.75rem; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: var(--darkened-bg); + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: var(--hairline-color); + background-color: var(--hairline-color); + height: 1px; + border: none; + margin: 0; + padding: 0; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 0.6875rem; +} + +.mini { + font-size: 0.625rem; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: var(--body-quiet-color); + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: var(--border-color); +} + +td, th { + font-size: 0.8125rem; + line-height: 1rem; + border-bottom: 1px solid var(--hairline-color); + vertical-align: top; + padding: 8px; +} + +th { + font-weight: 600; + text-align: left; +} + +thead th, +tfoot td { + color: var(--body-quiet-color); + padding: 5px 10px; + font-size: 0.6875rem; + background: var(--body-bg); + border: none; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +tfoot td { + border-bottom: none; + border-top: 1px solid var(--hairline-color); +} + +thead th.required { + color: var(--body-loud-color); +} + +tr.alt { + background: var(--darkened-bg); +} + +tr:nth-child(odd), .row-form-errors { + background: var(--body-bg); +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: var(--darkened-bg); +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: var(--darkened-bg); +} + +thead th a:link, thead th a:visited { + color: var(--body-quiet-color); +} + +thead th.sorted { + background: var(--selected-bg); +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: var(--selected-bg); +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url("../img/sorting-icons.3a097b59f104.svg") 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 1.125rem; + color: var(--body-quiet-color); +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: var(--link-fg); +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: var(--font-family-primary); + font-weight: normal; + font-size: 0.8125rem; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +input[type=text], input[type=password], input[type=email], input[type=url], +input[type=number], input[type=tel], textarea, select, .vTextField { + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} + +input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, +input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, +textarea:focus, select:focus, .vTextField:focus { + border-color: var(--body-quiet-color); +} + +select { + height: 1.875rem; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: var(--button-bg); + padding: 10px 15px; + border: none; + border-radius: 4px; + color: var(--button-fg); + cursor: pointer; + transition: background 0.15s; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: var(--button-hover-bg); +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: none; + font-weight: 400; + background: var(--default-button-bg); +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: var(--default-button-hover-bg); +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: var(--body-bg); +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + text-align: left; + background: var(--primary); + color: var(--header-link-color); +} + +.module caption, +.inline-group h2 { + font-size: 0.75rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 0.8125rem; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: var(--message-success-bg) url("../img/icon-yes.d2f9f035226a.svg") 40px 12px no-repeat; + background-size: 16px auto; + color: var(--body-fg); + word-break: break-word; +} + +ul.messagelist li.warning { + background: var(--message-warning-bg) url("../img/icon-alert.034cc7d8a67f.svg") 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: var(--message-error-bg) url("../img/icon-no.439e821418cd.svg") 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 0.875rem; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: var(--error-fg); + border: 1px solid var(--error-fg); + border-radius: 4px; + background-color: var(--body-bg); + background-position: 5px 12px; + overflow-wrap: break-word; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: var(--error-fg); + background: var(--body-bg); +} + +ul.errorlist li { + font-size: 0.8125rem; + display: block; + margin-bottom: 4px; + overflow-wrap: break-word; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid var(--hairline-color); + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid var(--error-fg); +} + +.description { + font-size: 0.75rem; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: var(--breadcrumbs-bg); + padding: 10px 40px; + border: none; + color: var(--breadcrumbs-fg); + text-align: left; +} + +div.breadcrumbs a { + color: var(--breadcrumbs-link-fg); +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: var(--breadcrumbs-fg); +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url("../img/icon-viewlink.41eb31f7826e.svg") 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url("../img/icon-addlink.d519b3bab011.svg") 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url("../img/icon-changelink.18d2fd706348.svg") 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url("../img/icon-deletelink.564ef9dc3854.svg") 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; /* XXX Probably unused? */ +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; /* XXX Probably unused? */ + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 0.625rem; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 1rem; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: var(--object-tools-bg); + color: var(--object-tools-fg); + font-weight: 400; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: var(--object-tools-hover-bg); +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink { + background-image: url("../img/tooltag-arrowright.bbfb788a849e.svg"); +} + +.object-tools a.addlink { + background-image: url("../img/tooltag-add.e59d620a9742.svg"); +} + +/* OBJECT HISTORY */ + +#change-history table { + width: 100%; +} + +#change-history table tbody th { + width: 16em; +} + +#change-history .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > div { + flex-shrink: 0; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +.skip-to-content-link { + position: absolute; + top: -999px; + margin: 5px; + padding: 5px; + background: var(--body-bg); + z-index: 1; +} + +.skip-to-content-link:focus { + left: 0px; + top: 0px; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: var(--header-bg); + color: var(--header-color); + overflow: hidden; +} + +#header a:link, #header a:visited, #logout-form button { + color: var(--header-link-color); +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +#branding { + display: flex; +} + +#branding h1 { + padding: 0; + margin: 0; + margin-inline-end: 20px; + font-weight: 300; + font-size: 1.5rem; + color: var(--header-branding-color); +} + +#branding h1 a:link, #branding h1 a:visited { + color: var(--accent); +} + +#branding h2 { + padding: 0 10px; + font-size: 0.875rem; + margin: -8px 0 8px 0; + font-weight: normal; + color: var(--header-color); +} + +#branding a:hover { + text-decoration: none; +} + +#logout-form { + display: inline; +} + +#logout-form button { + background: none; + border: 0; + cursor: pointer; + font-family: var(--font-family-primary); +} + +#user-tools { + float: right; + margin: 0 0 0 20px; + text-align: right; +} + +#user-tools, #logout-form button{ + padding: 0; + font-weight: 300; + font-size: 0.6875rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +#user-tools a, #logout-form button { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover, +#logout-form button:active, #logout-form button:hover { + text-decoration: none; + border-bottom: 0; +} + +#logout-form button:active, #logout-form button:hover { + margin-bottom: 1px; +} + +/* SIDEBAR */ + +#content-related { + background: var(--darkened-bg); +} + +#content-related .module { + background: none; +} + +#content-related h3 { + color: var(--body-quiet-color); + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 0.8125rem; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid var(--hairline-color); + font-size: 1.125rem; + color: var(--body-fg); +} + +.delete-confirmation form input[type="submit"] { + background: var(--delete-button-bg); + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: var(--delete-button-hover-bg); +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 0.9375rem; + line-height: 0.9375rem; + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); + background: var(--close-button-bg); + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: var(--close-button-hover-bg); +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} + +/* PAGINATOR */ + +.paginator { + display: flex; + align-items: center; + gap: 4px; + font-size: 0.8125rem; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid var(--hairline-color); + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: var(--button-bg); + text-decoration: none; + color: var(--button-fg); +} + +.paginator a.showall { + border: none; + background: none; + color: var(--link-fg); +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: var(--link-hover-color); +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 0.8125rem; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: var(--link-hover-color); +} + +.paginator input { + margin-left: auto; +} + +.base-svgs { + display: none; +} diff --git a/GestionaleITS/gestionale/static/admin/css/base.523eb49842a7.css.gz b/GestionaleITS/gestionale/static/admin/css/base.523eb49842a7.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee59980b9a7e851d0ba5fba7fcd8cf497ae2ff4e GIT binary patch literal 4865 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 literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/base.css b/GestionaleITS/gestionale/static/admin/css/base.css new file mode 100644 index 0000000..93db7d0 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/base.css @@ -0,0 +1,1145 @@ +/* + DJANGO Admin styles +*/ + +/* VARIABLE DEFINITIONS */ +html[data-theme="light"], +:root { + --primary: #79aec8; + --secondary: #417690; + --accent: #f5dd5d; + --primary-fg: #fff; + + --body-fg: #333; + --body-bg: #fff; + --body-quiet-color: #666; + --body-loud-color: #000; + + --header-color: #ffc; + --header-branding-color: var(--accent); + --header-bg: var(--secondary); + --header-link-color: var(--primary-fg); + + --breadcrumbs-fg: #c4dce8; + --breadcrumbs-link-fg: var(--body-bg); + --breadcrumbs-bg: var(--primary); + + --link-fg: #417893; + --link-hover-color: #036; + --link-selected-fg: #5b80b2; + + --hairline-color: #e8e8e8; + --border-color: #ccc; + + --error-fg: #ba2121; + + --message-success-bg: #dfd; + --message-warning-bg: #ffc; + --message-error-bg: #ffefef; + + --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */ + --selected-bg: #e4e4e4; /* E.g. selected table cells */ + --selected-row: #ffc; + + --button-fg: #fff; + --button-bg: var(--primary); + --button-hover-bg: #609ab6; + --default-button-bg: var(--secondary); + --default-button-hover-bg: #205067; + --close-button-bg: #747474; + --close-button-hover-bg: #333; + --delete-button-bg: #ba2121; + --delete-button-hover-bg: #a41515; + + --object-tools-fg: var(--button-fg); + --object-tools-bg: var(--close-button-bg); + --object-tools-hover-bg: var(--close-button-hover-bg); + + --font-family-primary: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + system-ui, + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --font-family-monospace: + ui-monospace, + Menlo, + Monaco, + "Cascadia Mono", + "Segoe UI Mono", + "Roboto Mono", + "Oxygen Mono", + "Ubuntu Monospace", + "Source Code Pro", + "Fira Mono", + "Droid Sans Mono", + "Courier New", + monospace, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-size: 0.875rem; + font-family: var(--font-family-primary); + color: var(--body-fg); + background: var(--body-bg); +} + +/* LINKS */ + +a:link, a:visited { + color: var(--link-fg); + text-decoration: none; + transition: color 0.15s, background 0.15s; +} + +a:focus, a:hover { + color: var(--link-hover-color); +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: var(--header-link-color); + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 1.25rem; + color: var(--body-quiet-color); +} + +h2 { + font-size: 1rem; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 0.875rem; + margin: .8em 0 .3em 0; + color: var(--body-quiet-color); + font-weight: bold; +} + +h4 { + font-size: 0.75rem; + margin: 1em 0 .8em 0; + padding-bottom: 3px; +} + +h5 { + font-size: 0.625rem; + margin: 1.5em 0 .5em 0; + color: var(--body-quiet-color); + text-transform: uppercase; + letter-spacing: 1px; +} + +ul > li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 0.8125rem; + line-height: 1.25rem; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid var(--hairline-color); +} + +blockquote { + font-size: 0.6875rem; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: var(--font-family-monospace); + color: var(--body-quiet-color); + font-size: 0.75rem; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: var(--darkened-bg); + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: var(--hairline-color); + background-color: var(--hairline-color); + height: 1px; + border: none; + margin: 0; + padding: 0; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 0.6875rem; +} + +.mini { + font-size: 0.625rem; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: var(--body-quiet-color); + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: var(--border-color); +} + +td, th { + font-size: 0.8125rem; + line-height: 1rem; + border-bottom: 1px solid var(--hairline-color); + vertical-align: top; + padding: 8px; +} + +th { + font-weight: 600; + text-align: left; +} + +thead th, +tfoot td { + color: var(--body-quiet-color); + padding: 5px 10px; + font-size: 0.6875rem; + background: var(--body-bg); + border: none; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +tfoot td { + border-bottom: none; + border-top: 1px solid var(--hairline-color); +} + +thead th.required { + color: var(--body-loud-color); +} + +tr.alt { + background: var(--darkened-bg); +} + +tr:nth-child(odd), .row-form-errors { + background: var(--body-bg); +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: var(--darkened-bg); +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: var(--darkened-bg); +} + +thead th a:link, thead th a:visited { + color: var(--body-quiet-color); +} + +thead th.sorted { + background: var(--selected-bg); +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: var(--selected-bg); +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url(../img/sorting-icons.svg) 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 1.125rem; + color: var(--body-quiet-color); +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: var(--link-fg); +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: var(--font-family-primary); + font-weight: normal; + font-size: 0.8125rem; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +input[type=text], input[type=password], input[type=email], input[type=url], +input[type=number], input[type=tel], textarea, select, .vTextField { + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} + +input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, +input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, +textarea:focus, select:focus, .vTextField:focus { + border-color: var(--body-quiet-color); +} + +select { + height: 1.875rem; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: var(--button-bg); + padding: 10px 15px; + border: none; + border-radius: 4px; + color: var(--button-fg); + cursor: pointer; + transition: background 0.15s; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: var(--button-hover-bg); +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: none; + font-weight: 400; + background: var(--default-button-bg); +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: var(--default-button-hover-bg); +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: var(--body-bg); +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + text-align: left; + background: var(--primary); + color: var(--header-link-color); +} + +.module caption, +.inline-group h2 { + font-size: 0.75rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 0.8125rem; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat; + background-size: 16px auto; + color: var(--body-fg); + word-break: break-word; +} + +ul.messagelist li.warning { + background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 0.875rem; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: var(--error-fg); + border: 1px solid var(--error-fg); + border-radius: 4px; + background-color: var(--body-bg); + background-position: 5px 12px; + overflow-wrap: break-word; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: var(--error-fg); + background: var(--body-bg); +} + +ul.errorlist li { + font-size: 0.8125rem; + display: block; + margin-bottom: 4px; + overflow-wrap: break-word; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid var(--hairline-color); + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid var(--error-fg); +} + +.description { + font-size: 0.75rem; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: var(--breadcrumbs-bg); + padding: 10px 40px; + border: none; + color: var(--breadcrumbs-fg); + text-align: left; +} + +div.breadcrumbs a { + color: var(--breadcrumbs-link-fg); +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: var(--breadcrumbs-fg); +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url(../img/icon-viewlink.svg) 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url(../img/icon-addlink.svg) 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url(../img/icon-changelink.svg) 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url(../img/icon-deletelink.svg) 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; /* XXX Probably unused? */ +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; /* XXX Probably unused? */ + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 0.625rem; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 1rem; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: var(--object-tools-bg); + color: var(--object-tools-fg); + font-weight: 400; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: var(--object-tools-hover-bg); +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink { + background-image: url(../img/tooltag-arrowright.svg); +} + +.object-tools a.addlink { + background-image: url(../img/tooltag-add.svg); +} + +/* OBJECT HISTORY */ + +#change-history table { + width: 100%; +} + +#change-history table tbody th { + width: 16em; +} + +#change-history .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > div { + flex-shrink: 0; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +.skip-to-content-link { + position: absolute; + top: -999px; + margin: 5px; + padding: 5px; + background: var(--body-bg); + z-index: 1; +} + +.skip-to-content-link:focus { + left: 0px; + top: 0px; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: var(--header-bg); + color: var(--header-color); + overflow: hidden; +} + +#header a:link, #header a:visited, #logout-form button { + color: var(--header-link-color); +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +#branding { + display: flex; +} + +#branding h1 { + padding: 0; + margin: 0; + margin-inline-end: 20px; + font-weight: 300; + font-size: 1.5rem; + color: var(--header-branding-color); +} + +#branding h1 a:link, #branding h1 a:visited { + color: var(--accent); +} + +#branding h2 { + padding: 0 10px; + font-size: 0.875rem; + margin: -8px 0 8px 0; + font-weight: normal; + color: var(--header-color); +} + +#branding a:hover { + text-decoration: none; +} + +#logout-form { + display: inline; +} + +#logout-form button { + background: none; + border: 0; + cursor: pointer; + font-family: var(--font-family-primary); +} + +#user-tools { + float: right; + margin: 0 0 0 20px; + text-align: right; +} + +#user-tools, #logout-form button{ + padding: 0; + font-weight: 300; + font-size: 0.6875rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +#user-tools a, #logout-form button { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover, +#logout-form button:active, #logout-form button:hover { + text-decoration: none; + border-bottom: 0; +} + +#logout-form button:active, #logout-form button:hover { + margin-bottom: 1px; +} + +/* SIDEBAR */ + +#content-related { + background: var(--darkened-bg); +} + +#content-related .module { + background: none; +} + +#content-related h3 { + color: var(--body-quiet-color); + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 0.8125rem; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid var(--hairline-color); + font-size: 1.125rem; + color: var(--body-fg); +} + +.delete-confirmation form input[type="submit"] { + background: var(--delete-button-bg); + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: var(--delete-button-hover-bg); +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 0.9375rem; + line-height: 0.9375rem; + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); + background: var(--close-button-bg); + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: var(--close-button-hover-bg); +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} + +/* PAGINATOR */ + +.paginator { + display: flex; + align-items: center; + gap: 4px; + font-size: 0.8125rem; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid var(--hairline-color); + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: var(--button-bg); + text-decoration: none; + color: var(--button-fg); +} + +.paginator a.showall { + border: none; + background: none; + color: var(--link-fg); +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: var(--link-hover-color); +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 0.8125rem; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: var(--link-hover-color); +} + +.paginator input { + margin-left: auto; +} + +.base-svgs { + display: none; +} diff --git a/GestionaleITS/gestionale/static/admin/css/base.css.gz b/GestionaleITS/gestionale/static/admin/css/base.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a4753c53ce938101efea46f79d30c9fe8401e9ce GIT binary patch literal 4755 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 h!PJQ_4AVpfXJF8W< * { + display: inline; +} + +#changelist-filter details > summary { + list-style-type: none; +} + +#changelist-filter details > summary::-webkit-details-marker { + display: none; +} + +#changelist-filter details > summary::before { + content: '→'; + font-weight: bold; + color: var(--link-hover-color); +} + +#changelist-filter details[open] > summary::before { + content: '↓'; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid var(--hairline-color); +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: var(--body-quiet-color); + word-break: break-word; +} + +#changelist-filter li.selected { + border-left: 5px solid var(--hairline-color); + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: var(--link-selected-fg); +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: var(--link-hover-color); +} + +#changelist-filter #changelist-filter-clear a { + font-size: 0.8125rem; + padding-bottom: 10px; + border-bottom: 1px solid var(--hairline-color); +} + +/* DATE DRILLDOWN */ + +.change-list .toplinks { + display: flex; + padding-bottom: 5px; + flex-wrap: wrap; + gap: 3px 17px; + font-weight: bold; +} + +.change-list .toplinks a { + font-size: 0.8125rem; +} + +.change-list .toplinks .date-back { + color: var(--body-quiet-color); +} + +.change-list .toplinks .date-back:focus, +.change-list .toplinks .date-back:hover { + color: var(--link-hover-color); +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +/* Once the :has() pseudo-class is supported by all browsers, the tr.selected + selector and the JS adding the class can be removed. */ +#changelist tbody tr.selected { + background-color: var(--selected-row); +} + +#changelist tbody tr:has(.action-select:checked) { + background-color: var(--selected-row); +} + +#changelist .actions { + padding: 10px; + background: var(--body-bg); + border-top: none; + border-bottom: none; + line-height: 1.5rem; + color: var(--body-quiet-color); + width: 100%; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 0.8125rem; + margin: 0 0.5em; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 1.5rem; + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 0.875rem; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: var(--body-quiet-color); +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 0.8125rem; +} + +#changelist .actions .button { + font-size: 0.8125rem; + border: 1px solid var(--border-color); + border-radius: 4px; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 1.5rem; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: var(--body-fg); +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: var(--body-quiet-color); +} diff --git a/GestionaleITS/gestionale/static/admin/css/changelists.9237a1ac391b.css.gz b/GestionaleITS/gestionale/static/admin/css/changelists.9237a1ac391b.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..108028ffb0d372e01226f033207e8dd7a10fcce5 GIT binary patch literal 1564 zcmV+%2IKi3iwFP!00002|HW9_juST+zTc;?Kou;Chh*6mXjVm9VB2n$vJ!073&e$I z>}1?^#)Iu)lOk^W0PP$0N$S&_51CDoN)RMI{KxM<`RNnz`lpMxKVB}c-ru|jPo5qf zJ&Y5St_h=3fiFiu|G`vd4DCX&Vq|-6mk^`t6jDVt(k(-&kWg;(_gpHv+QFEoiliz8 zGD9(e5m9%9q~}Lpn@oc0J6v(GvG)*7iSYal{SYkl2jz-89vhm%JBn2jf_aCcLJ=eW zvOlz#&%d+hJU8fAClq6nt|(zxf-j|}DNo5c=$u|rridW8!64!S69ENXCt6i|^Jw_y zms0wKxErVQdA1$95(px5rsNC^9mvp{rbuxyJE~S6D$ZGi#H@A_)6ckT^EWk$foTF>&;Spe~o`8V#W9!+=exGw!PHAhvFHd>8)%UJmO06 zjlPp@f#i&0@EM865GIHUeVk|*F)og~C<{Zf}4w1%gb(9dVeGY;f_CSJXn(^Iy|8bJp;=-fikzD*(w?% z25k_B8jKh-G7v-slK{nv@)X7iiEksmHJav|v=wB*nL&YBQDmzM2C+^8L<})-sKRXq zp7L}$E6&wKk2*WwTwgC=UA%MF^}*7%ATn{d$>NapUwJ~G0`0>lR)Mh&1F|t z?XK$cTGGu&WE-(uo7YS5q}`~~)Krgs1YWkpb=XroMxcq1aYJ;7grQb7x}^&GEx0kL z5pCJ-Ni-tb`=l)Fexi8v&!2xiI`0}e;tcoX4%0qD8|Fh1+!Wvg&q(@lk{EwK8lsgK zU3L)^295m~=(Z9EcDEJpkRkmuPAJ3uee;+f7#)X14Y4i*G}WpW`^lp=CL+e;+w;lY z_((GBRVI*xkyw$IC7hIJQ+ltaVx5lAEkozU{ZgR5KGkBhI8qh59_#ti2731_%4d5e zD9hu%bM@kQSWI=7V9a!dE6uRCX=$a!1H(ku$u}1_m*CC2tL5^|^>40FHb>spsM+)K z(H5x;T>A=QrmPTDv)0=Dd}adtd83-a literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/changelists.css b/GestionaleITS/gestionale/static/admin/css/changelists.css new file mode 100644 index 0000000..a754513 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/changelists.css @@ -0,0 +1,328 @@ +/* CHANGELISTS */ + +#changelist { + display: flex; + align-items: flex-start; + justify-content: space-between; +} + +#changelist .changelist-form-container { + flex: 1 1 auto; + min-width: 0; +} + +#changelist table { + width: 100%; +} + +.change-list .hiddenfields { display:none; } + +.change-list .filtered table { + border-right: none; +} + +.change-list .filtered { + min-height: 400px; +} + +.change-list .filtered .results, .change-list .filtered .paginator, +.filtered #toolbar, .filtered div.xfull { + width: auto; +} + +.change-list .filtered table tbody th { + padding-right: 1em; +} + +#changelist-form .results { + overflow-x: auto; + width: 100%; +} + +#changelist .toplinks { + border-bottom: 1px solid var(--hairline-color); +} + +#changelist .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* CHANGELIST TABLES */ + +#changelist table thead th { + padding: 0; + white-space: nowrap; + vertical-align: middle; +} + +#changelist table thead th.action-checkbox-column { + width: 1.5em; + text-align: center; +} + +#changelist table tbody td.action-checkbox { + text-align: center; +} + +#changelist table tfoot { + color: var(--body-quiet-color); +} + +/* TOOLBAR */ + +#toolbar { + padding: 8px 10px; + margin-bottom: 15px; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +#toolbar form input { + border-radius: 4px; + font-size: 0.875rem; + padding: 5px; + color: var(--body-fg); +} + +#toolbar #searchbar { + height: 1.1875rem; + border: 1px solid var(--border-color); + padding: 2px 5px; + margin: 0; + vertical-align: top; + font-size: 0.8125rem; + max-width: 100%; +} + +#toolbar #searchbar:focus { + border-color: var(--body-quiet-color); +} + +#toolbar form input[type="submit"] { + border: 1px solid var(--border-color); + font-size: 0.8125rem; + padding: 4px 8px; + margin: 0; + vertical-align: middle; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + color: var(--body-fg); +} + +#toolbar form input[type="submit"]:focus, +#toolbar form input[type="submit"]:hover { + border-color: var(--body-quiet-color); +} + +#changelist-search img { + vertical-align: middle; + margin-right: 4px; +} + +#changelist-search .help { + word-break: break-word; +} + +/* FILTER COLUMN */ + +#changelist-filter { + flex: 0 0 240px; + order: 1; + background: var(--darkened-bg); + border-left: none; + margin: 0 0 0 30px; +} + +#changelist-filter h2 { + font-size: 0.875rem; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 5px 15px; + margin-bottom: 12px; + border-bottom: none; +} + +#changelist-filter h3, +#changelist-filter details summary { + font-weight: 400; + padding: 0 15px; + margin-bottom: 10px; +} + +#changelist-filter details summary > * { + display: inline; +} + +#changelist-filter details > summary { + list-style-type: none; +} + +#changelist-filter details > summary::-webkit-details-marker { + display: none; +} + +#changelist-filter details > summary::before { + content: '→'; + font-weight: bold; + color: var(--link-hover-color); +} + +#changelist-filter details[open] > summary::before { + content: '↓'; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid var(--hairline-color); +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: var(--body-quiet-color); + word-break: break-word; +} + +#changelist-filter li.selected { + border-left: 5px solid var(--hairline-color); + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: var(--link-selected-fg); +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: var(--link-hover-color); +} + +#changelist-filter #changelist-filter-clear a { + font-size: 0.8125rem; + padding-bottom: 10px; + border-bottom: 1px solid var(--hairline-color); +} + +/* DATE DRILLDOWN */ + +.change-list .toplinks { + display: flex; + padding-bottom: 5px; + flex-wrap: wrap; + gap: 3px 17px; + font-weight: bold; +} + +.change-list .toplinks a { + font-size: 0.8125rem; +} + +.change-list .toplinks .date-back { + color: var(--body-quiet-color); +} + +.change-list .toplinks .date-back:focus, +.change-list .toplinks .date-back:hover { + color: var(--link-hover-color); +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +/* Once the :has() pseudo-class is supported by all browsers, the tr.selected + selector and the JS adding the class can be removed. */ +#changelist tbody tr.selected { + background-color: var(--selected-row); +} + +#changelist tbody tr:has(.action-select:checked) { + background-color: var(--selected-row); +} + +#changelist .actions { + padding: 10px; + background: var(--body-bg); + border-top: none; + border-bottom: none; + line-height: 1.5rem; + color: var(--body-quiet-color); + width: 100%; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 0.8125rem; + margin: 0 0.5em; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 1.5rem; + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 0.875rem; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: var(--body-quiet-color); +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 0.8125rem; +} + +#changelist .actions .button { + font-size: 0.8125rem; + border: 1px solid var(--border-color); + border-radius: 4px; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 1.5rem; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: var(--body-fg); +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: var(--body-quiet-color); +} diff --git a/GestionaleITS/gestionale/static/admin/css/changelists.css.gz b/GestionaleITS/gestionale/static/admin/css/changelists.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..108028ffb0d372e01226f033207e8dd7a10fcce5 GIT binary patch literal 1564 zcmV+%2IKi3iwFP!00002|HW9_juST+zTc;?Kou;Chh*6mXjVm9VB2n$vJ!073&e$I z>}1?^#)Iu)lOk^W0PP$0N$S&_51CDoN)RMI{KxM<`RNnz`lpMxKVB}c-ru|jPo5qf zJ&Y5St_h=3fiFiu|G`vd4DCX&Vq|-6mk^`t6jDVt(k(-&kWg;(_gpHv+QFEoiliz8 zGD9(e5m9%9q~}Lpn@oc0J6v(GvG)*7iSYal{SYkl2jz-89vhm%JBn2jf_aCcLJ=eW zvOlz#&%d+hJU8fAClq6nt|(zxf-j|}DNo5c=$u|rridW8!64!S69ENXCt6i|^Jw_y zms0wKxErVQdA1$95(px5rsNC^9mvp{rbuxyJE~S6D$ZGi#H@A_)6ckT^EWk$foTF>&;Spe~o`8V#W9!+=exGw!PHAhvFHd>8)%UJmO06 zjlPp@f#i&0@EM865GIHUeVk|*F)og~C<{Zf}4w1%gb(9dVeGY;f_CSJXn(^Iy|8bJp;=-fikzD*(w?% z25k_B8jKh-G7v-slK{nv@)X7iiEksmHJav|v=wB*nL&YBQDmzM2C+^8L<})-sKRXq zp7L}$E6&wKk2*WwTwgC=UA%MF^}*7%ATn{d$>NapUwJ~G0`0>lR)Mh&1F|t z?XK$cTGGu&WE-(uo7YS5q}`~~)Krgs1YWkpb=XroMxcq1aYJ;7grQb7x}^&GEx0kL z5pCJ-Ni-tb`=l)Fexi8v&!2xiI`0}e;tcoX4%0qD8|Fh1+!Wvg&q(@lk{EwK8lsgK zU3L)^295m~=(Z9EcDEJpkRkmuPAJ3uee;+f7#)X14Y4i*G}WpW`^lp=CL+e;+w;lY z_((GBRVI*xkyw$IC7hIJQ+ltaVx5lAEkozU{ZgR5KGkBhI8qh59_#ti2731_%4d5e zD9hu%bM@kQSWI=7V9a!dE6uRCX=$a!1H(ku$u}1_m*CC2tL5^|^>40FHb>spsM+)K z(H5x;T>A=QrmPTDv)0=Dd}adtd83-a literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/dark_mode.css b/GestionaleITS/gestionale/static/admin/css/dark_mode.css new file mode 100644 index 0000000..6d08233 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/dark_mode.css @@ -0,0 +1,137 @@ +@media (prefers-color-scheme: dark) { + :root { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; + } + } + + +html[data-theme="dark"] { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; +} + +/* THEME SWITCH */ +.theme-toggle { + cursor: pointer; + border: none; + padding: 0; + background: transparent; + vertical-align: middle; + margin-inline-start: 5px; + margin-top: -1px; +} + +.theme-toggle svg { + vertical-align: middle; + height: 1rem; + width: 1rem; + display: none; +} + +/* +Fully hide screen reader text so we only show the one matching the current +theme. +*/ +.theme-toggle .visually-hidden { + display: none; +} + +html[data-theme="auto"] .theme-toggle .theme-label-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle .theme-label-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle .theme-label-when-light { + display: block; +} + +/* ICONS */ +.theme-toggle svg.theme-icon-when-auto, +.theme-toggle svg.theme-icon-when-dark, +.theme-toggle svg.theme-icon-when-light { + fill: var(--header-link-color); + color: var(--header-bg); +} + +html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle svg.theme-icon-when-light { + display: block; +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + white-space: nowrap; + border: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} diff --git a/GestionaleITS/gestionale/static/admin/css/dark_mode.css.gz b/GestionaleITS/gestionale/static/admin/css/dark_mode.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..faebccea590bbf329596f47495cc027ed38ea3c8 GIT binary patch literal 849 zcmV-X1FrlZiwFP!00002|D{!3PunmQeb2A3*b7A%T1pE`HE9xJf`@GnAnjq=gJa($ zR$V)@9STDG@AF3pO-tG$Y$3J2r{{j1d-=Km#tAyCG~}QSrb;M{4J}~-DPly=2k1FL z?xb2N+k8d{<4W@d(N8J*bT&QDCTzBD!Fl0~`GvpU*xED28Y6@=>sm5z8J+pNX8Bul zurWmcK}(_~mqi3kF302HWD^vfMaaeQa(LMZ#cK+r zOE&;Qn@6u4Z84$>vQa0D)~eMqL^+<0Nr#;ZWdLWjwMs^gaX7QL5wSf1Hw`D^{w4k| zNlLpAzZtOvTR#wA4t($jf0`-in}MDQNVciJPy0KSzfJeazM9{y_+*>fcWQmB(vv+@ z-mCFstG@S8_a55bs_bN!s<&ynSJBBnYTm77r{U8hbboXG{Tki-H9{E?7NjGfsP&A=$b5jB@O2<6X zu!t{9&TP5*z__Udd3wn*lq~sH3-N?X&YUBv0VMMC0UB9&w8$v51f-;cm{Ki~3(S23 z7q+FPD^GZE74@Y^LewY8M%_;yxT%SAgPj}ZJUsV=v$2FoZIxR>Yjp9OAQ=d}EJ0!q zTPMwgqVu;|o7J|9)x+MwDt!I-pbfZwUZ>*QtDisaHs$Md&^&PJhM>*-cn_S$}OX!(8~a8u^>v2=11Oc1!ngcpPriv}MVy+e8(i;D>LiN!8tg b!#A4S{4*b{Z$rF^Y6S2frdt^naSH$dGXj{n literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css b/GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css new file mode 100644 index 0000000..6d08233 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css @@ -0,0 +1,137 @@ +@media (prefers-color-scheme: dark) { + :root { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; + } + } + + +html[data-theme="dark"] { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; +} + +/* THEME SWITCH */ +.theme-toggle { + cursor: pointer; + border: none; + padding: 0; + background: transparent; + vertical-align: middle; + margin-inline-start: 5px; + margin-top: -1px; +} + +.theme-toggle svg { + vertical-align: middle; + height: 1rem; + width: 1rem; + display: none; +} + +/* +Fully hide screen reader text so we only show the one matching the current +theme. +*/ +.theme-toggle .visually-hidden { + display: none; +} + +html[data-theme="auto"] .theme-toggle .theme-label-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle .theme-label-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle .theme-label-when-light { + display: block; +} + +/* ICONS */ +.theme-toggle svg.theme-icon-when-auto, +.theme-toggle svg.theme-icon-when-dark, +.theme-toggle svg.theme-icon-when-light { + fill: var(--header-link-color); + color: var(--header-bg); +} + +html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle svg.theme-icon-when-light { + display: block; +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + white-space: nowrap; + border: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} diff --git a/GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css.gz b/GestionaleITS/gestionale/static/admin/css/dark_mode.ef27a31af300.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..faebccea590bbf329596f47495cc027ed38ea3c8 GIT binary patch literal 849 zcmV-X1FrlZiwFP!00002|D{!3PunmQeb2A3*b7A%T1pE`HE9xJf`@GnAnjq=gJa($ zR$V)@9STDG@AF3pO-tG$Y$3J2r{{j1d-=Km#tAyCG~}QSrb;M{4J}~-DPly=2k1FL z?xb2N+k8d{<4W@d(N8J*bT&QDCTzBD!Fl0~`GvpU*xED28Y6@=>sm5z8J+pNX8Bul zurWmcK}(_~mqi3kF302HWD^vfMaaeQa(LMZ#cK+r zOE&;Qn@6u4Z84$>vQa0D)~eMqL^+<0Nr#;ZWdLWjwMs^gaX7QL5wSf1Hw`D^{w4k| zNlLpAzZtOvTR#wA4t($jf0`-in}MDQNVciJPy0KSzfJeazM9{y_+*>fcWQmB(vv+@ z-mCFstG@S8_a55bs_bN!s<&ynSJBBnYTm77r{U8hbboXG{Tki-H9{E?7NjGfsP&A=$b5jB@O2<6X zu!t{9&TP5*z__Udd3wn*lq~sH3-N?X&YUBv0VMMC0UB9&w8$v51f-;cm{Ki~3(S23 z7q+FPD^GZE74@Y^LewY8M%_;yxT%SAgPj}ZJUsV=v$2FoZIxR>Yjp9OAQ=d}EJ0!q zTPMwgqVu;|o7J|9)x+MwDt!I-pbfZwUZ>*QtDisaHs$Md&^&PJhM>*-cn_S$}OX!(8~a8u^>v2=11Oc1!ngcpPriv}MVy+e8(i;D>LiN!8tg b!#A4S{4*b{Z$rF^Y6S2frdt^naSH$dGXj{n literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/dashboard.css b/GestionaleITS/gestionale/static/admin/css/dashboard.css new file mode 100644 index 0000000..242b81a --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/dashboard.css @@ -0,0 +1,29 @@ +/* DASHBOARD */ +.dashboard td, .dashboard th { + word-break: break-word; +} + +.dashboard .module table th { + width: 100%; +} + +.dashboard .module table td { + white-space: nowrap; +} + +.dashboard .module table td a { + display: block; + padding-right: .6em; +} + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { + margin-left: 0; +} + +ul.actionlist li { + list-style-type: none; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/GestionaleITS/gestionale/static/admin/css/dashboard.css.gz b/GestionaleITS/gestionale/static/admin/css/dashboard.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..06db5fd5cf463e2a3989b143df3b5bdc73962e1e GIT binary patch literal 267 zcmV+m0rdVKiwFP!00002|AmmTZi6rohIgLgmM*9Ux^y5D4M?rj1}RA&z;F&e#n{Mp zN>SB!FA&nEQ#{zZ-}n9h*>MPYwtIdmvuzGx97M>StPHmZ9`E70l<*b6xO!ueRaWq0 z3iH7xWfgn}*L2hxJShR5SJVCr6MC7#Lz3LxAn-y+@`AaJ*CGXNdds_;Bwtu0*C{@X zb1G9GSF_e}MA8kj)JUH~^eEcdFAiZ_tc%Savi1I@-0a}3%->&&=~seF!bwHE_GGjo z=a-O{+lDk#;xO7Jv)BJNMN8*YG3N&*m>;_NIa-{jG9SVol<8BDgede`_2SdBzbl~> Rb&lMW@dMe)7Ztey007?gfrSB!FA&nEQ#{zZ-}n9h*>MPYwtIdmvuzGx97M>StPHmZ9`E70l<*b6xO!ueRaWq0 z3iH7xWfgn}*L2hxJShR5SJVCr6MC7#Lz3LxAn-y+@`AaJ*CGXNdds_;Bwtu0*C{@X zb1G9GSF_e}MA8kj)JUH~^eEcdFAiZ_tc%Savi1I@-0a}3%->&&=~seF!bwHE_GGjo z=a-O{+lDk#;xO7Jv)BJNMN8*YG3N&*m>;_NIa-{jG9SVol<8BDgede`_2SdBzbl~> Rb&lMW@dMe)7Ztey007?gfr div { + padding-bottom: 10px; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: var(--body-quiet-color); + font-size: 0.8125rem; +} + +.required label, label.required { + font-weight: bold; + color: var(--body-fg); +} + +/* RADIO BUTTONS */ + +form div.radiolist div { + padding-right: 7px; +} + +form div.radiolist.inline div { + display: inline-block; +} + +form div.radiolist label { + width: auto; +} + +form div.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + min-width: 160px; + width: 160px; + word-wrap: break-word; + line-height: 1; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 1.625rem; +} + +.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + overflow-wrap: break-word; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned div.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-left: 0; + padding-left: 0; + font-weight: normal; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + float: none; + width: auto; + display: inline-block; + vertical-align: -3px; + padding: 0 0 5px 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +fieldset .fieldBox { + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p, +form .wide ul.errorlist, +form .wide input + p.help, +form .wide input + div.help { + margin-left: 200px; +} + +form .wide p.help, +form .wide div.help { + padding-left: 50px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block; +} + +fieldset.collapsed { + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; +} + +fieldset.collapsed h2 { + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +fieldset .collapse-toggle { + color: var(--header-link-color); +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline; + color: var(--link-fg); +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: var(--font-family-monospace); +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px 12px; + margin: 0 0 20px; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 2.1875rem; + line-height: 0.9375rem; +} + +.submit-row input, .submit-row a { + margin: 0; +} + +.submit-row input.default { + text-transform: uppercase; +} + +.submit-row a.deletelink { + margin-left: auto; +} + +.submit-row a.deletelink { + display: block; + background: var(--delete-button-bg); + border-radius: 4px; + padding: 0.625rem 0.9375rem; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.closelink { + display: inline-block; + background: var(--close-button-bg); + border-radius: 4px; + padding: 10px 15px; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: var(--delete-button-hover-bg); + text-decoration: none; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: var(--close-button-hover-bg); + text-decoration: none; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: var(--body-quiet-color); + padding: 5px; + font-size: 0.8125rem; + background: var(--darkened-bg); + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 0.6875rem; +} + +.inline-related fieldset { + margin: 0; + background: var(--body-bg); + border: none; + width: 100%; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 0.6875rem; + text-align: left; + font-weight: bold; + background: #bcd; + color: var(--body-bg); +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 0.5625rem; + font-weight: bold; + color: var(--body-quiet-color); + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: var(--body-quiet-color); + background: var(--darkened-bg); + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url("../img/icon-addlink.d519b3bab011.svg") 0 1px no-repeat; + padding-left: 16px; + font-size: 0.75rem; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 1rem; + height: 1rem; + background-image: url("../img/search.7cf54ff789c6.svg"); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/GestionaleITS/gestionale/static/admin/css/forms.c14e1cb06392.css.gz b/GestionaleITS/gestionale/static/admin/css/forms.c14e1cb06392.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1cc0c35dd7af8c029001edeed231706597db72a5 GIT binary patch literal 2243 zcmV;!2t4;6iwFP!00002|Fs(ZZ`(HZ_xu$?hG9(`DYg?ksf|0F+qef~PFy4oHefgu zltkM?Xi<|WCt1+{{T?NeA|=vxHnc_En0oK=eSazci8cvMnUkmF-SJZtt}x3yjL*-J z-x~y%LC*`a?D%AKbaeLK`7*z|aqi~7-8=8kj*h$~O*d{zpPbht2ma74PM3r}4V`rq zhBzJ-rwIzfC|(VnZYOyzkCrrMZWjH8hfc@4>h}66-jq*#nua)aeaaZ!07~-gWRygq zvqkAU*IlD1B~gssfD)PlQ{PoCqRr~mQNG4W&MMY`GZqDixQIlnc<5|^L4q6j1o@bh zXn(Mm1pn(eSmWT)r_aa#tLSV{x{6|#(F9l@8A*2vs+_38OH$!i%5Vu@G6Cu>34R8N zVunDpw1NzyEFtJ+=UI@3nbn<4==W zY2Z>JueHsdaI{(j<1x@jq?Erf#jrAvPs11Y&pg6Rn#gW&&S{DPI>lkB{L}Kk`qXf@ zPf2LIdAT|fvfPcYr*r4i!(uVNEu|?;0*dfb6h`1w88fIQEibvOl+woWqPWm$jVdiw zK5>0QgGURtqpB35jje|c${DqRtIk-QHav0YxIKuG3;5R&4k-gp@x+`6zBNCVZnz(h zMAG3X0wj()+NCjB23;?Vx>KeAub;G(^|$2Fkh*! zJCJ$Ba02&mIRr8jDv4P(mQdE3ub4w&(?lOb9%8KXRAaSZ6c z{4(0*3cE58eTZC+|?q`Fs3#X&PlY8@CeeVb{H1F7QXUQyq624HxB zpV^lPlMvL_g82PrrUU6wd*1J;IYO1u5Mqi;>Ls9SrlMzo*L}_O>19Jpvk9N7P`RX>U1`XZe^ztD=W%)2>rKTTC3kqeI7u(F(gxX`vi@su; z&-2-A{Pn)o%}JVY13^g!PV&B4u<96X1Fw6hj^Wtc6`D!BDx>28GovzR@)Db8MT0rA zjIcJY#jPlKT%|ORLotYiD1F2bE3UsfIc!4Gf<@c`fx21|EIUnw#2UIeU><~eG|^Dl zv`|x-W+{rZ1TuQeM)s~uyT7d zTcS-wUIcOF$d!2Vs{4meH`4`QL6q4c%l%EnlpRF9ZQyfJx0oDy!n(3eg1dhNF)6@%*x$ zOPZ8UH4ac?KJA#1ybv!@P6Qj=FWkZvc{&_Ad6M8XKpAdfBfun>VeW*c|cR_mnj)er|XMJ%GRQr;})Fmqc! zHZog3-ovYAxPw{c75(9UF~2F7eq~KBbL#fK=-+Sn`Y<6_Z48<{EHsm);IjEtp+(ZH z^|QT(u}-uk+XakhDtx0c)U&o6iDc_q6BGFLQfS~^^+mpF-&4a~c$X6F;cjM{^E(ot z)l}_mpsob&k|36#70z7olk-y)eybKpja+=u@p=MrL&F^Eb~(;?+pjc>xHsIxJW8g3 zyuzvB;$BT)Ylo^e^eI}|!Me2uzR(nSjDN*1cj##vjzdu8PQseD9v-IGCT0bF@X6`z zYmmUhf~A^ApU{ko z8C)q{OoOs)z>QXEYq2m*t37OO2D+Wj&pYoE0dDgLY3p9O7jVwSe!woC%=}fBu2=Pz z7b&WEKly?6^@_hbF+~d`r<|a)C6lcR=&G=ympSjXtxj#@{5*8BAcZlfq+RUUEJn3* z(vX9t-Wp}!DEMI%BjT{IF_RaO(rb89iwNL(lE!P>nw|P}MkQYL?c1Il(!6Qiyhe~~ zx1~GjDC{P!Y=(RY@tjret!*Xh*B4#kewv^kcMm|C6ZZ#7@;dmvUpq&Bt8{SLF{k*P zc#Kk#?W-#z`@+#eP;M!WgS4{i>l+#4n;?MUUEt{s2dzMA-#kPqhZF-tef)xW(eowrS&Uz$dfuLhS3D@%6PcznwT|&TKya_2FyT zVpW;aC6qqq#$~6hHGlKnX0517v5wEG~2q3GK|t- z?Og`T{>5^6dG#?El-5ypy5i>YH)4wIOM=sSJ-hd1+yO5e0s@TiBIhn6_$b#hhIg6b RE!_8`{{zpkZquzJ003@1bG!fm literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/forms.css b/GestionaleITS/gestionale/static/admin/css/forms.css new file mode 100644 index 0000000..9a8dad0 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/forms.css @@ -0,0 +1,534 @@ +@import url('widgets.css'); + +/* FORM ROWS */ + +.form-row { + overflow: hidden; + padding: 10px; + font-size: 0.8125rem; + border-bottom: 1px solid var(--hairline-color); +} + +.form-row img, .form-row input { + vertical-align: middle; +} + +.form-row label input[type="checkbox"] { + margin-top: 0; + vertical-align: 0; +} + +form .form-row p { + padding-left: 0; +} + +.flex-container { + display: flex; +} + +.form-multiline { + flex-wrap: wrap; +} + +.form-multiline > div { + padding-bottom: 10px; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: var(--body-quiet-color); + font-size: 0.8125rem; +} + +.required label, label.required { + font-weight: bold; + color: var(--body-fg); +} + +/* RADIO BUTTONS */ + +form div.radiolist div { + padding-right: 7px; +} + +form div.radiolist.inline div { + display: inline-block; +} + +form div.radiolist label { + width: auto; +} + +form div.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + min-width: 160px; + width: 160px; + word-wrap: break-word; + line-height: 1; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 1.625rem; +} + +.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + overflow-wrap: break-word; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned div.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-left: 0; + padding-left: 0; + font-weight: normal; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + float: none; + width: auto; + display: inline-block; + vertical-align: -3px; + padding: 0 0 5px 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +fieldset .fieldBox { + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p, +form .wide ul.errorlist, +form .wide input + p.help, +form .wide input + div.help { + margin-left: 200px; +} + +form .wide p.help, +form .wide div.help { + padding-left: 50px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block; +} + +fieldset.collapsed { + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; +} + +fieldset.collapsed h2 { + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +fieldset .collapse-toggle { + color: var(--header-link-color); +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline; + color: var(--link-fg); +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: var(--font-family-monospace); +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px 12px; + margin: 0 0 20px; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 2.1875rem; + line-height: 0.9375rem; +} + +.submit-row input, .submit-row a { + margin: 0; +} + +.submit-row input.default { + text-transform: uppercase; +} + +.submit-row a.deletelink { + margin-left: auto; +} + +.submit-row a.deletelink { + display: block; + background: var(--delete-button-bg); + border-radius: 4px; + padding: 0.625rem 0.9375rem; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.closelink { + display: inline-block; + background: var(--close-button-bg); + border-radius: 4px; + padding: 10px 15px; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: var(--delete-button-hover-bg); + text-decoration: none; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: var(--close-button-hover-bg); + text-decoration: none; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: var(--body-quiet-color); + padding: 5px; + font-size: 0.8125rem; + background: var(--darkened-bg); + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 0.6875rem; +} + +.inline-related fieldset { + margin: 0; + background: var(--body-bg); + border: none; + width: 100%; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 0.6875rem; + text-align: left; + font-weight: bold; + background: #bcd; + color: var(--body-bg); +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 0.5625rem; + font-weight: bold; + color: var(--body-quiet-color); + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: var(--body-quiet-color); + background: var(--darkened-bg); + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon-addlink.svg) 0 1px no-repeat; + padding-left: 16px; + font-size: 0.75rem; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 1rem; + height: 1rem; + background-image: url(../img/search.svg); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/GestionaleITS/gestionale/static/admin/css/forms.css.gz b/GestionaleITS/gestionale/static/admin/css/forms.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..da29e8697aa4c4b7478bf270c2b89055681402aa GIT binary patch literal 2207 zcmV;Q2w?XgiwFP!00002|Fs%xZ`-!^dwzwm;i63&DYg?QnT-u|8u!AO6Bn_A4Y(Kz zTB2nkw5UmxlPu_ezlV}YkrHV;8``37Or3Lh-Y@0XXp_*CIeALnzk7;;5VOqlv+UjR z@aX9DgY$WIf9u@OexExZPLGbf6-_s8N}rt9BM1J_ElyX2J`J386a+XP7N-dcf+!9L zPPdahmq#laGdGL=#sjD0U3Gi?6mQBWOPU5ab(fSex&f5r*~uu00%wcT_pZA}QA(m1 zyFMi}1*X2KTtu7j#8JM+NzN+PfHM~Ph`5MEVLWg)z#zd5e1evklxY8BFA4tn2Y-$I z$0dFK;m?ZB2Bl#XyNo8l`p`(aQ&8nZ6<(4Gzfy)v@QMjgZ$EL zF9U}^RT$mmghgBj6e)^ z1LHB!N2HX$FvXxU(2@o(?q7L?nKY5z;GEMG19XamQu!z4fAy*1?jXzQ9aW;r4d+%*ORXJeF&yELZ#bk`~n8h)mzk4^_j)glqE-dO>ZhjaY%*Z! z?H?_MWZo^#Dl`k*bBiTQMAArS`zFe zZ!x=;TlBQAmp)5wdSd}_&l>U%czJXBkdphA2CVGV#@hk1Bc$DPaRX0#d-LKO(&9yJ zKK?Mn4DvMp>6$+4j8yGHPw78@pWKX_%>vNHrmm^i(fy==ldf2NgXRUNDNVV%Xb;R0 zq&?c@y5_6fv>G&Yhttc41eN8(n3bA-EG;OMU0!T6V-sqREzkRkZ9dJW)6tiCtDBQF z;Rb?|44mXcvtZRR+6G?tP8`Frxhpi2cvVKn17=2L&g3OF&x!_fXc=K`T#H+g{}`q; zj{`A?1SoyP5G(F7JU(nf(t<_Y0f8EZ1j|lSA+d&T4wwg_9!)e9HZ9atrdf*OEP;$3 zv!T5!)9x=WRz|Jc+1+gZW%Oz6EXIE*}Elb}O`r$crGZ9Jvxt zUNwKXzMU-i3Zl#oS-#vvOxZ!y+Xg-tb&JWNC#);mB>3Bt<>wF+ekbQL4Ep>iN}1CVAqtl~7+)cg+fr+AfRHqvv(6F6%vvHXL=lpUy7pxui+yMB@N8=F^TD z$qVobQXE zYq2m*t37OO2D+Wje|Fv{0^H^g($>9lFW{Vs{eWFOnfa?MU9ajbFH%(Teq8$2*DK5L z*c2_0oN|KFmQ1!PpsT`)Ugo^lwmP+q^Yg&T{1nEVl6J9Yvl!LNNka~ndTW$@rQnBA zjEKX6#!OyBO0VHbEh2#DNgA(hYj*0_8I^d|x37D0Nb{z3^BO^}-Ing8qp+K_vKd-J zi07P%;|-yXh{Jyn$&T|((&ZrpCl;_?q)X4aaiL>@Gy zS0GARyRxS@vL}*%Yl`j~+8j69KzFSfCBrE7*M&Kht*yAK{56+izmnjzUcl~s-FCq1 h1fRgwyo|Z42tLZii{Wjhc+d9j=>PKE#{+^R008OLMce=Y literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css b/GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css new file mode 100644 index 0000000..389772f --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css @@ -0,0 +1,61 @@ +/* LOGIN FORM */ + +.login { + background: var(--darkened-bg); + height: auto; +} + +.login #header { + height: auto; + padding: 15px 16px; + justify-content: center; +} + +.login #header h1 { + font-size: 1.125rem; + margin: 0; +} + +.login #header h1 a { + color: var(--header-link-color); +} + +.login #content { + padding: 20px 20px 0; +} + +.login #container { + background: var(--body-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; + height: auto; +} + +.login .form-row { + padding: 4px 0; +} + +.login .form-row label { + display: block; + line-height: 2em; +} + +.login .form-row #id_username, .login .form-row #id_password { + padding: 8px; + width: 100%; + box-sizing: border-box; +} + +.login .submit-row { + padding: 1em 0 0 0; + margin: 0; + text-align: center; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css.gz b/GestionaleITS/gestionale/static/admin/css/login.586129c60a93.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ca9d533055da1635cd52842a4569b1046aabcdb5 GIT binary patch literal 417 zcmV;S0bc$eiwFP!00002|8-K)O2aS|ecx9EM9^Wjc5WiwyCSFqe?ZdauDvczN|L%w z@!w6`q;p$sA&{GMPtG~H(=mBoJwCmXht=B)8Ba%}iBLI8@;xH%OIfzbwW=jg$S2cR zlyaswAc4~~zh1VO0x&OZLRf9pa`e+PTok}KXwP(vYAO}u9A%!6cv0<0d{^zd`bTXn zuJ<%k(t>m?nOi{*Q5UgiUpp){_yvw_63-SI%8smL+BGC3`lp?Ff=mgegU9Ze3X~h# z9$X)Fdttt_w=s*HjdqF7;0$G-#CfKv;`>9MsnYItXT&iXC6EVI47HO4y`%$}YR0iP z37Llw)hFn+P}_tQ$T`Tax@j8ofg-7s%gh16r~YZph$q#f;gyluotX2e;n8 zGkX~_-8Hk+qI|xtbR@vkX^D2oattMjn*VJ6nyrPMrA%NhhsJsmv{DTQY&(FSf4K1% L;-h8;z5@UNH15V| literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/login.css b/GestionaleITS/gestionale/static/admin/css/login.css new file mode 100644 index 0000000..389772f --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/login.css @@ -0,0 +1,61 @@ +/* LOGIN FORM */ + +.login { + background: var(--darkened-bg); + height: auto; +} + +.login #header { + height: auto; + padding: 15px 16px; + justify-content: center; +} + +.login #header h1 { + font-size: 1.125rem; + margin: 0; +} + +.login #header h1 a { + color: var(--header-link-color); +} + +.login #content { + padding: 20px 20px 0; +} + +.login #container { + background: var(--body-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; + height: auto; +} + +.login .form-row { + padding: 4px 0; +} + +.login .form-row label { + display: block; + line-height: 2em; +} + +.login .form-row #id_username, .login .form-row #id_password { + padding: 8px; + width: 100%; + box-sizing: border-box; +} + +.login .submit-row { + padding: 1em 0 0 0; + margin: 0; + text-align: center; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/GestionaleITS/gestionale/static/admin/css/login.css.gz b/GestionaleITS/gestionale/static/admin/css/login.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ca9d533055da1635cd52842a4569b1046aabcdb5 GIT binary patch literal 417 zcmV;S0bc$eiwFP!00002|8-K)O2aS|ecx9EM9^Wjc5WiwyCSFqe?ZdauDvczN|L%w z@!w6`q;p$sA&{GMPtG~H(=mBoJwCmXht=B)8Ba%}iBLI8@;xH%OIfzbwW=jg$S2cR zlyaswAc4~~zh1VO0x&OZLRf9pa`e+PTok}KXwP(vYAO}u9A%!6cv0<0d{^zd`bTXn zuJ<%k(t>m?nOi{*Q5UgiUpp){_yvw_63-SI%8smL+BGC3`lp?Ff=mgegU9Ze3X~h# z9$X)Fdttt_w=s*HjdqF7;0$G-#CfKv;`>9MsnYItXT&iXC6EVI47HO4y`%$}YR0iP z37Llw)hFn+P}_tQ$T`Tax@j8ofg-7s%gh16r~YZph$q#f;gyluotX2e;n8 zGkX~_-8Hk+qI|xtbR@vkX^D2oattMjn*VJ6nyrPMrA%NhhsJsmv{DTQY&(FSf4K1% L;-h8;z5@UNH15V| literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css new file mode 100644 index 0000000..f76e6ce --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css @@ -0,0 +1,144 @@ +.sticky { + position: sticky; + top: 0; + max-height: 100vh; +} + +.toggle-nav-sidebar { + z-index: 20; + left: 0; + display: flex; + align-items: center; + justify-content: center; + flex: 0 0 23px; + width: 23px; + border: 0; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + cursor: pointer; + font-size: 1.25rem; + color: var(--link-fg); + padding: 0; +} + +[dir="rtl"] .toggle-nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; +} + +.toggle-nav-sidebar:hover, +.toggle-nav-sidebar:focus { + background-color: var(--darkened-bg); +} + +#nav-sidebar { + z-index: 15; + flex: 0 0 275px; + left: -276px; + margin-left: -276px; + border-top: 1px solid transparent; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + overflow: auto; +} + +[dir="rtl"] #nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; + left: 0; + margin-left: 0; + right: -276px; + margin-right: -276px; +} + +.toggle-nav-sidebar::before { + content: '\00BB'; +} + +.main.shifted .toggle-nav-sidebar::before { + content: '\00AB'; +} + +.main > #nav-sidebar { + visibility: hidden; +} + +.main.shifted > #nav-sidebar { + margin-left: 0; + visibility: visible; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: var(--header-color); + font-weight: bold; +} + +#nav-sidebar .current-model { + background: var(--selected-row); +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} + +#nav-filter { + width: 100%; + box-sizing: border-box; + padding: 2px 5px; + margin: 5px 0; + border: 1px solid var(--border-color); + background-color: var(--darkened-bg); + color: var(--body-fg); +} + +#nav-filter:focus { + border-color: var(--body-quiet-color); +} + +#nav-filter.no-results { + background: var(--message-error-bg); +} + +#nav-sidebar table { + width: 100%; +} diff --git a/GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css.gz b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.269a1bd44627.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7398c4df9feb1b5f31ae72b632bf2debd3f25dd7 GIT binary patch literal 779 zcmV+m1N8hKiwFP!00002|Fu@zQrj>Pea}~D%5;Ef?3Jwu79`TV1#bFel9%HPH>ln9YLfG2Xl1Z{7a2brq~m! zrQl@C%oU{>6GjRJ=uc{M?VqrClNwzr-iSkQ9BF=_QR=PY(%4E@Xwiuf!^YY?0=f#8 zD+9SV?&6@s4NY2{f^jZXS_h0p{>g>;`oTE);WwEsxX-F7^La`2>adt-qZs8ywCO5iV-?oyRnN%n`RQTNL34SStGfdfn z862Q@9)+r8iPXE0u+r&48!z6ae}gsamB-7x`A8LCX(py2j3ChleALIKy!^FTJUm=B z&vGVIU^9_8;N(9+esn>|x3N-fg%y#I!XbfVf^$$KZbx5^6{L$+f0i&@yR)Ht+tf1) za?MK##AW`4=P6{C=#u zGho$zbyuz?^PN9~k(T^KJeVoS0XMeb79>W1tZ4M^dV1hLAzrf`$1&SeKR7Xy@l`cF zgx1II`t2<^8}9C|#rvKE7mQqWEZ4Vd)Ov(2{+wJ)-lyK#S6V?+QS?y#c_aDxi_zJs zy-M$8&7O}vON7KbJ++RJ-dBgazQmquQS|CWFOjKNeIgAjLI2CfkkLKhIhUn>KnG)5 zAD*OpTbs1{$GPLK_wa8iz#YTrBLqrQ1GbdTPR?--*0K~R7^BVjiFXVsb*#wGvwzZY Jd|`$P005G@hg1Ln literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/nav_sidebar.css b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.css new file mode 100644 index 0000000..f76e6ce --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.css @@ -0,0 +1,144 @@ +.sticky { + position: sticky; + top: 0; + max-height: 100vh; +} + +.toggle-nav-sidebar { + z-index: 20; + left: 0; + display: flex; + align-items: center; + justify-content: center; + flex: 0 0 23px; + width: 23px; + border: 0; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + cursor: pointer; + font-size: 1.25rem; + color: var(--link-fg); + padding: 0; +} + +[dir="rtl"] .toggle-nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; +} + +.toggle-nav-sidebar:hover, +.toggle-nav-sidebar:focus { + background-color: var(--darkened-bg); +} + +#nav-sidebar { + z-index: 15; + flex: 0 0 275px; + left: -276px; + margin-left: -276px; + border-top: 1px solid transparent; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + overflow: auto; +} + +[dir="rtl"] #nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; + left: 0; + margin-left: 0; + right: -276px; + margin-right: -276px; +} + +.toggle-nav-sidebar::before { + content: '\00BB'; +} + +.main.shifted .toggle-nav-sidebar::before { + content: '\00AB'; +} + +.main > #nav-sidebar { + visibility: hidden; +} + +.main.shifted > #nav-sidebar { + margin-left: 0; + visibility: visible; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: var(--header-color); + font-weight: bold; +} + +#nav-sidebar .current-model { + background: var(--selected-row); +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} + +#nav-filter { + width: 100%; + box-sizing: border-box; + padding: 2px 5px; + margin: 5px 0; + border: 1px solid var(--border-color); + background-color: var(--darkened-bg); + color: var(--body-fg); +} + +#nav-filter:focus { + border-color: var(--body-quiet-color); +} + +#nav-filter.no-results { + background: var(--message-error-bg); +} + +#nav-sidebar table { + width: 100%; +} diff --git a/GestionaleITS/gestionale/static/admin/css/nav_sidebar.css.gz b/GestionaleITS/gestionale/static/admin/css/nav_sidebar.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7398c4df9feb1b5f31ae72b632bf2debd3f25dd7 GIT binary patch literal 779 zcmV+m1N8hKiwFP!00002|Fu@zQrj>Pea}~D%5;Ef?3Jwu79`TV1#bFel9%HPH>ln9YLfG2Xl1Z{7a2brq~m! zrQl@C%oU{>6GjRJ=uc{M?VqrClNwzr-iSkQ9BF=_QR=PY(%4E@Xwiuf!^YY?0=f#8 zD+9SV?&6@s4NY2{f^jZXS_h0p{>g>;`oTE);WwEsxX-F7^La`2>adt-qZs8ywCO5iV-?oyRnN%n`RQTNL34SStGfdfn z862Q@9)+r8iPXE0u+r&48!z6ae}gsamB-7x`A8LCX(py2j3ChleALIKy!^FTJUm=B z&vGVIU^9_8;N(9+esn>|x3N-fg%y#I!XbfVf^$$KZbx5^6{L$+f0i&@yR)Ht+tf1) za?MK##AW`4=P6{C=#u zGho$zbyuz?^PN9~k(T^KJeVoS0XMeb79>W1tZ4M^dV1hLAzrf`$1&SeKR7Xy@l`cF zgx1II`t2<^8}9C|#rvKE7mQqWEZ4Vd)Ov(2{+wJ)-lyK#S6V?+QS?y#c_aDxi_zJs zy-M$8&7O}vON7KbJ++RJ-dBgazQmquQS|CWFOjKNeIgAjLI2CfkkLKhIhUn>KnG)5 zAD*OpTbs1{$GPLK_wa8iz#YTrBLqrQ1GbdTPR?--*0K~R7^BVjiFXVsb*#wGvwzZY Jd|`$P005G@hg1Ln literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/responsive.css b/GestionaleITS/gestionale/static/admin/css/responsive.css new file mode 100644 index 0000000..1d0a188 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/responsive.css @@ -0,0 +1,999 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 0.875rem; + } + + .small { + font-size: 0.75rem; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 15px 20px 20px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + flex-direction: column; + padding: 15px 30px; + justify-content: flex-start; + } + + #branding h1 { + margin: 0 0 8px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 0.8125rem; + } + + /* Changelist */ + + #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 1.375rem; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 1.375rem; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: var(--body-bg); + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 0.6875rem; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: var(--hairline-color); /* XXX Is this used at all? */ + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 0.875rem; + } + + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 2.25rem; + font-size: 0.875rem; + } + + .form-row select { + height: 2.25rem; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid var(--hairline-color); + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned div.radiolist { + margin-left: 2px; + } + + .submit-row { + padding: 8px; + } + + .submit-row a.deletelink { + padding: 10px 7px; + } + + .button, input[type=submit], input[type=button], .submit-row input, a.button { + padding: 7px; + } + + /* Related widget */ + + .related-widget-wrapper { + float: none; + } + + .related-widget-wrapper-link + .selector { + max-width: calc(100% - 30px); + margin-right: 15px; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 10px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: auto; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + margin: auto 15px; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 0.8125rem; + } + + .datetime .timezonewarning { + display: block; + font-size: 0.6875rem; + color: var(--body-quiet-color); + } + + .datetimeshortcuts { + color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #branding h1 { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content, #footer { + padding: 15px; + } + + #footer:empty { + padding: 0; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 1rem; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + .flex-container { + flex-flow: column; + } + + .flex-container.checkbox-row { + flex-flow: row; + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + fieldset.collapsed .form-row { + display: none; + } + + .aligned label { + width: 100%; + min-width: auto; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + font-size: 0.8125rem; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 0.8125rem; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul, + form .aligned ul.errorlist { + margin-left: 0; + padding-left: 0; + } + + form .aligned div.radiolist { + margin-top: 5px; + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned div.radiolist:not(.inline) div + div { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 15px; + } + + /* Selector */ + + .selector { + flex-direction: column; + } + + .selector > * { + float: none; + } + + .selector-available, .selector-chosen { + margin-bottom: 0; + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + float: none; + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto 20px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 1px solid var(--hairline-color); + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { + border-top: 1px solid var(--hairline-color); + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { + border-top: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid var(--hairline-color); + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px; + margin: 0 0 15px; + flex-direction: column; + gap: 8px; + } + + .submit-row input, .submit-row input.default, .submit-row a { + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + text-align: center; + } + + .submit-row a.deletelink { + margin: 0; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + margin: 0 0 5px; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 0.8125rem; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 0.75rem; + line-height: 0.75rem; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: var(--body-bg); + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 0.8125rem; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 0.8125rem; + word-break: break-word; + } +} diff --git a/GestionaleITS/gestionale/static/admin/css/responsive.css.gz b/GestionaleITS/gestionale/static/admin/css/responsive.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fe370fb18b5321f129c5dbce26cde31b8d41839e GIT binary patch literal 3441 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 TI{K|n@#W~hN@bgee@FlTgzmxv literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css b/GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css new file mode 100644 index 0000000..1d0a188 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css @@ -0,0 +1,999 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 0.875rem; + } + + .small { + font-size: 0.75rem; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 15px 20px 20px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + flex-direction: column; + padding: 15px 30px; + justify-content: flex-start; + } + + #branding h1 { + margin: 0 0 8px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 0.8125rem; + } + + /* Changelist */ + + #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 1.375rem; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 1.375rem; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: var(--body-bg); + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 0.6875rem; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: var(--hairline-color); /* XXX Is this used at all? */ + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 0.875rem; + } + + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 2.25rem; + font-size: 0.875rem; + } + + .form-row select { + height: 2.25rem; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid var(--hairline-color); + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned div.radiolist { + margin-left: 2px; + } + + .submit-row { + padding: 8px; + } + + .submit-row a.deletelink { + padding: 10px 7px; + } + + .button, input[type=submit], input[type=button], .submit-row input, a.button { + padding: 7px; + } + + /* Related widget */ + + .related-widget-wrapper { + float: none; + } + + .related-widget-wrapper-link + .selector { + max-width: calc(100% - 30px); + margin-right: 15px; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 10px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: auto; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + margin: auto 15px; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 0.8125rem; + } + + .datetime .timezonewarning { + display: block; + font-size: 0.6875rem; + color: var(--body-quiet-color); + } + + .datetimeshortcuts { + color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #branding h1 { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content, #footer { + padding: 15px; + } + + #footer:empty { + padding: 0; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 1rem; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + .flex-container { + flex-flow: column; + } + + .flex-container.checkbox-row { + flex-flow: row; + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + fieldset.collapsed .form-row { + display: none; + } + + .aligned label { + width: 100%; + min-width: auto; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + font-size: 0.8125rem; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 0.8125rem; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul, + form .aligned ul.errorlist { + margin-left: 0; + padding-left: 0; + } + + form .aligned div.radiolist { + margin-top: 5px; + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned div.radiolist:not(.inline) div + div { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 15px; + } + + /* Selector */ + + .selector { + flex-direction: column; + } + + .selector > * { + float: none; + } + + .selector-available, .selector-chosen { + margin-bottom: 0; + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + float: none; + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto 20px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 1px solid var(--hairline-color); + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { + border-top: 1px solid var(--hairline-color); + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { + border-top: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid var(--hairline-color); + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px; + margin: 0 0 15px; + flex-direction: column; + gap: 8px; + } + + .submit-row input, .submit-row input.default, .submit-row a { + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + text-align: center; + } + + .submit-row a.deletelink { + margin: 0; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + margin: 0 0 5px; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 0.8125rem; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 0.75rem; + line-height: 0.75rem; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: var(--body-bg); + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 0.8125rem; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 0.8125rem; + word-break: break-word; + } +} diff --git a/GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css.gz b/GestionaleITS/gestionale/static/admin/css/responsive.f6533dab034d.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fe370fb18b5321f129c5dbce26cde31b8d41839e GIT binary patch literal 3441 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 TI{K|n@#W~hN@bgee@FlTgzmxv literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css new file mode 100644 index 0000000..31dc8ff --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css @@ -0,0 +1,84 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .related-widget-wrapper-link + .selector { + margin-right: 0; + margin-left: 15px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul, + [dir="rtl"] form .aligned ul.errorlist { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } + [dir="rtl"] .aligned .vCheckboxLabel { + padding: 1px 5px 0 0; + } +} diff --git a/GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css.gz b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.7d1130848605.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e2886b55cf18f6ef73ab137f535ab16d1062de9 GIT binary patch literal 550 zcmV+>0@?i^iwFP!00002|E*O~PunmMe($e1fhIwz(-dumwVJds@i3`q5AZha;S#%v z*Gn8Z7aD2ezvDEt6p|)v!Vi`ue|Mk#`MdLY2zTGE7T0&TFdPpCUlS!Y!byUqSZm4g z3?}~h$E-YszXNdNm(=#lk!3pi4PI#I=Jsi$8VTA+r^4ze<{9|&&Bnu^5qMnW$_h4y z^1WzQB?}}Sr8C&1I2<3wm_~|p&fsCl+N3!U28#C5WhkXiBSC7()h)7e-q`CuX&Y0n zNQK)A2A5e0=TkRTiq?m!gh=7Z#P>gds6tNRbC(UQB4j12 z;)@iEwZ$xRwc^gYf-~@H>lxcubPbWa&9_UtTW#O$bydBM?Xru^1b-aGQ~8tLOTHw7 z+*kaK__LQu-lG^L=5b)qI)f)h7No!#q?%hj(d2s7UnbLMGDkNa!p+aCAB*clE%#!2 zaiHUF+GE`pYM+oXt0Eh9Af>~xPE;Nn%VEL!J8QKiDq0%F(%57l;VEm4-L$O#_%;5u oqjV%cEZ6<_ScR*=l#BNN#L406-YEk9bGnDYBlhp|ut*0003SOIl>h($ literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/responsive_rtl.css b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.css new file mode 100644 index 0000000..31dc8ff --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.css @@ -0,0 +1,84 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .related-widget-wrapper-link + .selector { + margin-right: 0; + margin-left: 15px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul, + [dir="rtl"] form .aligned ul.errorlist { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } + [dir="rtl"] .aligned .vCheckboxLabel { + padding: 1px 5px 0 0; + } +} diff --git a/GestionaleITS/gestionale/static/admin/css/responsive_rtl.css.gz b/GestionaleITS/gestionale/static/admin/css/responsive_rtl.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e2886b55cf18f6ef73ab137f535ab16d1062de9 GIT binary patch literal 550 zcmV+>0@?i^iwFP!00002|E*O~PunmMe($e1fhIwz(-dumwVJds@i3`q5AZha;S#%v z*Gn8Z7aD2ezvDEt6p|)v!Vi`ue|Mk#`MdLY2zTGE7T0&TFdPpCUlS!Y!byUqSZm4g z3?}~h$E-YszXNdNm(=#lk!3pi4PI#I=Jsi$8VTA+r^4ze<{9|&&Bnu^5qMnW$_h4y z^1WzQB?}}Sr8C&1I2<3wm_~|p&fsCl+N3!U28#C5WhkXiBSC7()h)7e-q`CuX&Y0n zNQK)A2A5e0=TkRTiq?m!gh=7Z#P>gds6tNRbC(UQB4j12 z;)@iEwZ$xRwc^gYf-~@H>lxcubPbWa&9_UtTW#O$bydBM?Xru^1b-aGQ~8tLOTHw7 z+*kaK__LQu-lG^L=5b)qI)f)h7No!#q?%hj(d2s7UnbLMGDkNa!p+aCAB*clE%#!2 zaiHUF+GE`pYM+oXt0Eh9Af>~xPE;Nn%VEL!J8QKiDq0%F(%57l;VEm4-L$O#_%;5u oqjV%cEZ6<_ScR*=l#BNN#L406-YEk9bGnDYBlhp|ut*0003SOIl>h($ literal 0 HcmV?d00001 diff --git a/GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css b/GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css new file mode 100644 index 0000000..d40e573 --- /dev/null +++ b/GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css @@ -0,0 +1,298 @@ +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.viewlink, .addlink, .changelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + border-left: none; + border-right: none; + margin-left: 0; + margin-right: 30px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid var(--hairline-color); + padding-right: 10px; + margin-right: -15px; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +.paginator .end { + margin-left: 6px; + margin-right: 0; +} + +.paginator input { + margin-left: 0; + margin-right: auto; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; +} + +.submit-row a.deletelink { + margin-left: 0; + margin-right: auto; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned ul { + margin-right: 163px; + padding-right: 10px; + margin-left: 0; + padding-left: 0; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +form .aligned p.help, +form .aligned div.help { + margin-right: 160px; + padding-right: 10px; +} + +form div.help ul, +form .aligned .checkbox-row + .help, +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-right: 0; + padding-right: 0; +} + +form .wide p.help, form .wide div.help { + padding-left: 0; + padding-right: 50px; +} + +form .wide p, +form .wide ul.errorlist, +form .wide input + p.help, +form .wide input + div.help { + margin-right: 200px; + margin-left: 0px; +} + +.submit-row { + text-align: right; +} + +fieldset .fieldBox { + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; + background: url("../img/calendar-icons.39b290681a8b.svg") 0 -30px no-repeat; +} + +.calendarbox .calendarnav-previous:focus, +.calendarbox .calendarnav-previous:hover { + background-position: 0 -45px; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; + background: url("../img/calendar-icons.39b290681a8b.svg") 0 0 no-repeat; +} + +.calendarbox .calendarnav-next:focus, +.calendarbox .calendarnav-next:hover { + background-position: 0 -15px; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.selector-add { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -64px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -80px; +} + +.selector-remove { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -96px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -112px; +} + +a.selector-chooseall { + background: url("../img/selector-icons.b4555096cea2.svg") right -128px no-repeat; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -144px; +} + +a.selector-clearall { + background: url("../img/selector-icons.b4555096cea2.svg") 0 -160px no-repeat; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -176px; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} diff --git a/GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css.gz b/GestionaleITS/gestionale/static/admin/css/rtl.512d4b53fc59.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f2503b9ac8561f93afecb122717027553fd7ac18 GIT binary patch literal 1281 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 To~Qb9zDM#8M89D%WCQ>J