Shared mailboxes
authorRadek Czajka <rczajka@rczajka.pl>
Wed, 26 Aug 2026 13:59:11 +0000 (15:59 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Wed, 26 Aug 2026 13:59:11 +0000 (15:59 +0200)
docker-compose.yml
src/emails/admin.py
src/emails/migrations/0004_sharedmailbox.py [new file with mode: 0644]
src/emails/models.py
src/emails/templates/emails/my_aliases.html

index 249139d..c6021cf 100644 (file)
@@ -1,5 +1,3 @@
-version: '3'
-
 services:
   dev:
     build:
@@ -8,3 +6,6 @@ services:
     volumes:
       - ./src:/app/src
       - ./media:/app/media
+    ports:
+     - "8050:8000"
+    command: ./manage.py runserver 0.0.0.0:8000
index fee152d..cdf2710 100644 (file)
@@ -2,10 +2,16 @@ from django.contrib import admin
 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']
+
diff --git a/src/emails/migrations/0004_sharedmailbox.py b/src/emails/migrations/0004_sharedmailbox.py
new file mode 100644 (file)
index 0000000..a859b77
--- /dev/null
@@ -0,0 +1,28 @@
+# 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',),
+            },
+        ),
+    ]
index 5375a7c..677a0a0 100644 (file)
@@ -41,3 +41,16 @@ class AliasUsage(models.Model):
         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
index 4103831..b959fed 100644 (file)
   </ul>
   {% endif %}
 
+  <h2>{% trans "Shared mailboxes" %}:</h2>
+  <ul>
+  {% for mailbox in user.sharedmailbox_set.all %}
+  <li>
+    {{ mailbox.name }}
+  </li>
+  {% endfor %}
+  </ul>
+
 {% endblock %}