email: aliases: Drop ability to enable/disable aliases

- There is no use case for keeping an alias disabled.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Sunil Mohan Adapa 2022-02-15 18:14:29 -08:00 committed by James Valleroy
parent 60822f7198
commit 9d0d7e586c
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
5 changed files with 7 additions and 64 deletions

View File

@ -4,7 +4,7 @@
import contextlib
import pwd
import sqlite3
from dataclasses import InitVar, dataclass, field
from dataclasses import dataclass
from plinth import actions
@ -13,11 +13,6 @@ from plinth import actions
class Alias:
value: str
name: str
enabled: bool = field(init=False)
status: InitVar[int]
def __post_init__(self, status):
self.enabled = (status != 0)
@contextlib.contextmanager
@ -36,7 +31,7 @@ def _get_cursor():
def get(username):
"""Get all aliases of a user."""
query = 'SELECT name, value, status FROM alias WHERE value=?'
query = 'SELECT name, value FROM alias WHERE value=?'
with _get_cursor() as cursor:
rows = cursor.execute(query, (username, ))
return [Alias(**row) for row in rows]
@ -58,10 +53,10 @@ def exists(name):
def put(username, name):
"""Insert if not exists a new alias."""
query = 'INSERT INTO alias (name, value, status) VALUES (?, ?, ?)'
query = 'INSERT INTO alias (name, value) VALUES (?, ?)'
with _get_cursor() as cursor:
try:
cursor.execute(query, (name, username, 1))
cursor.execute(query, (name, username))
except sqlite3.IntegrityError:
pass # Alias exists, rare since we are already checking
@ -76,26 +71,6 @@ def delete(username, aliases):
cursor.execute('COMMIT')
def enable(username, aliases):
"""Enable a list of aliases."""
return _set_status(username, aliases, 1)
def disable(username, aliases):
"""Disable a list of aliases."""
return _set_status(username, aliases, 0)
def _set_status(username, aliases, status):
"""Set the status value of a list of aliases."""
query = 'UPDATE alias SET status=? WHERE value=? AND name=?'
parameter_seq = ((status, username, name) for name in aliases)
with _get_cursor() as cursor:
cursor.execute('BEGIN')
cursor.executemany(query, parameter_seq)
cursor.execute('COMMIT')
def first_setup():
"""Create the database file and schema inside it."""
actions.superuser_run('email', ['aliases', 'setup'])
@ -106,7 +81,6 @@ BEGIN;
CREATE TABLE IF NOT EXISTS alias (
name TEXT NOT NULL,
value TEXT NOT NULL,
status INTEGER NOT NULL,
PRIMARY KEY (name)
);
COMMIT;

View File

@ -1,4 +1,4 @@
# Do not edit this file. Manage your settings on FreedomBox.
dbpath = /var/lib/postfix/freedombox-aliases/aliases.sqlite3
query = SELECT value FROM alias WHERE name='%s' AND status=1
query = SELECT value FROM alias WHERE name='%s'

View File

@ -60,26 +60,5 @@ class AliasListForm(forms.Form):
def __init__(self, aliases, *args, **kwargs):
"""Populate the choices for aliases."""
super().__init__(*args, **kwargs)
enabled_aliases = [(alias.name, alias.name) for alias in aliases
if alias.enabled]
disabled_aliases = [(alias.name, alias.name) for alias in aliases
if not alias.enabled]
choices = []
if enabled_aliases:
choices.append((_('Enabled'), enabled_aliases))
if disabled_aliases:
choices.append((_('Disabled'), disabled_aliases))
choices = [(alias.name, alias.name) for alias in aliases]
self.fields['aliases'].choices = choices
def clean(self):
"""Add the pressed button to cleaned data."""
cleaned_data = super().clean()
buttons = [key[4:] for key in self.data if key.startswith('btn_')]
if len(buttons) != 1 or buttons[0] not in ('enable', 'disable',
'delete'):
raise ValidationError('Invalid button pressed')
cleaned_data['action'] = buttons[0]
return cleaned_data

View File

@ -20,10 +20,6 @@
{{ list_form|bootstrap }}
<input type="hidden" name="form" value="list">
<input class="btn btn-default" type="submit" name="btn_disable"
value="{% trans 'Disable' %}">
<input class="btn btn-default" type="submit" name="btn_enable"
value="{% trans 'Enable' %}">
<input class="btn btn-danger" type="submit" name="btn_delete"
value="{% trans 'Delete' %}">
</form>

View File

@ -116,14 +116,8 @@ class AliasView(FormView):
def _list_form_valid(self, form):
"""Handle a valid alias list form operation."""
aliases = form.cleaned_data['aliases']
action = form.cleaned_data['action']
username = self.request.user.username
if action == 'delete':
aliases_module.delete(username, aliases)
elif action == 'disable':
aliases_module.disable(username, aliases)
elif action == 'enable':
aliases_module.enable(username, aliases)
aliases_module.delete(username, aliases)
def _create_form_valid(self, form):
"""Handle a valid create alias form operation."""