From fbb4637a77dc5982b4e694dd31a0aa7d11cec17c Mon Sep 17 00:00:00 2001 From: Andrea Lepori Date: Thu, 18 Jun 2020 23:17:08 +0200 Subject: initial commit --- server/__init__.py | 0 server/admin.py | 3 + server/apps.py | 5 ++ server/migrations/__init__.py | 0 server/models.py | 3 + server/templates/server/approve_user.html | 34 ++++++++++ server/templates/server/index.html | 61 ++++++++++++++++++ server/templates/server/user_list.html | 36 +++++++++++ server/tests.py | 3 + server/urls.py | 9 +++ server/views.py | 100 ++++++++++++++++++++++++++++++ 11 files changed, 254 insertions(+) create mode 100644 server/__init__.py create mode 100644 server/admin.py create mode 100644 server/apps.py create mode 100644 server/migrations/__init__.py create mode 100644 server/models.py create mode 100644 server/templates/server/approve_user.html create mode 100644 server/templates/server/index.html create mode 100644 server/templates/server/user_list.html create mode 100644 server/tests.py create mode 100644 server/urls.py create mode 100644 server/views.py (limited to 'server') diff --git a/server/__init__.py b/server/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/admin.py b/server/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/server/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/server/apps.py b/server/apps.py new file mode 100644 index 0000000..f6bd99a --- /dev/null +++ b/server/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ServerConfig(AppConfig): + name = 'server' diff --git a/server/migrations/__init__.py b/server/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/models.py b/server/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/server/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/server/templates/server/approve_user.html b/server/templates/server/approve_user.html new file mode 100644 index 0000000..ae9dc8b --- /dev/null +++ b/server/templates/server/approve_user.html @@ -0,0 +1,34 @@ +{% extends 'registration/base.html' %} + +{% block title %}Admin - Approva Utente{% endblock %} + +{% block nav %} + +{% endblock %} + +{% block content %} +

Inserire un codice per riga

+ +
+ {% csrf_token %} + +

+ +
+{% endblock %} \ No newline at end of file diff --git a/server/templates/server/index.html b/server/templates/server/index.html new file mode 100644 index 0000000..4790a1d --- /dev/null +++ b/server/templates/server/index.html @@ -0,0 +1,61 @@ +{% extends 'registration/base.html' %} + +{% block title %}Admin{% endblock %} + +{% block nav %} + +{% endblock %} + +{% block content %} +
+
+
+
+

+ + + + + + + + + {% for user in users %} + + {% for att in user %} + + {% endfor %} + + {% endfor %} +
UsernameNomeCognomeCodiceStato
{{att}}
+

+
+ +
+
+
+
+
+

I am a very simple card. I am good at containing small bits of information. + I am convenient because I require little markup to use effectively.

+
+ +
+
+
+{% endblock %} \ No newline at end of file diff --git a/server/templates/server/user_list.html b/server/templates/server/user_list.html new file mode 100644 index 0000000..daf7303 --- /dev/null +++ b/server/templates/server/user_list.html @@ -0,0 +1,36 @@ +{% extends 'registration/base.html' %} + +{% block title %}Admin - Lista Utenti{% endblock %} + +{% block nav %} + +{% endblock %} + +{% block content %} + + + + + + + + + {% for user in users %} + + {% for att in user %} + + {% endfor %} + + {% endfor %} +
UsernameNomeCognomeCodiceStato
{{att}}
+{% endblock %} \ No newline at end of file diff --git a/server/tests.py b/server/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/server/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/server/urls.py b/server/urls.py new file mode 100644 index 0000000..a41b346 --- /dev/null +++ b/server/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('', views.index, name='server'), + path('uapprove', views.uapprove, name='uapprove'), + path('ulist', views.ulist, name='ulist'), +] diff --git a/server/views.py b/server/views.py new file mode 100644 index 0000000..ab94fd6 --- /dev/null +++ b/server/views.py @@ -0,0 +1,100 @@ +from django.shortcuts import render +from client.models import UserCode +from django.contrib.auth.models import Group, Permission, User + +# Create your views here. + + +def index(request): + context = {} + if (request.user.is_staff): + parent_group = request.user.groups.values_list('name', flat=True)[ + 0] + users = User.objects.filter(groups__name=parent_group) + out = [] + for user in users: + code = "" + if len(UserCode.objects.filter(user=user)) > 0: + code = 'U' + str(UserCode.objects.filter(user=user)[0].code) + status = "" + if user.is_staff: + status = "Capo" + elif user.has_perm("client.approved"): + status = "Attivo" + else: + status = "In attesa" + out.append([user.username, user.first_name, + user.last_name, code, status]) + context = {'users': out} + return render(request, 'server/index.html', context) + else: + return render(request, 'client/index.html', context) + + +def uapprove(request): + context = {} + if (request.user.is_staff): + if request.method == "POST": + parent_group = request.user.groups.values_list('name', flat=True)[ + 0] + group = Group.objects.get(name=parent_group) + permission = Permission.objects.get(codename='approved') + data = request.POST["codes"] + data += " " + data = data.split("\n") + for i in range(len(data)): + if not data[i].startswith("U"): + data[i] = data[i] + " - Formato errato" + elif not data[i][1:-1].isdigit(): + data[i] = data[i] + " - Formato errato" + elif int(data[i][1:-1]) < 100000 or int(data[i][1:-1]) > 999999: + data[i] = data[i] + " - Formato errato" + elif len(UserCode.objects.filter(code=data[i][1:-1])) == 0: + data[i] = data[i] + " - Invalido" + else: + user = UserCode.objects.filter(code=data[i][1:-1])[0].user + if len(user.groups.values_list('name', flat=True)) == 0: + user.groups.add(group) + user.user_permissions.add(permission) + data[i] = data[i] + " - Ok" + else: + if user.groups.values_list('name', flat=True)[0] == parent_group: + user.user_permissions.add(permission) + data[i] = data[i] + " - Gia` aggiunto" + else: + user.groups.clear() + user.groups.add(group) + user.user_permissions.add(permission) + data[i] = data[i] + " - Ok, cambio branca" + + context = {'messages': data} + + return render(request, 'server/approve_user.html', context) + else: + return render(request, 'client/index.html', context) + + +def ulist(request): + context = {} + if (request.user.is_staff): + parent_group = request.user.groups.values_list('name', flat=True)[ + 0] + users = User.objects.filter(groups__name=parent_group) + out = [] + for user in users: + code = "" + if len(UserCode.objects.filter(user=user)) > 0: + code = 'U' + str(UserCode.objects.filter(user=user)[0].code) + status = "" + if user.is_staff: + status = "Capo" + elif user.has_perm("approved"): + status = "Attivo" + else: + status = "In attesa" + out.append([user.username, user.first_name, + user.last_name, code, status]) + context = {'users': out} + return render(request, 'server/user_list.html', context) + else: + return render(request, 'client/index.html', context) -- cgit v1.2.1