mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +00:00
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:
parent
60822f7198
commit
9d0d7e586c
@ -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;
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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."""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user