Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions webapp/accounts/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,11 @@ class Meta:
help_text=("Informatie over beschikbaarheid of andere bijzonderheden."
"Zichtbaar voor andere VOKO leden.")
)
orderround_mail_optout = forms.BooleanField(
label=("Ik wil geen e-mails ontvangen wanneer een bestelronde wordt geopend"),
required=False,
help_text=("Je krijgt geen e-mail meer wanneer een bestelronde wordt geopend")
)

# TODO: Notes and e-mail address cannot be changed atm.

Expand All @@ -249,6 +254,8 @@ def __init__(self, data=None, *args, **kwargs):
self.instance.userprofile.car_type)
self.fields['particularities'].initial = (
self.instance.userprofile.particularities)
self.fields['orderround_mail_optout'].initial = (
self.instance.userprofile.orderround_mail_optout)

# If shares car, set more fields as required
if data and data.get('shares_car', None) is not None:
Expand Down Expand Up @@ -287,6 +294,7 @@ def save(self, commit=True):
self.cleaned_data['car_neighborhood'])
userprofile.car_type = self.cleaned_data['car_type']
userprofile.particularities = self.cleaned_data['particularities']
userprofile.orderround_mail_optout = self.cleaned_data['orderround_mail_optout']

if commit:
user.save()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.25 on 2024-12-16 12:59

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('accounts', '0032_alter_userprofile_shares_car'),
]

operations = [
migrations.AddField(
model_name='userprofile',
name='orderround_mail_optout',
field=models.BooleanField(default=False, help_text='Je krijgt geen e-mail meer wanneer een bestelronde wordt geopend', verbose_name='Opt-out van bestelronde e-mails'),
),
]
6 changes: 6 additions & 0 deletions webapp/accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ class Meta:
max_length=300,
)

orderround_mail_optout = models.BooleanField(
default=False,
verbose_name="Opt-out van bestelronde e-mails",
help_text="Je krijgt geen e-mail meer wanneer een bestelronde wordt geopend",
)

def __str__(self):
return "Profile for user: %s" % self.user

Expand Down
3 changes: 2 additions & 1 deletion webapp/mailing/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ class PreviewMailView(StaffuserRequiredMixin, TemplateView):
def get_context_data(self, **kwargs):
context = super(PreviewMailView, self).get_context_data(**kwargs)

users = VokoUser.objects.filter(id__in=self.request.session.get('mailing_user_ids'))
users = VokoUser.objects.filter(id__in=self.request.session.get('mailing_user_ids'))\
.order_by("first_name", "last_name")
sleeping_users = SleepingVokoUser.objects.filter(id__in=self.request.session.get('mailing_user_ids'))

context['mailing_users'] = list(users) + list(sleeping_users)
Expand Down
4 changes: 3 additions & 1 deletion webapp/ordering/admin_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,9 @@ def _user_has_no_orders_in_current_round(voko_user):

if kwargs['mailing_type'] == "round-open":
mailing_id = 11 # Order round open
queryset = VokoUser.objects.filter(can_activate=True)
queryset = VokoUser.objects.filter(Q(can_activate=True)
& (Q(userprofile__isnull=True)
| Q(userprofile__orderround_mail_optout=False)))

user_ids = [user.pk for user in queryset]
request.session['mailing_user_ids'] = user_ids
Expand Down
6 changes: 5 additions & 1 deletion webapp/ordering/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from datetime import datetime
from decimal import Decimal, ROUND_UP, ROUND_DOWN
from django.db import models, transaction
from django.db.models import Q
from django_extensions.db.models import TimeStampedModel
from django.core.exceptions import ValidationError
from accounts.models import Address, VokoUser
Expand Down Expand Up @@ -338,7 +339,10 @@ def _users_without_orders_filter(voko_user):

return list(
filter(
_users_without_orders_filter, VokoUser.objects.filter(is_active=True)
_users_without_orders_filter,
VokoUser.objects.filter(Q(is_active=True)
& (Q(userprofile__isnull=True)
| Q(userprofile__orderround_mail_optout=False)))
)
)

Expand Down
16 changes: 16 additions & 0 deletions webapp/templates/accounts/profile.html
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,22 @@ <h2 class="page-header">Profiel</h2>
{{ user.userprofile.particularities|default:"-" }}
</div>
</div>
<div class="row mt-3">
<hr>
</div>
<div class="row">
<div class="col">
Ontvangt e-mail wanneer een bestelronde wordt geopend:
</div>
<div class="col">
{% if user.userprofile.orderround_mail_optout %}
Nee
{% else %}
Ja
{% endif %}
</div>
</div>

</div>
</div>
<div class="d-flex justify-content-between">
Expand Down
Loading