Browse Source

start dal produzione

mauro 1 year ago
commit
5fe7a3a11d
100 changed files with 1525 additions and 0 deletions
  1. 0 0
      alias/__init__.py
  2. BIN
      alias/__pycache__/__init__.cpython-311.pyc
  3. BIN
      alias/__pycache__/__init__.cpython-36.pyc
  4. BIN
      alias/__pycache__/__init__.cpython-37.pyc
  5. BIN
      alias/__pycache__/__init__.cpython-38.pyc
  6. BIN
      alias/__pycache__/__init__.cpython-39.pyc
  7. BIN
      alias/__pycache__/admin.cpython-311.pyc
  8. BIN
      alias/__pycache__/admin.cpython-36.pyc
  9. BIN
      alias/__pycache__/admin.cpython-37.pyc
  10. BIN
      alias/__pycache__/admin.cpython-38.pyc
  11. BIN
      alias/__pycache__/admin.cpython-39.pyc
  12. BIN
      alias/__pycache__/apps.cpython-311.pyc
  13. BIN
      alias/__pycache__/apps.cpython-39.pyc
  14. BIN
      alias/__pycache__/forms.cpython-311.pyc
  15. BIN
      alias/__pycache__/forms.cpython-36.pyc
  16. BIN
      alias/__pycache__/forms.cpython-37.pyc
  17. BIN
      alias/__pycache__/forms.cpython-38.pyc
  18. BIN
      alias/__pycache__/forms.cpython-39.pyc
  19. BIN
      alias/__pycache__/models.cpython-311.pyc
  20. BIN
      alias/__pycache__/models.cpython-36.pyc
  21. BIN
      alias/__pycache__/models.cpython-37.pyc
  22. BIN
      alias/__pycache__/models.cpython-38.pyc
  23. BIN
      alias/__pycache__/models.cpython-39.pyc
  24. BIN
      alias/__pycache__/urls.cpython-311.pyc
  25. BIN
      alias/__pycache__/urls.cpython-36.pyc
  26. BIN
      alias/__pycache__/urls.cpython-37.pyc
  27. BIN
      alias/__pycache__/urls.cpython-38.pyc
  28. BIN
      alias/__pycache__/urls.cpython-39.pyc
  29. BIN
      alias/__pycache__/views.cpython-311.pyc
  30. BIN
      alias/__pycache__/views.cpython-36.pyc
  31. BIN
      alias/__pycache__/views.cpython-37.pyc
  32. BIN
      alias/__pycache__/views.cpython-38.pyc
  33. BIN
      alias/__pycache__/views.cpython-39.pyc
  34. 3 0
      alias/admin.py
  35. 6 0
      alias/apps.py
  36. 58 0
      alias/forms.py
  37. 31 0
      alias/migrations/0001_initial.py
  38. 0 0
      alias/migrations/__init__.py
  39. BIN
      alias/migrations/__pycache__/0001_initial.cpython-311.pyc
  40. BIN
      alias/migrations/__pycache__/0001_initial.cpython-36.pyc
  41. BIN
      alias/migrations/__pycache__/0001_initial.cpython-37.pyc
  42. BIN
      alias/migrations/__pycache__/0001_initial.cpython-38.pyc
  43. BIN
      alias/migrations/__pycache__/0001_initial.cpython-39.pyc
  44. BIN
      alias/migrations/__pycache__/__init__.cpython-311.pyc
  45. BIN
      alias/migrations/__pycache__/__init__.cpython-36.pyc
  46. BIN
      alias/migrations/__pycache__/__init__.cpython-37.pyc
  47. BIN
      alias/migrations/__pycache__/__init__.cpython-38.pyc
  48. BIN
      alias/migrations/__pycache__/__init__.cpython-39.pyc
  49. 21 0
      alias/models.py
  50. 1 0
      alias/static
  51. 119 0
      alias/templates/Alias.Edit.html
  52. 106 0
      alias/templates/Alias.Edit.ori
  53. 105 0
      alias/templates/Alias.List.html
  54. 3 0
      alias/tests.py
  55. 10 0
      alias/urls.py
  56. 188 0
      alias/views.py
  57. 0 0
      cancellazione/__init__.py
  58. BIN
      cancellazione/__pycache__/__init__.cpython-311.pyc
  59. BIN
      cancellazione/__pycache__/__init__.cpython-36.pyc
  60. BIN
      cancellazione/__pycache__/__init__.cpython-37.pyc
  61. BIN
      cancellazione/__pycache__/__init__.cpython-38.pyc
  62. BIN
      cancellazione/__pycache__/__init__.cpython-39.pyc
  63. BIN
      cancellazione/__pycache__/admin.cpython-311.pyc
  64. BIN
      cancellazione/__pycache__/admin.cpython-36.pyc
  65. BIN
      cancellazione/__pycache__/admin.cpython-37.pyc
  66. BIN
      cancellazione/__pycache__/admin.cpython-38.pyc
  67. BIN
      cancellazione/__pycache__/admin.cpython-39.pyc
  68. BIN
      cancellazione/__pycache__/apps.cpython-311.pyc
  69. BIN
      cancellazione/__pycache__/apps.cpython-39.pyc
  70. BIN
      cancellazione/__pycache__/models.cpython-311.pyc
  71. BIN
      cancellazione/__pycache__/models.cpython-36.pyc
  72. BIN
      cancellazione/__pycache__/models.cpython-37.pyc
  73. BIN
      cancellazione/__pycache__/models.cpython-38.pyc
  74. BIN
      cancellazione/__pycache__/models.cpython-39.pyc
  75. BIN
      cancellazione/__pycache__/urls.cpython-311.pyc
  76. BIN
      cancellazione/__pycache__/urls.cpython-36.pyc
  77. BIN
      cancellazione/__pycache__/urls.cpython-37.pyc
  78. BIN
      cancellazione/__pycache__/urls.cpython-38.pyc
  79. BIN
      cancellazione/__pycache__/urls.cpython-39.pyc
  80. BIN
      cancellazione/__pycache__/views.cpython-311.pyc
  81. BIN
      cancellazione/__pycache__/views.cpython-36.pyc
  82. BIN
      cancellazione/__pycache__/views.cpython-37.pyc
  83. BIN
      cancellazione/__pycache__/views.cpython-38.pyc
  84. BIN
      cancellazione/__pycache__/views.cpython-39.pyc
  85. 3 0
      cancellazione/admin.py
  86. 6 0
      cancellazione/apps.py
  87. BIN
      cancellazione/migrations/__pycache__/__init__.cpython-36.pyc
  88. 14 0
      cancellazione/models.py
  89. 21 0
      cancellazione/templates/CancellazioneAlias.html
  90. 22 0
      cancellazione/templates/CancellazioneDatabase.html
  91. 21 0
      cancellazione/templates/CancellazioneDominio.html
  92. 155 0
      cancellazione/templates/CancellazioneLista.html
  93. 20 0
      cancellazione/templates/CancellazioneRisultato.html
  94. 21 0
      cancellazione/templates/CancellazioneUtente.html
  95. 20 0
      cancellazione/templates/old/CancellazioneAliasRisultato.html
  96. 20 0
      cancellazione/templates/old/CancellazioneDominioRisultato.html
  97. 3 0
      cancellazione/tests.py
  98. 13 0
      cancellazione/urls.py
  99. 535 0
      cancellazione/views.py
  100. 0 0
      causali/__init__.py

+ 0 - 0
alias/__init__.py


BIN
alias/__pycache__/__init__.cpython-311.pyc


BIN
alias/__pycache__/__init__.cpython-36.pyc


BIN
alias/__pycache__/__init__.cpython-37.pyc


BIN
alias/__pycache__/__init__.cpython-38.pyc


BIN
alias/__pycache__/__init__.cpython-39.pyc


BIN
alias/__pycache__/admin.cpython-311.pyc


BIN
alias/__pycache__/admin.cpython-36.pyc


BIN
alias/__pycache__/admin.cpython-37.pyc


BIN
alias/__pycache__/admin.cpython-38.pyc


BIN
alias/__pycache__/admin.cpython-39.pyc


BIN
alias/__pycache__/apps.cpython-311.pyc


BIN
alias/__pycache__/apps.cpython-39.pyc


BIN
alias/__pycache__/forms.cpython-311.pyc


BIN
alias/__pycache__/forms.cpython-36.pyc


BIN
alias/__pycache__/forms.cpython-37.pyc


BIN
alias/__pycache__/forms.cpython-38.pyc


BIN
alias/__pycache__/forms.cpython-39.pyc


BIN
alias/__pycache__/models.cpython-311.pyc


BIN
alias/__pycache__/models.cpython-36.pyc


BIN
alias/__pycache__/models.cpython-37.pyc


BIN
alias/__pycache__/models.cpython-38.pyc


BIN
alias/__pycache__/models.cpython-39.pyc


BIN
alias/__pycache__/urls.cpython-311.pyc


BIN
alias/__pycache__/urls.cpython-36.pyc


BIN
alias/__pycache__/urls.cpython-37.pyc


BIN
alias/__pycache__/urls.cpython-38.pyc


BIN
alias/__pycache__/urls.cpython-39.pyc


BIN
alias/__pycache__/views.cpython-311.pyc


BIN
alias/__pycache__/views.cpython-36.pyc


BIN
alias/__pycache__/views.cpython-37.pyc


BIN
alias/__pycache__/views.cpython-38.pyc


BIN
alias/__pycache__/views.cpython-39.pyc


+ 3 - 0
alias/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 6 - 0
alias/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AliasConfig(AppConfig):
+    name = 'alias'
+    default_auto_field = 'django.db.models.BigAutoField'

+ 58 - 0
alias/forms.py

@@ -0,0 +1,58 @@
+from django import forms
+
+import re
+from sicurezza.views import getSecurityLevelAll
+from .models import *
+from domini.models import *
+
+from django import forms
+
+class formAlias(forms.Form):
+  def __init__(self,*args,**kwargs):
+    forms.Form.__init__(self,*args,**kwargs)
+
+  def update(self):
+    self.fields['mailfrom'] = forms.CharField(required=True)
+    self.fields['domain'] = forms.IntegerField(required=True)
+    self.fields['mailto'] = forms.CharField(required=False,max_length=128)
+    self.fields['nota'] = forms.CharField(widget=forms.Textarea(attrs={'rows':4,'cols':60}),required=False,initial='')
+
+    self.fields['enabled'] =  forms.BooleanField(required=False)
+    self.fields['locked'] = forms.BooleanField(required=False)
+    self.fields['tobedeleted'] = forms.BooleanField(required=False)
+    self.fields['utenteautorizzato'] = forms.CharField(required=False,max_length=128)
+
+  def clean_mailto(self):
+    #check correttezza email.
+    mailto = self.data['mailto']
+    print('data',mailto)
+
+    # se 'mailto' è vuoto, si prende l'utente autorizzato.
+    if not len(mailto): mailto = self.data['utenteautorizzato']
+    print('data full',mailto)
+
+    print("self.data['domain']",self.data['domain'])
+    domain_domain=""
+    try:
+      domain = Domini.objects.get(pk=self.data['domain'])
+      domain_domain = domain.nome
+    except Domini.DoesNotExist:
+      raise forms.ValidationError("Il dominio non e' valido")
+
+    baseconfronto = "{}@{}".format(self.data['mailfrom'],domain.nome)
+    print("base confronto: ",baseconfronto)
+
+    if mailto == baseconfronto:
+      raise forms.ValidationError("La destinazione non può essere uguale alla sorgente!")
+
+    '''
+    #cp = re.compile("[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}")
+    cp = re.compile("[a-z0-9\.\+_-]+@[a-z0-9\._-]+\.[a-z]{2,6}")
+
+    if cp.match(baseconfronto):
+      print('confronto non valido')
+      raise forms.ValidationError("Formato Email errato")
+    else: print('formato mail valido')
+    '''
+
+    return mailto

+ 31 - 0
alias/migrations/0001_initial.py

@@ -0,0 +1,31 @@
+# Generated by Django 2.1.7 on 2020-03-20 16:09
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Alias',
+            fields=[
+                ('id', models.IntegerField(db_column='id', primary_key=True, serialize=False)),
+                ('mailfrom', models.CharField(db_column='from', max_length=128)),
+                ('mailto', models.CharField(db_column='to', max_length=256)),
+                ('enabled', models.BooleanField(db_column='enabled')),
+                ('tobedeleted', models.BooleanField(db_column='tobedeleted')),
+                ('locked', models.BooleanField(db_column='locked')),
+                ('nota', models.TextField(db_column='nota')),
+            ],
+            options={
+                'db_table': 'local_alias',
+                'ordering': ['id'],
+                'managed': False,
+            },
+        ),
+    ]

+ 0 - 0
alias/migrations/__init__.py


BIN
alias/migrations/__pycache__/0001_initial.cpython-311.pyc


BIN
alias/migrations/__pycache__/0001_initial.cpython-36.pyc


BIN
alias/migrations/__pycache__/0001_initial.cpython-37.pyc


BIN
alias/migrations/__pycache__/0001_initial.cpython-38.pyc


BIN
alias/migrations/__pycache__/0001_initial.cpython-39.pyc


BIN
alias/migrations/__pycache__/__init__.cpython-311.pyc


BIN
alias/migrations/__pycache__/__init__.cpython-36.pyc


BIN
alias/migrations/__pycache__/__init__.cpython-37.pyc


BIN
alias/migrations/__pycache__/__init__.cpython-38.pyc


BIN
alias/migrations/__pycache__/__init__.cpython-39.pyc


+ 21 - 0
alias/models.py

@@ -0,0 +1,21 @@
+from django.db import models
+
+# Create your models here.
+from domini.models import *
+
+class Alias(models.Model):
+  id = models.IntegerField(db_column='id',primary_key=True)
+  mailfrom = models.CharField(db_column='from',max_length=128)
+  domain   = models.ForeignKey('domini.Domini',db_column='domain',on_delete=models.CASCADE)
+  mailto   = models.CharField(db_column='to',max_length=256)
+  enabled  = models.BooleanField(db_column='enabled')
+  tobedeleted = models.BooleanField(db_column='tobedeleted')
+  locked   = models.BooleanField(db_column='locked')
+  nota     = models.TextField(db_column='nota')
+
+  class Meta:
+    ordering = ['id']
+    db_table = 'mail_alias'
+    managed  = False
+
+

+ 1 - 0
alias/static

@@ -0,0 +1 @@
+../static

+ 119 - 0
alias/templates/Alias.Edit.html

@@ -0,0 +1,119 @@
+{% extends 'base.html' %}
+
+{% block headersupplement %}
+  <script>
+    function updatemailfrom() {
+      var randInt = Math.floor(Math.random()*100000000);
+	    $('#mailfrom').val(' {{utenteautorizzato.mail }}'+randInt);
+      }
+  </script>
+  <script>
+    function copyToClipboard() {
+      mailfrom = document.getElementById("mailfrom");
+      domain_nome = document.getElementById("domain_name");
+      alias = document.getElementById('alias');
+      alias.value = mailfrom.value+"@"+domain_nome.value;
+      alias.select();
+      document.execCommand('copy');
+    }
+  </script>
+{% endblock %}
+
+{% block top %}
+  <p>
+    utente che sta effettuando gli aggiornamenti: {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+  {% if user %}
+    <p>
+      si stanno effettuando aggiornamenti sull'alias: {{ alias.mailfrom }}@{{ alias.domain.nome }}
+    </p>
+  {% endif %}
+{% endblock %}
+
+{% block body %}
+
+  <div>Pannello Controllo alias - gestione</div>
+  <div><br></div>
+
+  <form name='aliasedit' method='post'>
+    <input type='hidden' id='utenteautorizzato' name='utenteautorizzato' value='{{ formalias.utenteautorizzato.value }}' readonly>
+    <input type='hidden' id='alias' name='alias' value="">
+    {% csrf_token %}
+    <div class='row form-group'>
+      <div class='col'>
+        <label for='mailfrom'>Alias Mail From</label>
+	<input type='text' class='form-control' id='mailfrom' name='mailfrom' placeholder='Mail From' value='{{ formalias.mailfrom.value }}' {% if formalias.locked.value %}readonly{% endif %}>
+      </div>
+
+      <div class='col'>
+        <label for='domain_name'>Dominio</label>
+        <input type='text' class='form-control' id='domain_name' name='domain_name' value='{{ alias.domain.nome }}' readonly>
+	<input type='hidden' name='domain' value={{ formalias.domain.value }}>
+      </div>
+      <div class='col'>
+	<label for='mailfrom_generator'>-</label><br>
+	<button type='button' class='btn btn-primary' id='mailfrom_generator' onclick="updatemailfrom()">Casuale</button>
+      </div>
+      <div class='col'>
+        <label for='buttonshare'>Copia Password</label>
+        <button type='button' class='form-control btn btn-secondary' id='buttonshare' onclick='copyToClipboard();'>Clipboard</button>
+      </div>
+
+    </div>
+  <div class='form-group'>
+    <label for='mailto'>Email di destinazione</label>
+    <input type='text' class='form-control' id='mailto' name="mailto" value='{{ formalias.mailto.value }}' {% if formalias.locked.value %}readonly{% endif %} placeholder='{{ formalias.utenteautorizzato.value }}'>
+  </div>
+
+  <div class='form-group'>
+     <label for='nota'>Note e appunti</label>
+     <textarea class='form-control' rows='3' id='nota' name='nota' placeholder='note e appunti' >{{ formalias.nota.value }}</textarea>
+  </div>
+
+  <div class='form-group'>
+          <label for='locked'    class='form-check-label' for='locked'>Alias Bloccato:</label>
+	  <input type='checkbox' class='form-check-input' id='locked' name='locked'
+	  {% if formalias.locked.value %} checked {% endif %}> 
+
+        <label for='enabled'   class='form-check-label' for='enabled'>Alias Attivo: </label>
+	<input type='checkbox' class='form-check-input' id='enabled' name='enabled'
+	       {% if formalias.enabled.value %} checked {% endif %}> 
+
+      {% if 'ALIASTOBEDELETED' in securitylist %}
+        <label for='tobedeleted' class="form-check-label" for='tobedeleted'>Account da eliminare: </label>
+	<input type='checkbox' class='form-check-input' id='tobedeleted' name='tobedeleted' 
+	{% if formalias.tobedeleted.value %} checked {% endif %} 
+	{% if formalias.locked.value %} disabled {% endif %}>
+      {% endif %}
+  </div>
+
+  <div>
+    {% if formalias.errors %}
+      <p>Rilevati Errori, impossibile proseguire.</p>
+      {% for f in formalias %}
+        {% for e in f.errors %}
+          <div class="alter alter-danger">
+            <strong>{{f.label|escape }}: {{ e|escape }}</strong>
+          </div>
+        {% endfor %}
+      {% endfor %}
+      {% for e in formalias.non_field_errors %}
+        <div class="alter alter-danger">
+          <strong>{{ e|escape }}</strong>
+        </div>
+      {% endfor %}
+    {% endif %}
+  </div>
+
+  <div><br></div>
+   <div class=' form-group btn-group' role='group' aria-label='conferme'>
+    <button type='submit' class='btn btn-primary'>Conferma</button>
+    <button type='reset' class='btn btn-secondary'>Reset</button>
+    <button type='submit' class='btn btn-secondary' name="Ritorno">Ritorno (Senza salvare)</button>
+  </div>
+
+</form>
+</div>
+
+{% endblock %}
+

+ 106 - 0
alias/templates/Alias.Edit.ori

@@ -0,0 +1,106 @@
+{% extends 'base.html' %}
+
+{% block headersupplement %}
+  <script>
+    function updatemailfrom() {
+      var randInt = Math.floor(Math.random()*100000000);
+	    $('#mailfrom').val(' {{utenteautorizzato.mail }}'+randInt);
+      }
+  </script>
+{% endblock %}
+
+{% block top %}
+  <p>
+    utente che sta effettuando gli aggiornamenti: {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+  {% if user %}
+    <p>
+      si stanno effettuando aggiornamenti sull'alias: {{ alias.mailfrom }}@{{ alias.domain.nome }}
+    </p>
+  {% endif %}
+{% endblock %}
+
+{% block body %}
+
+  <div>Pannello Controllo alias - gestione</div>
+  <div><br></div>
+
+  <form name='aliasedit' method='post'>
+    {% csrf_token %}
+    <div class='row form-group'>
+      <div class='col'>
+        <label for='mailfrom'>Alias Mail From</label>
+	<input type='text' class='form-control' id='mailfrom' name='mailfrom' placeholder='Mail From' value='{{ formalias.mailfrom.value }}' {% if formalias.locked.value %}readonly{% endif %}>
+      </div>
+
+      <div class='col'>
+        <label for='domain_name'>Dominio</label>
+        <input type='text' class='form-control' id='domain_name' name='domain_name' value='{{ alias.domain.nome }}' readonly>
+	<input type='hidden' name='domain' value={{ formalias.domain.value }}>
+      </div>
+    </div>
+      <div class='col'>
+	<label for='mailfrom_generator'>-</label><br>
+	<button type='button' class='btn btn-primary' id='mailfrom_generator' onclick="updatemailfrom()">Casuale</button>
+      </div>
+
+  <div class='form-group'>
+    <label for='mailto'>Email di destinazione</label>
+    <input type='text' class='form-control' id='mailto' name="mailto" value='{{ formalias.mailto.value }}' {% if formalias.locked.value %}readonly{% endif %} placeholder='{{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}'>
+  </div>
+
+  <div class='form-group'>
+     <label for='nota'>Note e appunti</label>
+     <textarea class='form-control' rows='3' id='nota' name='nota' placeholder='note e appunti' >{{ formalias.nota.value }}</textarea>
+  </div>
+
+  <div class='form-group'>
+        {% if 'ALIASLOCKED' in securitylist %}
+          <label for='locked'    class='form-check-label' for='locked'>Alias Bloccato:</label>
+	  <input type='checkbox' class='form-check-input' id='locked' name='locked'
+	  {% if formalias.locked.value %} checked {% endif %}> 
+        {% endif %}
+
+        <label for='enabled'   class='form-check-label' for='enabled'>Alias Attivo: </label>
+	<input type='checkbox' class='form-check-input' id='enabled' name='enabled'
+	{% if formalias.enabled.value %} checked {% endif %} 
+	{% if formalias.locked.value %} disabled {% endif %}>
+
+      {% if 'ALIASTOBEDELETED' in securitylist %}
+        <label for='tobedeleted' class="form-check-label" for='tobedeleted'>Account da eliminare: </label>
+	<input type='checkbox' class='form-check-input' id='tobedeleted' name='tobedeleted' 
+	{% if formalias.tobedeleted.value %} checked {% endif %} 
+	{% if formalias.locked.value %} disabled {% endif %}>
+      {% endif %}
+  </div>
+
+  <div>
+    {% if formalias.errors %}
+      <p>Rilevati Errori, impossibile proseguire.</p>
+      {% for f in formalias %}
+        {% for e in f.errors %}
+          <div class="alter alter-danger">
+            <strong>{{f.label|escape }}: {{ e|escape }}</strong>
+          </div>
+        {% endfor %}
+      {% endfor %}
+      {% for e in formalias.non_field_errors %}
+        <div class="alter alter-danger">
+          <strong>{{ e|escape }}</strong>
+        </div>
+      {% endfor %}
+    {% endif %}
+  </div>
+
+  <div><br></div>
+   <div class=' form-group btn-group' role='group' aria-label='conferme'>
+    <button type='submit' class='btn btn-primary'>Conferma</button>
+    <button type='reset' class='btn btn-secondary'>Reset</button>
+    <button type='submit' class='btn btn-secondary' name="Ritorno">Ritorno (Senza salvare)</button>
+  </div>
+
+</form>
+</div>
+
+{% endblock %}
+

+ 105 - 0
alias/templates/Alias.List.html

@@ -0,0 +1,105 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente che sta effettuando gli aggiornamenti {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+  {% if dominio %}
+    <p>
+      Dominio su cui si sta' lavorando: {{ dominio.nome }}
+    </p>
+  {% endif %}
+  {% if alias %}
+    <p>
+      si stanno effettuando aggiornamenti su: {{ user.mail }}@{{ user.domain.nome }}
+    </p>
+  {% endif %}
+{% endblock %}
+
+{% block body %}
+  <form name='newdomain' method='post'>
+    {% csrf_token %}
+    {% if not 'EDITALIASNEW' in securitlist %}
+    <button class="btn btn-primary" type="submit" name='Nuovo alias' value="Nuovo alias">Nuovo Alias</button>
+    {% endif %}
+  </form>
+  <table class='table table-striped table-hover'>
+    <thead class='thead-dark'>
+      <tr>
+        <th scope='col'>#</th>
+        <th scope='col'>MailFrom</th>
+        <th scope='col'>MailTo</th>
+        <th scope='col'>*</th>
+        <th scope='col'>Attività</th>
+      </tr>
+    </thead>
+    <tbody>
+      <form name="aliaslist" method="POST">
+      {% csrf_token %}
+      {% for u in aliaslist %}
+        <tr>
+          <th scope='row'>{{ u.id }}</th>
+          <td> {{ u.mailfrom }} </td>
+          <td> {{ u.mailto }} </td>
+          <td>{% if u.enabled %}*{% else %}-{% endif %}</td>
+	  <td><button class="btn btn-primary" type="submit" name='edit' value="{{ u.id }}" {% if not u.enabled %} disabled {% endif %}>Edit</button>
+  	      <button class="btn btn-primary" type="button" data-toggle="modal" data-target="#ConfirmDisable{{ u.id }}" name='enabledisablebutton' value="{{ u.id }}" >
+		      {% if u.enabled %}Disabilita{% else %}Abilita{% endif %}</button>
+	      <button class="btn btn-primary" type='button' data-toggle='modal' data-target="#ConfirmDelete{{ u.id }}" name='deletebutton' value="{{ u.id }}" {% if not u.locked and u.enabled %} disabled {% endif %}>{% if u.tobedeleted %}Recupera{% else %}Cancella{% endif %}</button></td>
+        </tr>
+
+        <!-- Modal -->
+        <div class="modal fade" id="ConfirmDisable{{ u.id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
+          <div class="modal-dialog" role="document">
+            <div class="modal-content">
+              <div class="modal-header">
+                <h5 class="modal fade" id="exampleModalLongTitle">Conferma Disattivazione</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                  <span aria-hidden="true">&times;</span>
+                </button>
+              </div>
+              <div class="modal-body">
+		{% if u.enabled %}
+                Sei sicuro di voler disattivare questo Alias? 
+		{% else %}
+		Vuoi riattivare questo Alias?
+		{% endif %}
+              </div>
+              <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+		<button type="submit" class="btn btn-primary" name="enabledisablebutton" value="{{ u.id }}">Conferma</button>
+              </div>
+            </div>  
+          </div>  
+        </div>
+
+	<!-- Modal -->
+        <div class="modal fade" id="ConfirmDelete{{ u.id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
+          <div class="modal-dialog" role="document">
+            <div class="modal-content">
+              <div class="modal-header">
+                <h5 class="modal fade" id="exampleModalLongTitle">Impostare per la cancellazione?</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                  <span aria-hidden="true">&times;</span>
+                </button>
+              </div>
+              <div class="modal-body">
+		{% if u.tobedeleted %}
+		Confermi che l'ALIAS venga recuperato?
+		{% else %}
+		Confermi che l'ALIAS venga impostato per la cancellazione?
+		{% endif %}
+              </div>
+              <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+		<button type="submit" class="btn btn-primary" name="deletebutton" value="{{ u.id }}">Conferma</button>
+              </div>
+            </div>  
+          </div>  
+        </div>
+
+
+      {% endfor %}
+      </form>
+    </tbody>
+{% endblock %}

+ 3 - 0
alias/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 10 - 0
alias/urls.py

@@ -0,0 +1,10 @@
+from django.urls import path
+from . import views
+
+app_name='Alias'
+urlpatterns = [
+  path('',views.AliasList,name='AliasList'), 
+  path('lista',views.AliasList,name='AliasListList'),
+  path('edit',views.AliasEdit,name='AliasEdit'),
+  ]
+

+ 188 - 0
alias/views.py

@@ -0,0 +1,188 @@
+from django.shortcuts import render
+from django.http import HttpResponseRedirect
+from django.urls import reverse
+  
+from .models import *
+from .forms import *
+      
+from sicurezza.views import *
+from comunicazioni.views import *
+
+def AliasList(request):
+
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  alias2edit = session['_alias2edit_']
+  domain2edit = session['_domain2edit_']
+  request.session['_from_']="Alias:AliasList"
+
+  try:
+    utenteautorizzato = User.objects.get(pk=userauth)
+  except User.DoesNotExist as dne:
+    return  HttpResponseRedirect(reverse('Login:login',args={}))
+
+  if not domain2edit:
+    domain2edit = utenteautorizzato.domain.id
+
+  dominio = Domini.objects.get(pk=domain2edit)
+  aliaslist = Alias.objects.filter(domain=domain2edit).order_by('mailfrom')
+
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['alias'] = None
+  value['aliaslist'] = aliaslist
+  value['dominio'] = dominio
+  value['navbar'] = True
+
+  print("livello autorizzazione",utenteautorizzato.securitylevel_id)
+  securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
+  securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
+  securitylist =  getSecurityList(securityrow)
+  value['securitylist'] = securitylist
+  value['securityrow'] = securityrow
+  value['securityrowLen'] = len(securityrow)
+
+  if request.method=="POST":
+
+    if "Nuovo alias" in request.POST:
+      print('nuovo alias')
+      request.session['_alias2edit_'] = 0
+
+      #return  HttpResponseRedirect(reverse('Alias:AliasNew',args={}))
+      return HttpResponseRedirect(reverse('Alias:AliasEdit',args=[]))
+
+    if "edit" in request.POST:
+      print('id da editare',request.POST['edit'])
+      request.session['_alias2edit_'] = request.POST['edit']
+      
+      return HttpResponseRedirect(reverse('Alias:AliasEdit',args={}))
+
+    if "enabledisablebutton" in request.POST :
+      print('id da disattivare/attivare',request.POST['enabledisablebutton'])
+      idpost = request.POST['enabledisablebutton']
+      u = Alias.objects.get(pk=idpost)
+      
+      u.enabled = not u.enabled
+      if not u.locked: u.save()
+
+    if 'deletebutton' in request.POST:
+      print('id da disattivare',request.POST['deletebutton'])
+      idpost = request.POST['deletebutton']
+      u = Alias.objects.get(pk=idpost)
+      if not u.locked and not u.enabled:
+        u.tobedeleted = not u.tobedeleted
+        if u.locked: u.save()
+
+  return render(request,"Alias.List.html",value)
+
+def AliasEdit(request):
+
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  alias2edit = session['_alias2edit_']
+  domain2edit = session['_domain2edit_']
+
+  try:
+    utenteautorizzato = User.objects.get(pk=userauth)
+  except User.DoesNotExist as dne:
+    return  HttpResponseRedirect(reverse('Login:login',args={}))
+
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+  print("livello autorizzazione",utenteautorizzato.securitylevel_id)
+  securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
+  securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
+  securitylist =  getSecurityList(securityrow)
+  value['securitylist'] = securitylist
+  value['securityrow'] = securityrow
+  value['securityrowLen'] = len(securityrow)
+
+  domain = utenteautorizzato.domain
+  try:
+    domain = Domini.objects.get(pk=domain2edit)
+  except domain.DoesNotExist as dne:
+    print(dne)
+
+  alias = Alias()
+  alias.domain = domain
+  alias.enabled = True
+  alias.locked = False
+  alias.tobedeleted = False
+
+  try:
+    alias = Alias.objects.get(pk=alias2edit)
+  except Alias.DoesNotExist as dne:
+    print(dne)
+
+  print("Alias:",alias.id)
+  value['alias'] = alias
+
+  # non effettua il salvataggio, ma ritorna alla lista FTP
+  if 'Ritorno' in request.POST:
+    return HttpResponseRedirect(reverse('Alias:AliasList'))
+
+  if request.method == 'POST':
+    formalias = formAlias(request.POST)
+    formalias.update()
+
+    if formalias.is_valid():
+      print("alias da salvare:",alias.id)
+      print("dominio",formalias.cleaned_data.get('domain'))
+
+      if not alias.locked: alias.mailfrom = formalias.cleaned_data.get('mailfrom').lower()
+      if not alias.locked: alias.domain_id = domain.id
+      if not alias.locked: alias.mailto = formalias.cleaned_data.get('mailto').lower()
+      print("record.mailto:",alias.mailto)
+
+      alias.nota = formalias.cleaned_data.get('nota')
+      alias.locked = formalias.cleaned_data.get('locked')
+      if not alias.locked: alias.tobedeleted = formalias.cleaned_data.get('tobedeleted')
+      if not alias.locked: alias.enabled = formalias.cleaned_data.get('enabled')
+
+      if alias.tobedeleted: alias.enabled=False
+
+      alias.save()
+
+      mailtest = alias.mailfrom + '@' + alias.domain.nome
+      sm = ServizioMail()
+      sm.set_rcptto(mailtest.strip())
+      template=Template.objects.get(pk=getConfigurazione("alias:info"))
+      sm.set_oggetto(template.oggetto)
+      sm.set_soggetto(template.soggetto)
+      dictdict={}
+      dictdict['alias'] = alias
+      sm.set_data(dictdict)
+      sm.send()
+
+      print("record alias:",alias.id)
+      request.session['_alias2edit_'] = alias.id
+
+      return HttpResponseRedirect(reverse('Alias:AliasListList'))
+    else:
+      print('notvalid')
+  else:
+   ## verifica se e' post o meno....
+    print('non e\' post')
+    value_account = {}
+    value_account['mailfrom'] = alias.mailfrom
+    value_account['domain'] = alias.domain_id
+    value_account['mailto'] = alias.mailto
+    value_account['enabled'] = alias.enabled
+    value_account['tobedeleted'] = alias.tobedeleted
+    value_account['locked'] = alias.locked
+    value_account['nota'] = alias.nota 
+    value_account['utenteautorizzato'] = ''.join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
+    print('value_account',value_account)
+
+    formalias = formAlias(value_account)
+    formalias.update()
+    value['formalias'] = formalias
+  
+  ## check non passato
+  print("formalias.errors",formalias.errors)
+  for e in formalias.errors:
+    print("errors:",e)
+  
+  return render(request,'Alias.Edit.html',value)
+

+ 0 - 0
cancellazione/__init__.py


BIN
cancellazione/__pycache__/__init__.cpython-311.pyc


BIN
cancellazione/__pycache__/__init__.cpython-36.pyc


BIN
cancellazione/__pycache__/__init__.cpython-37.pyc


BIN
cancellazione/__pycache__/__init__.cpython-38.pyc


BIN
cancellazione/__pycache__/__init__.cpython-39.pyc


BIN
cancellazione/__pycache__/admin.cpython-311.pyc


BIN
cancellazione/__pycache__/admin.cpython-36.pyc


BIN
cancellazione/__pycache__/admin.cpython-37.pyc


BIN
cancellazione/__pycache__/admin.cpython-38.pyc


BIN
cancellazione/__pycache__/admin.cpython-39.pyc


BIN
cancellazione/__pycache__/apps.cpython-311.pyc


BIN
cancellazione/__pycache__/apps.cpython-39.pyc


BIN
cancellazione/__pycache__/models.cpython-311.pyc


BIN
cancellazione/__pycache__/models.cpython-36.pyc


BIN
cancellazione/__pycache__/models.cpython-37.pyc


BIN
cancellazione/__pycache__/models.cpython-38.pyc


BIN
cancellazione/__pycache__/models.cpython-39.pyc


BIN
cancellazione/__pycache__/urls.cpython-311.pyc


BIN
cancellazione/__pycache__/urls.cpython-36.pyc


BIN
cancellazione/__pycache__/urls.cpython-37.pyc


BIN
cancellazione/__pycache__/urls.cpython-38.pyc


BIN
cancellazione/__pycache__/urls.cpython-39.pyc


BIN
cancellazione/__pycache__/views.cpython-311.pyc


BIN
cancellazione/__pycache__/views.cpython-36.pyc


BIN
cancellazione/__pycache__/views.cpython-37.pyc


BIN
cancellazione/__pycache__/views.cpython-38.pyc


BIN
cancellazione/__pycache__/views.cpython-39.pyc


+ 3 - 0
cancellazione/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 6 - 0
cancellazione/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class CancellazioneConfig(AppConfig):
+    name = 'cancellazione'
+    default_auto_field = 'django.db.models.BigAutoField'

BIN
cancellazione/migrations/__pycache__/__init__.cpython-36.pyc


+ 14 - 0
cancellazione/models.py

@@ -0,0 +1,14 @@
+from django.db import models
+
+# Create your models here.
+from history.models import *
+from domini.models import *
+from alias.models import *
+from utenti.models import *
+#from servizi.models import *  #rimosso da tutto e tutti
+from contatti.models import *
+from database.models import *
+
+#from logger.models import *
+#from mail.models import *
+

+ 21 - 0
cancellazione/templates/CancellazioneAlias.html

@@ -0,0 +1,21 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+
+  <p class="h2">Conferma Cancellazione dell'alias: {{ alias.mailfrom }}@{{  alias.domain.nome }} -> {{ alias.mailto }}</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ConfirmButton }}" class="btn btn-secondary">Conferma</button>
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Annulla</button>
+    </div>
+  <form>
+{% endblock %}
+

+ 22 - 0
cancellazione/templates/CancellazioneDatabase.html

@@ -0,0 +1,22 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+
+<p class="h2">Conferma Cancellazione del database: {{ database.nome }}</p>
+<p class="h2">assegnato all'utente {{ database.username }}</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ConfirmButton }}" class="btn btn-secondary">Conferma</button>
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Annulla</button>
+    </div>
+  <form>
+{% endblock %}
+

+ 21 - 0
cancellazione/templates/CancellazioneDominio.html

@@ -0,0 +1,21 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+
+  <p class="h2">Conferma Cancellazione del dominio: {{ dominio.nome }}</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ConfirmButton }}" class="btn btn-secondary">Conferma</button>
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Annulla</button>
+    </div>
+  <form>
+{% endblock %}
+

+ 155 - 0
cancellazione/templates/CancellazioneLista.html

@@ -0,0 +1,155 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente che autorizzato: {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+  <div>
+    <p>Domini da eliminare</p>
+    <table class='table'>
+      <thead>
+        <tr>
+          <th scope='col'>#</th>
+          <th scope='col'>Dominio</th>
+        </tr>
+      </thead>
+      <tbody>
+        <form name="domainlist" method="POST">
+          {% csrf_token %}
+          {% for u in dominidacancellare %}
+            <tr>
+      <th scope='row'><a href="{% url 'Cancellazione:CancellazioneDominio' u.id %}">{{ u.id }}</a></th>
+      <td> {{ u.nome }} </td><td>{{ u.date_expire_contract }}</td><td>{{ u.date_expire_registrar }}</td>
+    </tr>
+  {% endfor %}
+</form>
+</tbody>
+</table>
+</div>
+
+<div>
+<p>
+Caselle Email Impostate per la Cancellazione
+<form name="userlistall" method='POST'>
+  {% csrf_token %}
+  <input type="submit" class='btn btn-primary' name='cancellazioneutentetutti' value='Cancella tutti gli utenti elencati!!'>
+</form>
+</p>
+
+<table class='table'>
+  <thead>
+    <tr>
+      <th scope='col'>#</th>
+      <th scope='col'>Email</th>
+      <th scope='col'>Nome Completo</th>
+      <th scope='col'>Attivato il</th>
+      <th scope='col'>Disattivato il</th>
+    </tr>
+  </thead>
+<tbody>
+<form name="userlist" method="POST">
+  {% csrf_token %}
+  {% for u in utentidacancellare %}
+    <tr>
+      <th scope='row'><a href="{% url 'Cancellazione:CancellazioneUtente' u.id %}">{{ u.id }}</a></th>
+              <td>{{ u.mail }}@{{ u.domain.nome }}</td>
+              <td>{{ u.nome }}</td>
+              <td>{{ u.account_date_creation }}</td>
+              <td>{{ u.account_date_disabled }}</td>
+            </tr>
+          {% endfor %}
+        </form>
+      </tbody>
+    </table>
+</tbody>
+</div>
+
+<div>
+  <p>
+  Alias da rimuovere definitivamente
+  <form name="userlistall" method='POST'>
+    {% csrf_token %}
+    <input type="submit" class='btn btn-primary' name='cancellazionealiastutti' value='Cancella tutti gli alias elencati!!'>
+  </form>
+  </p>
+
+<table class='table'>
+  <thead>
+    <tr>
+      <th scope='col'>#</th>
+      <th scope='col'>alias</th>
+      <th scope='col'>Da</th>
+      <th scope='col'>A</th>
+    </tr>
+  </thead>
+  <tbody>
+    <form name="aliaslist" method="POST">
+    {% csrf_token %}
+    {% for u in aliasdacancellare %}
+      <tr>
+        <th scope='row'><a href="{% url 'Cancellazione:CancellazioneAlias' u.id %}">{{ u.id }}</a></th>
+        <td> {{ u.mailfrom }} </td>
+        <td> {{ u.mailto }} </td>
+      </tr>
+    {% endfor %}
+    </form>
+  </tbody>
+</table>
+</div>
+
+  <div>
+    <p>Databases da eliminare</p>
+    <table class='table'>
+      <thead>
+        <tr>
+          <th scope='col'>#</th>
+          <th scope='col'>Database</th>
+          <th scope='col'>Utente</th>
+	  <th scope='col'>Dominio</th>
+        </tr>
+      </thead>
+      <tbody>
+        <form name="sqldatabaselist" method="POST">
+          {% csrf_token %}
+          {% for u in sqldatabasedacancellare %}
+            <tr>
+		    <th scope='row'><a href="{% url 'Cancellazione:CancellazioneDatabase' u.id %}">{{ u.id }}</a></th>
+              <td> {{ u.nome }} </td>
+              <td> {{ u.username }} </td>
+	      <td> {{ u.dominio.nome }} </td>
+            </tr>
+          {% endfor %}
+        </form> 
+      </tbody>
+    </table> 
+  </div>
+
+  <div>
+    <p>Ftp da eliminare</p>
+    <table class='table'>
+      <thead>
+        <tr>
+          <th scope='col'>#</th>
+          <th scope='col'>ftp</th>
+          <th scope='col'>homedir</th>
+        </tr>
+      </thead>
+      <tbody>
+        <form name="ftpuserlist" method="POST">
+          {% csrf_token %}
+          {% for u in eracancellare %}
+            <tr>
+              <th scope='row'>{{ u.id }}</th>
+              <td> {{ u.user }}@{{ u.domain.nome </td>
+              <td> {{ u.homedir }} </td>
+            </tr>
+          {% endfor %}
+        </form> 
+      </tbody>
+    </table> 
+  </div>
+
+{% endblock %}

+ 20 - 0
cancellazione/templates/CancellazioneRisultato.html

@@ -0,0 +1,20 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+  <p class="h2">Cancellazione Completata</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Ritorna</button>
+    </div>
+  <form>
+
+{% endblock %}
+

+ 21 - 0
cancellazione/templates/CancellazioneUtente.html

@@ -0,0 +1,21 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ utenteautorizzato.mail }}@{{ utenteautorizzato.domain.nome }}
+  </p>
+{% endblock %}
+
+{% block body %}
+
+  <p class="h2">Conferma Cancellazione dell'utente: {{ utente.mail }}@{{  utente.domain.nome }} </p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ConfirmButton }}" class="btn btn-secondary">Conferma</button>
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Annulla</button>
+    </div>
+  <form>
+{% endblock %}
+

+ 20 - 0
cancellazione/templates/old/CancellazioneAliasRisultato.html

@@ -0,0 +1,20 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ user.mail }}@{{ user.domain.domain }}
+  </p>
+{% endblock %}
+
+{% block body %}
+  <p class="h2">Cancellazione Completata</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Ritorna</button>
+    </div>
+  <form>
+
+{% endblock %}
+

+ 20 - 0
cancellazione/templates/old/CancellazioneDominioRisultato.html

@@ -0,0 +1,20 @@
+{% extends 'base.html' %}
+
+{% block top %}
+  <p>
+    utente {{ user.mail }}@{{ user.domain.domain }}
+  </p>
+{% endblock %}
+
+{% block body %}
+  <p class="h2">Cancellazione Completata</p>
+
+  <form name="ConfimDelete" method='POST'>
+    {% csrf_token %}
+    <div class="btn-group" role="group" aria-label="Basic example">
+      <button type="submit" name="{{ ReturnButton }}" class="btn btn-secondary">Ritorna</button>
+    </div>
+  <form>
+
+{% endblock %}
+

+ 3 - 0
cancellazione/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 13 - 0
cancellazione/urls.py

@@ -0,0 +1,13 @@
+from django.urls import path
+from . import views
+
+app_name='Cancellazione'
+urlpatterns = [
+  path(r'',views.CancellazioneLista,name='CancellazioneLista'), #sec1100
+  path(r'Dominio/<int:DominioId>',views.CancellazioneDominio,name='CancellazioneDominio'), 
+  path(r'Alias/<int:AliasId>',views.CancellazioneAlias,name='CancellazioneAlias'),
+  path(r'Utente/<int:UtenteId>',views.CancellazioneUtente,name='CancellazioneUtente'),
+  path(r'Database/<int:DatabaseId>',views.CancellazioneDatabase,name='CancellazioneDatabase'),
+  path(r'CancellazioneRisultato',views.CancellazioneRisultato,name='CancellazioneRisultato'),
+  ]
+

+ 535 - 0
cancellazione/views.py

@@ -0,0 +1,535 @@
+from django.shortcuts import render,redirect
+from time import time
+from django.http import HttpResponseRedirect
+from django.urls import reverse
+
+from .models import *
+from supporto.views import *
+from sicurezza.views import *
+#from coda.views import *
+
+import json
+from mqtt import views as m
+from mqtt.views import mqtt
+
+# Create your views here.
+def CancellazioneLista(request):
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  alias2edit = session['_alias2edit_']
+  domain2edit = session['_domain2edit_']
+
+
+  try:
+    utenteautorizzato = User.objects.get(pk=userauth)
+  except User.DoesNotExist as dne:
+    return  HttpResponseRedirect(reverse('Login:login',args={}))
+
+  value={}
+  value['navbar'] = True
+  value['utenteautorizzato'] = utenteautorizzato
+
+  mq = mqtt()
+  mq.build('topic','Messaggio')
+  mq.build('stampa',False)
+  tmp = dict()
+  tmp['utente'] = ''.join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
+  tmp['remote'] = request.META.get('REMOTE_ADDRESS')
+  tmp['forwarder'] = request.META.get('HTTP_X_FORWARDER_FOR','')
+  tmp['host'] = request.META.get('REMOTE_ADDR','')
+  mq.build('data',tmp)
+  mq.pubblica()
+  tmp=None
+  mq=None
+
+  #raduna i vari elementi da cancellare
+  dominidacancellare = Domini.objects.filter(tobedeleted=1)
+  utentidacancellare = User.objects.filter(tobedeleted=1) | User.objects.filter(domain__tobedeleted=1)
+  aliasdacancellare = Alias.objects.filter(tobedeleted=1) | Alias.objects.filter(domain__tobedeleted=1)
+  sqldatabasedacancellare = SqlDatabase.objects.filter(tobedeleted=1) | SqlDatabase.objects.filter(dominio__tobedeleted=1)
+  ftpuserdacancellare = FTPUser.objects.filter(tobedeleted=1) | FTPUser.objects.filter(dominio__tobedeleted=1)
+
+  #non direttamente eliminabili
+  #DomainAssociatedContact
+  #DomainAssociatedService 
+  #history
+
+  print('dominidacancellare',len(dominidacancellare))
+  print('utentidacancellare',len(utentidacancellare))
+  print('aliasdacancellare',len(aliasdacancellare))
+  print('sqldatabasedacancellare',len(sqldatabasedacancellare))
+  print('ftpuserdacancellare',len(ftpuserdacancellare))
+
+  value['dominidacancellare'] = dominidacancellare
+  value['utentidacancellare'] = utentidacancellare
+  value['aliasdacancellare'] = aliasdacancellare
+  value['sqldatabasedacancellare'] = sqldatabasedacancellare
+  value['ftpuserdacancellare'] = ftpuserdacancellare
+
+  if 'cancellazioneutentetutti' in request.POST:
+    c = m.start()
+    m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
+
+    external = list()
+    for utente in utentidacancellare:
+      parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()})
+      print("utente: rm -rvf",parms)
+      q = {}
+      q['op'] = 'deleteMail'
+      q['sv'] = utente.domain.mail_server.server.strip()
+      q['do'] = utente.domain.nome.strip()
+      q['us'] = utente.mail.strip()
+
+      if utente.domain.mail_server.nome:
+        mq = mqtt()
+        mq.build('topic','mail')
+        mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip())))
+        tmp = dict()
+        tmp['dominio']=utente.domain.nome
+        tmp['mail']=utente.mail
+        tmp['posizione']='/'+utente.domain.mail_server.nome.strip()
+        tmp['server']=utente.domain.mail_server.nome.strip()
+        tmp['estensione']='_old_'
+        print("tmp",tmp)
+        mq.build('data',[tmp,])
+        mq.pubblica()
+        tmp=None
+        mq=None
+
+        topic = 'mail/'+utente.domain.mail_server.nome.strip()
+        print("topic",topic)
+        m.publish(c,topic,json.dumps(q))
+  
+        try:
+          if utente.sql_remote.ip and not utente.sql_remote.ip in external:
+            external.append(utente.sql_remote.ip)
+        except SqlRemote.DoesNotExist as dne:
+          print("dne",dne)
+        utente.delete()
+       
+
+      else:
+        print("Nome Server Non Definito")
+
+      print('external',external)
+      if len(external):
+        mq = mqtt()
+        mq.build('topic','richiesta/mail')
+        mq.build('richiesta','update_remote')
+        mq.build('data',external)
+        mq.pubblica()
+        mq=None
+
+      value['utentidacancellare'] = []
+
+  if 'cancellazionealiastutti' in request.POST:
+    for alias in aliasdacancellare:
+        print('Alias:',alias.id)
+        alias.delete()
+    value['aliasdacancellare'] = []
+
+  if 'cancellazionedatabasetutti' in request.POST:
+    pass
+
+  if 'cancellazioneftptutti' in request.POST:
+    pass
+
+  return render(request,"CancellazioneLista.html",value)
+
+
+def CancellazioneDominio(request,DominioId=None):
+
+  c = m.start()
+  m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
+
+  if not DominioId:
+    return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  user2edit = session['_user2edit_']
+  domain2edit = session['_domain2edit_']
+
+  try:
+    utenteautorizzato = User.objects.get(pk=userauth)
+  except User.DoesNotExist as dne:
+    return  HttpResponseRedirect(reverse('Login:login',args={}))
+
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+
+  dominio = Domini.objects.get(pk=DominioId)
+  value['dominio']=dominio
+    
+  if request.method=="POST":
+
+    if request.session['ReturnButton'] in request.POST:
+      del request.session['ConfirmButton']
+      del request.session['ReturnButton']
+      return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+    if request.session['ConfirmButton'] in request.POST:
+      #inizia cancellazione di tutto
+
+      history = History.objects.filter(domain=dominio.id)
+      print('numero di record History rimossi:',history)
+      value['history'] = history
+      for i in history: i.delete()
+
+      dominiserviziassegnati = DominiServiziAssegnati.objects.filter(dominio = dominio.id)
+      print('servizi assegnati',dominiserviziassegnati)
+      value['dominiserviziassegnati'] = dominiserviziassegnati
+      for i in dominiserviziassegnati: i.delete()
+
+      '''
+      questa parte la possiamo togliere in quanto andando a rimuovere il dominio, possiamo procedere a rinominare l'intera cartella, senza passarsi le mail
+
+      utenti = User.objects.filter(domain=dominio)
+      external = list()
+      print('utenti da cancellare',len(utenti))
+      for utente in utenti: 
+        if utente.domain.mail_server.nome:
+          mq = mqtt()
+          mq.build('topic','mail')
+          mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip())))
+          tmp = dict()
+          tmp['dominio']=dominio.nome
+          tmp['mail']=utente.mail
+          tmp['posizione']='mail/'+utente.domain.mail_server.nome.strip()
+          tmp['server']=utente.domain.mail_server.nome.strip()
+          tmp['estensione']='._old_'
+          mq.build('data',tmp)
+          mq.pubblica()
+          tmp=None
+          mq=None
+          try:
+            if utente.sql_remote.ip:
+              if not utente.sql_remote.ip in external:
+                external.append(utente.sql_remote.ip)
+            else: print("mqtt: sql_remote e' impostato a 0")
+          except User.sql_remote.RelatedObjectDoesNotExist as rdne:
+            print(rdne)
+          utente.delete()
+
+        print('external',external)
+
+        if len(external):
+          mq = mqtt()
+          mq.build('topic','richiesta/mail')
+          mq.build('richiesta','update_remote')
+          mq.build('data',external)
+          mq.pubblica()
+          mq=None
+      '''
+      print('dominio da rinominare direttamente',dominio.nome)
+      print('nome mail server dominio',dominio.mail_server.nome)
+      print('posizione fisica',dominio.mail_server.fisico)
+
+      if dominio.mail_server.enabled and dominio.mail_server.fisico != "/dev/null":
+        mq = mqtt()
+        mq.build('topic','mail')
+        mq.build('richiesta','cancellazione/dominio')
+        mq.build('stampa',True)
+        mq.build('demo',False)
+        tmp = dict()
+        tmp['dominio'] = dominio.nome
+        tmp['posizione'] = dominio.mail_server.fisico
+        tmp['estensione'] = '._old_'
+        mq.build('data',tmp)
+        mq.pubblica()
+        tmp=None
+        mq=None
+
+      alias = Alias.objects.filter(domain = dominio.id)
+      print("Alias ",alias)
+      value['alias'] = alias
+      for a in alias:
+        a.delete()
+
+      ftpuser = FTPUser.objects.filter(dominio = dominio.id)
+      print("Utenti FTP ",ftpuser)
+      value['ftpuser'] = ftpuser
+      for i in ftpuser:
+        i.delete()
+
+      sqldatabase = SqlDatabase.objects.filter(dominio = dominio.id)
+      print("database SQL ",sqldatabase)
+      value['sqldatabase'] = sqldatabase
+      for i in sqldatabase:
+        q = {}
+        q['op'] = 'delete'
+        q['db']=i.nome
+        q['us']=i.username
+        q['ho']=i.server.server
+        m.publish(c,"Database","{}".format(json.dumps(q)))
+        i.delete()
+ 
+       #rimozione della cartella
+      parms = "{s}/{d}".format(**{'s':dominio.mail_server.server.strip(),'d':dominio.nome.strip()})
+      print('rimuovere: ',parms)
+      q = {}
+      q['op'] = 'deleteDomain'
+      q['sv'] = dominio.mail_server.server.strip()
+      q['do'] = dominio.nome.strip()
+      # per topic si intende il server che sta gestendo lo storage fisico
+      topic = 'mail/'+dominio.mail_server.server.strip()
+      m.publish(c,topic,json.dumps(q))
+
+      print('Dominio in cancellazione: ',dominio.id,dominio.nome)
+      dominio.delete()
+
+      del request.session['ConfirmButton'] 
+      del request.session['ReturnButton'] 
+      request.session['ReturnButton'] = str(time())
+      value['ReturnButton'] = request.session['ReturnButton']
+
+      return redirect(reverse('Cancellazione:CancellazioneRisultato')) 
+
+  request.session['ConfirmButton'] = str(time())
+  request.session['ReturnButton'] = str(time())
+  value['ConfirmButton'] = request.session['ConfirmButton']
+  value['ReturnButton'] = request.session['ReturnButton']
+
+  return render(request,'CancellazioneDominio.html',value)
+
+def CancellazioneUtente(request,UtenteId=None):
+
+  c = m.start()
+  m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
+
+  if not UtenteId:
+    return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  user2edit = session['_user2edit_']
+  domain2edit = session['_domain2edit_']
+
+  utenteautorizzato = User.objects.get(pk=userauth)
+
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+
+  utente = User.objects.get(pk=UtenteId)
+  value['utente'] = utente
+
+  if request.method=="POST":
+
+    if request.session['ReturnButton'] in request.POST:
+      try:
+        del request.session['ConfirmButton']
+        del request.session['ReturnButton']
+      except KeyError as ke:
+        pass
+      return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+    if request.session['ConfirmButton'] in request.POST:
+      #inizia cancellazione di tutto
+
+      parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()})
+      print("utente: rm -rvf",parms)
+      #etCoda('DELETEMAIL',parms)
+      q = {}
+      q['op'] = 'deleteMail'
+      q['sv'] = utente.domain.mail_server.server.strip()
+      q['do'] = utente.domain.nome.strip()
+      q['us'] = utente.mail.strip()
+      q['cm'] = "xx rm -rvf /home/server/dominio/utente"
+
+      if utente.domain.mail_server.nome:
+        topic = 'mail/'+utente.domain.mail_server.nome.strip()
+        print("topic",topic)
+
+        mq = mqtt()
+        mq.build('topic',''.join(('mail/',utente.domain.mail_server.nome.strip())))
+        mq.build('richiesta','cancellazione/mail')
+        mq.build('stampa',True)
+        tmp = dict()
+        tmp['dominio']=utente.domain.nome.strip()
+        tmp['mail']=utente.mail.strip()
+        tmp['posizione']=utente.domain.mail_server.nome.strip()
+        tmp['server']=utente.domain.mail_server.nome.strip()
+        tmp['estensione']='._old_'
+        mq.build('data',[tmp,])
+        mq.pubblica()
+        tmp=None
+        mq=None
+
+        external = list()
+
+        try:
+          if utente.sql_remote.ip in external:
+            external.append(utente.sql_remote.ip)
+        except SqlRemote.DoesNotExist as dne:
+           print("campo remoto non esistente")
+
+        if len(external):
+          mq = mqtt()
+          mq.build('topic','richiesta/mail')
+          mq.build('richiesta','update_remote')
+          mq.build('data',external)
+          mq.pubblica()
+          mq=None
+
+        utente.delete()
+      else:
+        print("Nome Server Non Definito")
+      try:
+        del request.session['ConfirmButton']
+      except KeyError as ke:
+        pass
+
+      del request.session['ReturnButton']
+      return redirect(reverse('Cancellazione:CancellazioneRisultato'))
+
+  request.session['ConfirmButton'] = str(time())
+  request.session['ReturnButton'] = str(time())
+
+  value['ConfirmButton'] = request.session['ConfirmButton']
+  value['ReturnButton'] = request.session['ReturnButton']
+  
+  return render(request,'CancellazioneUtente.html',value)
+
+def CancellazioneAlias(request,AliasId=None):
+      
+  if not AliasId:
+    return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+      
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  user2edit = session['_user2edit_']
+  domain2edit = session['_domain2edit_']
+      
+  utenteautorizzato = User.objects.get(pk=userauth)
+  
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+
+  alias = Alias.objects.get(pk=AliasId)
+  value['alias']=alias
+
+  if request.method=="POST":
+
+    if request.session['ReturnButton'] in request.POST:
+      del request.session['ConfirmButton']
+      del request.session['ReturnButton']
+      return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+    if request.session['ConfirmButton'] in request.POST:
+      #inizia cancellazione di tutto
+
+      alias.delete()
+
+      try:
+        del request.session['ConfirmButton']
+      except KeyError as ke:
+        pass
+
+      request.session['ReturnButton'] = str(time())
+      value['ReturnButton'] = request.session['ReturnButton']
+      return redirect(reverse('Cancellazione:CancellazioneRisultato'))
+
+  request.session['ConfirmButton'] = str(time())
+  request.session['ReturnButton'] = str(time())
+
+  value['ConfirmButton'] = request.session['ConfirmButton']
+  value['ReturnButton'] = request.session['ReturnButton']
+
+  return render(request,'CancellazioneAlias.html',value)
+
+def CancellazioneDatabase(request,DatabaseId=None):
+  if not DatabaseId:
+    return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+      
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  user2edit = session['_user2edit_']
+  domain2edit = session['_domain2edit_']
+      
+  utenteautorizzato = User.objects.get(pk=userauth)
+  
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+
+  database = SqlDatabase.objects.get(pk=DatabaseId)
+  value['database']=database
+
+  if request.method=="POST":
+
+    if request.session['ReturnButton'] in request.POST:
+      del request.session['ConfirmButton']
+      del request.session['ReturnButton']
+      return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+    if request.session['ConfirmButton'] in request.POST:
+      #inizia cancellazione di tutto
+
+      print('sql:',database.nome)
+
+      data = dict()
+      data['op']='enable'
+      data['db']=database.nome
+      data['us']=database.username
+      data['pw']=database.password
+      data['ho']=database.server.server
+
+      mq = mqtt()
+      mq.build('topic','richiesta/database')
+      mq.build('richiesta','delete_database')
+      mq.build('data',data)
+      mq.pubblica()
+      mq=None
+
+      database.delete()
+
+      try:
+        del request.session['ConfirmButton']
+      except KeyError as ke:
+        pass
+
+      request.session['ReturnButton'] = str(time())
+      value['ReturnButton'] = request.session['ReturnButton']
+      return redirect(reverse('Cancellazione:CancellazioneRisultato'))
+
+  request.session['ConfirmButton'] = str(time())
+  request.session['ReturnButton'] = str(time())
+
+  value['ConfirmButton'] = request.session['ConfirmButton']
+  value['ReturnButton'] = request.session['ReturnButton']
+
+  return render(request,'CancellazioneDatabase.html',value)
+
+def CancellazioneRisultato(request):
+ 
+  session = getSessionParms(request)
+  userauth = session['_userauth_']
+  user2edit = session['_user2edit_']
+  domain2edit = session['_domain2edit_']
+  
+  utenteautorizzato = User.objects.get(pk=userauth)
+    
+  value={}
+  value['utenteautorizzato'] = utenteautorizzato
+  value['navbar'] = True
+  
+  if request.method=="POST":
+    if request.session['ReturnButton'] in request.POST:
+      try:
+        del request.session['ReturnButton']
+      except KeyError as ke:
+        pass
+      return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
+
+      #request.session['ReturnButton'] = str(time())
+      #value['ReturnButton'] = request.session['ReturnButton']
+
+  request.session['ReturnButton'] = str(time())
+  value['ReturnButton'] = request.session['ReturnButton']
+  print("ReturnButtonReturnButton",value)
+
+  return render(request,'CancellazioneRisultato.html',value)
+

+ 0 - 0
causali/__init__.py


Some files were not shown because too many files changed in this diff