diff --git a/club/models.py b/club/models.py
index 9484e4e2..90df31a3 100644
--- a/club/models.py
+++ b/club/models.py
@@ -231,6 +231,11 @@ class Mailing(models.Model):
club = models.ForeignKey(Club, verbose_name=_('Club'), related_name="mailings", null=False, blank=False)
email = models.EmailField(_('Email address'), unique=True)
+ def clean(self):
+ if '@' + settings.SITH_MAILING_ALLOWED_DOMAIN not in self.email:
+ raise ValidationError(_('Unothorized mailing domain'))
+ super(Mailing, self).clean()
+
def is_owned_by(self, user):
return user.is_in_group(self) or user.is_root or user.is_board_member
@@ -242,6 +247,15 @@ class Mailing(models.Model):
sub.delete()
super(Mailing, self).delete()
+ def base_mail(self):
+ return self.email.split('@')[0]
+
+ def fetch_format(self):
+ resp = self.base_mail() + ': '
+ for sub in self.subscriptions.all():
+ resp += sub.fetch_format()
+ return resp
+
def __str__(self):
return "%s - %s" % (self.club, self.email)
@@ -270,6 +284,9 @@ class MailingSubscription(models.Model):
def can_be_edited_by(self, user):
return self.is_owned_by(user) or (user is not None and user.id == self.user.id)
+ def fetch_format(self):
+ return self.email + ' '
+
def __str__(self):
if self.user:
user = str(self.user)
diff --git a/club/templates/club/mailing.jinja b/club/templates/club/mailing.jinja
index 47f11884..66e57864 100644
--- a/club/templates/club/mailing.jinja
+++ b/club/templates/club/mailing.jinja
@@ -10,7 +10,7 @@
{% for mailing in object_list %}
diff --git a/club/templates/club/mailing_output.jinja b/club/templates/club/mailing_output.jinja
new file mode 100644
index 00000000..8a7133a7
--- /dev/null
+++ b/club/templates/club/mailing_output.jinja
@@ -0,0 +1,3 @@
+{%- for mailing in object_list -%}
+{{ mailing.fetch_format() }}
+{%- endfor -%}
\ No newline at end of file
diff --git a/club/urls.py b/club/urls.py
index 42074a5c..bfd178a0 100644
--- a/club/urls.py
+++ b/club/urls.py
@@ -44,5 +44,6 @@ urlpatterns = [
url(r'^(?P[0-9]+)/mailing/new/subscription$', ClubMailingView.as_view(action=MailingFormType.MEMBER), name='mailing_subscription_create'),
url(r'^(?P[0-9]+)/mailing/delete$', MailingDeleteView.as_view(), name='mailing_delete'),
url(r'^(?P[0-9]+)/mailing/delete/subscription$', MailingSubscriptionDeleteView.as_view(), name='mailing_subscription_delete'),
+ url(r'^mailing/fetch$', MailingFetchView.as_view(), name='mailing_fetch'),
url(r'^membership/(?P[0-9]+)/set_old$', MembershipSetOldView.as_view(), name='membership_set_old'),
]
diff --git a/club/views.py b/club/views.py
index 6a3b35a0..a283279c 100644
--- a/club/views.py
+++ b/club/views.py
@@ -44,6 +44,8 @@ from club.models import Club, Membership, Mailing, MailingSubscription
from sith.settings import SITH_MAXIMUM_FREE_ROLE
from counter.models import Selling, Counter
+from django.conf import settings
+
# Custom forms
@@ -505,3 +507,15 @@ class MailingSubscriptionDeleteView(CanEditMixin, DeleteView):
def get_success_url(self, **kwargs):
return reverse_lazy('club:mailing', kwargs={'club_id': self.club_id})
+
+
+class MailingFetchView(ListView):
+
+ model = Mailing
+ template_name = 'club/mailing_output.jinja'
+
+ def dispatch(self, request, *args, **kwargs):
+ key = request.GET.get('key', '')
+ if key != settings.SITH_MAILING_FETCH_KEY:
+ raise PermissionDenied
+ return super(MailingFetchView, self).dispatch(request, *args, **kwargs)
diff --git a/sith/settings.py b/sith/settings.py
index ff08d42d..3f492281 100644
--- a/sith/settings.py
+++ b/sith/settings.py
@@ -586,3 +586,8 @@ if DEBUG:
SASS_INCLUDE_FOLDERS = [
'core/static/',
]
+
+# Mailing related settings
+
+SITH_MAILING_ALLOWED_DOMAIN = 'utbm.fr'
+SITH_MAILING_FETCH_KEY = 'IloveMails'
diff --git a/sith/urls.py b/sith/urls.py
index 2b744c24..e21a53cb 100644
--- a/sith/urls.py
+++ b/sith/urls.py
@@ -43,6 +43,7 @@ from django.conf.urls.static import static
from django.conf import settings
from django.views.i18n import javascript_catalog
from ajax_select import urls as ajax_select_urls
+from club.views import MailingFetchView
js_info_dict = {
'packages': ('sith',),
@@ -72,6 +73,8 @@ urlpatterns = [
url(r'^ajax_select/', include(ajax_select_urls)),
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'),
+ # This url is for legacy use
+ url(r'^mailing.php$', MailingFetchView.as_view(), name='mailing_fetch_legacy'),
]
if settings.DEBUG: