Skip to content

Commit

Permalink
Merge pull request #667 from Nabla-NTNU/events_subscription
Browse files Browse the repository at this point in the history
reviewed at meeting
  • Loading branch information
tncrdk committed Jan 12, 2024
2 parents a6cf4d4 + d41df0e commit a9c00f8
Show file tree
Hide file tree
Showing 24 changed files with 959 additions and 455 deletions.
838 changes: 383 additions & 455 deletions Pipfile.lock

Large diffs are not rendered by default.

Empty file added nablapps/mailfeed/__init__.py
Empty file.
27 changes: 27 additions & 0 deletions nablapps/mailfeed/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from django.contrib import admin

# Register your models here.
from .models import Mailfeed, Subscription


class SubscriptionAdmin(admin.ModelAdmin):
class Meta:
verbose_name = "Subscription"
verbose_name_plural = "Subscriptions"

def short_description(self, com):
return (com.story[:23] + "...") if len(com.story) > 25 else com.story

def full_user_name(self, com):
return com.user.get_full_name()

list_display = ("mailfeed", "email", "uuid", "created")
list_select_related = [
"mailfeed",
]
ordering = ["-mailfeed"]
list_filter = ["mailfeed", "email"]


admin.site.register(Subscription, SubscriptionAdmin)
admin.site.register(Mailfeed)
5 changes: 5 additions & 0 deletions nablapps/mailfeed/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class MailfeedConfig(AppConfig):
name = "nablapps.mailfeed"
43 changes: 43 additions & 0 deletions nablapps/mailfeed/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from django import forms


class MailFeedForm(forms.Form):
name_field = forms.CharField(required=True)

def get_name(self) -> str:
cd = self.cleaned_data
name = cd["name_field"]
return name


class SubscribeForm(forms.Form):
email_field = forms.EmailField(widget=forms.EmailInput)

def get_email(self) -> str:
cd = self.cleaned_data
email = cd["email_field"]
return email


class UnsubscribeForm(forms.Form):
checkbox_field = forms.BooleanField()

def get_result(self) -> bool:
cd = self.cleaned_data
result = cd["checkbox_field"]
return result


class EmailForm(forms.Form):
subject_field = forms.CharField(max_length=80)
content_field = forms.CharField(required=True, widget=forms.Textarea)

def get_subject(self) -> str:
cd = self.cleaned_data
subject = cd["subject_field"]
return subject

def get_content(self) -> str:
cd = self.cleaned_data
content = cd["content_field"]
return content
58 changes: 58 additions & 0 deletions nablapps/mailfeed/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Generated by Django 3.2.22 on 2024-01-08 23:34

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="MailFeed",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created",
models.DateTimeField(auto_created=True, verbose_name="Opprettet"),
),
("name", models.CharField(max_length=40)),
],
),
migrations.CreateModel(
name="Subscription",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created",
models.DateTimeField(auto_created=True, verbose_name="Opprettet"),
),
("email", models.EmailField(max_length=254)),
(
"mailfeed",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="mailfeed.mailfeed",
),
),
],
),
]
22 changes: 22 additions & 0 deletions nablapps/mailfeed/migrations/0002_auto_20240109_1653.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 3.2.22 on 2024-01-09 16:53

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("mailfeed", "0001_initial"),
]

operations = [
migrations.AlterField(
model_name="mailfeed",
name="created",
field=models.DateTimeField(auto_now=True, verbose_name="Opprettet"),
),
migrations.AlterField(
model_name="subscription",
name="created",
field=models.DateTimeField(auto_now=True, verbose_name="Opprettet"),
),
]
16 changes: 16 additions & 0 deletions nablapps/mailfeed/migrations/0003_alter_mailfeed_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by Django 3.2.22 on 2024-01-09 18:35

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("mailfeed", "0002_auto_20240109_1653"),
]

operations = [
migrations.AlterModelOptions(
name="mailfeed",
options={"permissions": [("generate_mailfeeds", "can generate mailfeeds")]},
),
]
18 changes: 18 additions & 0 deletions nablapps/mailfeed/migrations/0004_subscription_email_hash.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.23 on 2024-01-10 16:49

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("mailfeed", "0003_alter_mailfeed_options"),
]

operations = [
migrations.AddField(
model_name="subscription",
name="email_hash",
field=models.CharField(default="asdf", max_length=100),
preserve_default=False,
),
]
22 changes: 22 additions & 0 deletions nablapps/mailfeed/migrations/0005_auto_20240110_1725.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 3.2.23 on 2024-01-10 17:25

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("mailfeed", "0004_subscription_email_hash"),
]

operations = [
migrations.RemoveField(
model_name="subscription",
name="email_hash",
),
migrations.AddField(
model_name="subscription",
name="uuid",
field=models.CharField(default=23, max_length=150),
preserve_default=False,
),
]
Empty file.
32 changes: 32 additions & 0 deletions nablapps/mailfeed/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from uuid import uuid4

from django.db import models


class Mailfeed(models.Model):
name = models.CharField(max_length=40, blank=False, null=False)
created = models.DateTimeField(auto_now=True, verbose_name="Opprettet")

def get_email_list(self) -> list[str]:
subscription_list = Subscription.objects.filter(mailfeed=self)
email_list = [sub.email for sub in subscription_list]
return email_list

class Meta:
permissions = [
("generate_mailfeeds", "can generate mailfeeds"),
]

def __str__(self) -> str:
return self.name


class Subscription(models.Model):
mailfeed = models.ForeignKey(Mailfeed, on_delete=models.CASCADE)
email = models.EmailField(blank=False, null=False)
uuid = models.CharField(max_length=150)
created = models.DateTimeField(auto_now=True, verbose_name="Opprettet")

def save(self, *args, **kwargs):
self.uuid = uuid4()
super(Subscription, self).save(*args, **kwargs)
18 changes: 18 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/create_mailfeed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{% extends "base.html" %}

{% block content %}
<h1>Opprett en mailfeed</h1>

<a href="{% url 'mailfeed-list' %}" class="btn btn-outline-primary">Tilbake</a>
<p>
<br>
</p>
<form method="POST">
{% csrf_token %}
<h4>Navn:</h4>
{{ mailfeed_form.name_field }}
<br>
<button class="btn btn-outline-primary" type="submit">send</button>
</form>

{% endblock %}
9 changes: 9 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/invalid_email.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{% extends "base.html" %}

{% block content %}
<h1>Ugyldig mailadresse</h1>
<p>
<br>
</p>
<a href="{% url 'subscribe-mailfeed' mailfeed.id %}" class="btn btn-outline-primary">Prøv igjen</a>
{% endblock %}
55 changes: 55 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/mailfeed_detail.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{% extends "base.html" %}

{% block content %}

<style>
.qr-ticket-container {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 50px;
}

.qr-email {
text-align: left;
}

.qr-registered {
text-align: right;
}
</style>

<h1>Administrerer {{ mailfeed.name }}</h1>
<a href="{% url 'mailfeed-list' %}" class="btn btn-outline-primary">Tilbake til listen over MailFeedene</a>
<a href="{% url 'subscribe-mailfeed' mailfeed.id %}" class="btn btn-outline-primary">Abonner på denne feeden</a>
<p>
<br>
</p>
<h4>Generer og send ny mail:</h4>
<p>
Når du trykker "send" sendes det ut en mail til alle på listen
</p>
<form method="POST">
{% csrf_token %}
<b>Emne</b>
<br>
{{ email_form.subject_field }}
<br>
<b>Innhold</b>
<br>
{{ email_form.content_field }}
<br>
<button class="btn btn-outline-primary" type="submit">send</button>
</form>

<h4>Abonnenter</h4>
<div class="qr-ticket-container">
<p class="qr-email"><b>Epost:</b></p>
</div>
{% for email in email_list %}
<div class="qr-ticket-container">
<p class="qr-email">{{ email }}</p>
</div>
{% endfor %}


{% endblock %}
15 changes: 15 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/mailfeed_list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{% extends "base.html" %}

{% block content %}
<h1>Administrer Mailfeeder</h1>

<a href="{% url 'create-mailfeed' %}" class="btn btn-outline-primary">Opprett ny Mailfeed</a>

<h4>Mailfeeder</h4>
<ul class="list-group">
{% for mailfeed in object_list %}
<li class="list-group-item"><a href="{% url 'mailfeed-detail' mailfeed.id %}">{{ mailfeed.name }}</a></li>
{% endfor %}
</ul>

{% endblock %}
7 changes: 7 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/msg.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{% extends "base.html" %}

{% block content %}
<h1>{{ msg }}</h1>


{% endblock %}
16 changes: 16 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/subscribe_mailfeed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{% extends "base.html" %}

{% block content %}
<h1>Abonner på {{ mailfeed.name }}</h1>


<form method="POST">
{% csrf_token %}
<h4>Email</h4>
{{ subscribe_form.email_field }}
<br>
<br>
<button class="btn btn-outline-primary" type="submit">send</button>
</form>

{% endblock %}
15 changes: 15 additions & 0 deletions nablapps/mailfeed/templates/mailfeed/unsubscribe_mailfeed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{% extends "base.html" %}

{% block content %}
<h1>Slutt å abonner på {{ mailfeed.name }}</h1>


<form method="POST">
{% csrf_token %}
{{ unsubscribe_form.checkbox_field }}
<br>
<br>
<button class="btn btn-outline-primary" type="submit">send</button>
</form>

{% endblock %}
Loading

0 comments on commit a9c00f8

Please sign in to comment.