diff --git a/.gitignore b/.gitignore index 097ef35..ffee5f8 100644 --- a/.gitignore +++ b/.gitignore @@ -202,4 +202,3 @@ dmypy.json # Pyre type checker .pyre/ -backend/config/ diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 5226316..da4f4ef 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -96,23 +96,26 @@ WSGI_APPLICATION = 'backend.wsgi.application' # https://docs.djangoproject.com/en/3.1/ref/settings/#databases DATABASES = { - # 'default': { - # 'ENGINE': 'django.db.backends.sqlite3', - # 'NAME': BASE_DIR / 'db.sqlite3', - # }, + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + }, + 'mail': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'mail.sqlite3', + }, 'ldap': { 'ENGINE': 'ldapdb.backends.ldap', 'NAME': config.ldap.uri, 'USER': config.ldap.bind_dn, 'PASSWORD': config.ldap.bind_pass, }, - 'default': { - 'HOST': config.sql.host, - 'NAME': config.sql.database, - 'ENGINE': 'django.db.backends.mysql', - 'USER': config.sql.user, - 'PASSWORD': config.sql.password - } + #'mysql': { + # 'NAME': 'user_data', + # 'ENGINE': 'django.db.backends.mysql', + # 'USER': 'mysql_user', + # 'PASSWORD': 'priv4te' + #} } # Password validation diff --git a/backend/multimail/forms.py b/backend/multimail/forms.py index 9c28a74..98570f2 100644 --- a/backend/multimail/forms.py +++ b/backend/multimail/forms.py @@ -1,9 +1,7 @@ from django.contrib.auth.decorators import login_required from django.forms import ModelForm -from django.forms.utils import ErrorList from django.http import HttpResponseRedirect, Http404 from django.shortcuts import render -from django.db import IntegrityError from multimail.models import Domain, Mailbox, Alias from multimail.owner import user_from_request @@ -13,7 +11,7 @@ class DomainForm(ModelForm): class Meta: model = Domain fields = '__all__' - # fields = ['domain'] + #fields = ['domain'] class MailboxForm(ModelForm): @@ -37,18 +35,14 @@ def edit_domain(request, domain_id): raise Http404 if request.method == 'POST': form = DomainForm(request.POST, instance=domain) - try: - if form.is_valid(): - form.save() - return HttpResponseRedirect('/domains/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid(): + form.save() + return HttpResponseRedirect('/domains/') else: form = DomainForm(instance=domain) - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_domain.html', {'form': form}) @login_required(login_url='/login/') @@ -56,19 +50,15 @@ def new_domain(request): user = user_from_request(request) if request.method == 'POST': form = DomainForm(request.POST) - try: - if form.is_valid(): - domain = form.save() - domain.admin.create(admin=user['name'], source=user['source']) - return HttpResponseRedirect('/domains/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid(): + domain = form.save() + domain.admin.create(admin=user['name'], source=user['source']) + return HttpResponseRedirect('/domains/') else: form = DomainForm() - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_domain.html', {'form': form}) @login_required(login_url='/login/') @@ -81,18 +71,14 @@ def edit_mailbox(request, mailbox_id): raise Http404 if request.method == 'POST': form = MailboxForm(request.POST, instance=mailbox) - try: - if form.is_valid(): - form.save() - return HttpResponseRedirect('/mailboxes/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid(): + form.save() + return HttpResponseRedirect('/mailboxes/') else: form = MailboxForm(instance=mailbox) - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_mailbox.html', {'form': form}) @login_required(login_url='/login/') @@ -101,18 +87,14 @@ def new_mailbox(request): user = user_from_request(request) domains = [o.domain for o in Domain.objects.filter(admin__admin=user['name'], admin__source=user['source'])] form = MailboxForm(request.POST) - try: - if form.is_valid() and form.domain in domains: - form.save() - return HttpResponseRedirect('/mailboxes/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid() and form.domain in domains: + form.save() + return HttpResponseRedirect('/mailboxes/') else: form = MailboxForm() - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_mailbox.html', {'form': form}) @login_required(login_url='/login/') @@ -125,18 +107,14 @@ def edit_alias(request, alias_id): raise Http404 if request.method == 'POST': form = AliasForm(request.POST, instance=alias) - try: - if form.is_valid(): - form.save() - return HttpResponseRedirect('/aliases/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid(): + form.save() + return HttpResponseRedirect('/aliases/') else: form = AliasForm(instance=alias) - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_alias.html', {'form': form}) @login_required(login_url='/login/') @@ -145,15 +123,11 @@ def new_alias(request): user = user_from_request(request) domains = [o.domain for o in Domain.objects.filter(admin__admin=user['name'], admin__source=user['source'])] form = AliasForm(request.POST) - try: - if form.is_valid() and form.source_domain in domains: - form.save() - return HttpResponseRedirect('/aliases/') - - except IntegrityError as e: - form.add_error(None, e) + if form.is_valid() and form.source_domain in domains: + form.save() + return HttpResponseRedirect('/aliases/') else: form = AliasForm() - return render(request, 'multimail/edit.html', {'form': form}) + return render(request, 'multimail/edit_alias.html', {'form': form}) diff --git a/backend/multimail/models.py b/backend/multimail/models.py index a8d7313..6813fc2 100644 --- a/backend/multimail/models.py +++ b/backend/multimail/models.py @@ -1,21 +1,20 @@ +import datetime from django.db import models +from django.utils import timezone class Alias(models.Model): id = models.AutoField(primary_key=True) - source_username = models.CharField(max_length=64, blank=True) + source_username = models.CharField(max_length=64) source_domain = models.CharField(max_length=255) destination_username = models.CharField(max_length=64) destination_domain = models.CharField(max_length=255) - enabled = models.BooleanField(default=True) + enabled = models.IntegerField(blank=True, null=True) class Meta: managed = False db_table = 'aliases' - def __str__(self): - return self.source_username + '@' + self.source_domain - class Domain(models.Model): domain = models.CharField(max_length=255) @@ -24,9 +23,6 @@ class Domain(models.Model): managed = False db_table = 'domains' - def __str__(self): - return self.domain - class Mailbox(models.Model): id = models.AutoField(primary_key=True) @@ -34,16 +30,13 @@ class Mailbox(models.Model): domain = models.CharField(max_length=255) password = models.CharField(max_length=255) quota = models.IntegerField(blank=True, null=True) - enabled = models.BooleanField(default=True) - sendonly = models.BooleanField(default=False) + enabled = models.IntegerField(blank=True, null=True) + sendonly = models.IntegerField(blank=True, null=True) class Meta: managed = False db_table = 'mailboxes' - def __str__(self): - return self.username + '@' + self.domain - class TLSPolicy(models.Model): domain = models.CharField(max_length=255) @@ -54,15 +47,11 @@ class TLSPolicy(models.Model): managed = False db_table = 'tlspolicies' - def __str__(self): - return self.domain - class DomainOwner(models.Model): domain = models.ForeignKey(Domain, on_delete=models.CASCADE, related_name='admin') admin = models.CharField(max_length=200) - source = models.CharField(max_length=8, choices=[('system', 'system'), ('ldap', 'ldap'), ('mail', 'mail')], - default=0) + source = models.CharField(max_length=8, choices=[('system','system'), ('ldap', 'ldap'), ('mail', 'mail')], default=0) def __str__(self): return self.admin diff --git a/backend/multimail/templates/multimail/aliases.html b/backend/multimail/templates/multimail/aliases.html index 40301cd..7797fe3 100644 --- a/backend/multimail/templates/multimail/aliases.html +++ b/backend/multimail/templates/multimail/aliases.html @@ -38,7 +38,6 @@ {% else %}
You haven't set up any aliases yet.
- Add {% endif %} {% endblock %} \ No newline at end of file diff --git a/backend/multimail/templates/multimail/domains.html b/backend/multimail/templates/multimail/domains.html index d480a91..75e1098 100644 --- a/backend/multimail/templates/multimail/domains.html +++ b/backend/multimail/templates/multimail/domains.html @@ -32,7 +32,6 @@ {% else %}You haven't set up any domains yet.
- Add {% endif %} {% endblock %} \ No newline at end of file diff --git a/backend/multimail/templates/multimail/edit_alias.html b/backend/multimail/templates/multimail/edit_alias.html new file mode 100644 index 0000000..eac9c84 --- /dev/null +++ b/backend/multimail/templates/multimail/edit_alias.html @@ -0,0 +1,18 @@ +{% extends 'multimail/base.html' %} +{% load bootstrap4 %} + +{% block content %} +{{ error_message }}
{% endif %} + + + + +{% endblock %} \ No newline at end of file diff --git a/backend/multimail/templates/multimail/edit.html b/backend/multimail/templates/multimail/edit_domain.html similarity index 85% rename from backend/multimail/templates/multimail/edit.html rename to backend/multimail/templates/multimail/edit_domain.html index d3aa77a..c70e3c4 100644 --- a/backend/multimail/templates/multimail/edit.html +++ b/backend/multimail/templates/multimail/edit_domain.html @@ -2,7 +2,10 @@ {% load bootstrap4 %} {% block content %} +{{ error_message }}
{% endif %} + + {% endblock %} \ No newline at end of file diff --git a/backend/multimail/templates/multimail/edit_mailbox.html b/backend/multimail/templates/multimail/edit_mailbox.html new file mode 100644 index 0000000..7815ab6 --- /dev/null +++ b/backend/multimail/templates/multimail/edit_mailbox.html @@ -0,0 +1,17 @@ +{% extends 'multimail/base.html' %} +{% load bootstrap4 %} + +{% block content %} +{{ error_message }}
{% endif %} + + + +{% endblock %} \ No newline at end of file diff --git a/backend/multimail/templates/multimail/mailboxes.html b/backend/multimail/templates/multimail/mailboxes.html index 94220ad..e58f27f 100644 --- a/backend/multimail/templates/multimail/mailboxes.html +++ b/backend/multimail/templates/multimail/mailboxes.html @@ -32,7 +32,6 @@ {% else %}You haven't set up any mailboxes yet.
- Add {% endif %} {% endblock %} \ No newline at end of file diff --git a/backend/requirements.txt b/backend/requirements.txt deleted file mode 100644 index 5021ea6..0000000 --- a/backend/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -Django==3.1.3 -django-auth-ldap==2.2.0 -django-ldapdb==1.5.1 -django-static-fontawesome==5.14.0.0 -django-bootstrap4==2.3.1 -mysqlclient==2.0.1 -passlib==1.7.4 -python-ldap==3.3.1 -# djangorestframework==3.12.1