-version: '3'
-
services:
dev:
build:
volumes:
- ./src:/app/src
- ./media:/app/media
+ ports:
+ - "8050:8000"
+ command: ./manage.py runserver 0.0.0.0:8000
from . import models
+@admin.register(models.Alias)
class AliasAdmin(admin.ModelAdmin):
search_fields = ['source', 'destination']
list_display = ['source', 'destination', 'mode']
list_filter = ['mode']
-admin.site.register(models.Alias, AliasAdmin)
+@admin.register(models.SharedMailbox)
+class SharedMailboxAdmin(admin.ModelAdmin):
+ list_display = ['name']
+ search_fields = ['name']
+ filter_horizontal = ['users']
+
--- /dev/null
+# Generated by Django 4.2.13 on 2026-08-26 13:51
+
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('emails', '0003_aliasusage'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SharedMailbox',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(blank=True, max_length=255, verbose_name='name')),
+ ('users', models.ManyToManyField(to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'verbose_name': 'shared mailbox',
+ 'verbose_name_plural': 'shared mailboxes',
+ 'ordering': ('name',),
+ },
+ ),
+ ]
unique_together = (('alias', 'date'),)
verbose_name = _('alias usage')
verbose_name_plural = _('alias usage')
+
+
+class SharedMailbox(models.Model):
+ name = models.CharField(_('name'), max_length=255, blank=True)
+ users = models.ManyToManyField('auth.User')
+
+ class Meta:
+ verbose_name = _('shared mailbox')
+ verbose_name_plural = _('shared mailboxes')
+ ordering = ('name',)
+
+ def __str__(self):
+ return self.name
</ul>
{% endif %}
+ <h2>{% trans "Shared mailboxes" %}:</h2>
+ <ul>
+ {% for mailbox in user.sharedmailbox_set.all %}
+ <li>
+ {{ mailbox.name }}
+ </li>
+ {% endfor %}
+ </ul>
+
{% endblock %}