Merge branch 'master' into member_lists

docker
Schlabonski 9 years ago
commit 8aabfdf4a4

@ -26,6 +26,8 @@ class Message(models.Model):
for group in self.to_groups.all():
group_members = group.member_set.all()
for member in group_members:
if not member.gets_newsletter:
continue
members.add(member)
data = [
(self.subject, self.content, self.from_addr, [member.email])

@ -0,0 +1,44 @@
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
{% load i18n %}
<p><b>{% trans "Here you can register yourself to the newsletter" %}</b></p>
{% if error_message %}
<p><b>{{ error_message }}</b></p>
{% endif %}
<form action="" method="post">
{% csrf_token %}
<input type="hidden" name="post" value="yes">
<p>
{% trans "Prename" %}
<input type="text" name="prename">
</p>
<p>
{% trans "Lastname" %}
<input type="text" name="lastname">
</p>
<p>
{% trans "Birthdate" %}
<input type="date" name="birthdate" class="datepicker">
</p>
<script>
$(document).ready(function() {
$('.datepicker').datepicker({
dateFormat: "yy-mm-dd"});
});
</script>
<p>
{% trans "Email address" %}
<input type="email" name="email">
</p>
<p>
<input type="submit" value="{% trans "Register" %}">
</p>
</form>

@ -0,0 +1,3 @@
{% load i18n %}
<p><b>{% trans "Subscribed successfully" %}</b></p>

@ -5,6 +5,5 @@ from . import views
app_name = "mailer"
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^send_mail', views.send_mail, name='send_mail'),
url(r'^send', views.send, name='send')
url(r'^subscribe$', views.subscribe, name='subscribe'),
]

@ -1,40 +1,57 @@
from django.shortcuts import render
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import permission_required
from members.models import Group
from members.models import Member
from .models import Message
@permission_required('mailer.submit_mails', login_url='/admin/')
def index(request):
"""This is the main newsletter view"""
return render(request, 'mailer/index.html')
return HttpResponseRedirect(reverse('mailer:subscribe'))
@permission_required('mailer.submit_mails', login_url='/admin/')
def send(request):
return render(request, 'mailer/send.html', {
'groups': Group.objects.all()
})
def render_subscribe(request, error_message=""):
date_input = forms.DateInput(attrs={'required': True,
'class': 'datepicker',
'name': 'birthdate'})
date_field = date_input.render(_("Birthdate"), "")
context = {'date_field': date_field}
if error_message:
context['error_message'] = error_message
return render(request, 'mailer/subscribe.html', context)
@permission_required('mailer.submit_mails', login_url='/admin/')
def send_mail(request):
def subscribe(request):
try:
subject = request.POST['subject']
content = request.POST['content']
to_group = Group.objects.get(pk=request.POST['to_group'])
except (KeyError, Group.DoesNotExist):
return render(request, 'mailer/send.html', {
'error_message': _("Please fill in every field!"),
'groups': Group.objects.all()
})
else:
msg = Message(subject=subject, content=content, to_group=to_group)
msg.submit()
msg.save()
return HttpResponseRedirect(reverse('mailer:index'))
request.POST['post']
try:
print("trying to subscribe")
prename = request.POST['prename']
lastname = request.POST['lastname']
email = request.POST['email']
print("email", email)
birth_date = request.POST['birthdate']
print("birthdate", birth_date)
except KeyError:
return subscribe(request, _("Please fill in every field!"))
else:
# TODO: check whether member exists
exists = Member.objects.filter(prename=prename,
lastname=lastname)
if len(exists) > 0:
return render_subscribe(request,
error_message=_("Member already exists"))
member = Member(prename=prename,
lastname=lastname,
email=email,
birth_date=birth_date,
gets_newsletter=True)
member.save()
return subscribed(request)
except KeyError:
return render_subscribe(request)
def subscribed(request):
return render(request, 'mailer/subscribed.html')

@ -36,7 +36,7 @@ class NotTooOldFilter(SimpleListFilter):
class MaterialAdmin(admin.ModelAdmin):
"""Edit view of a MaterialPart"""
list_display = ('name', 'buy_date', 'lifetime', 'not_too_old', 'photo')
list_display = ('name', 'quantity_real', 'buy_date', 'lifetime', 'not_too_old', 'photo')
inlines = [OwnershipInline]
list_filter = (NotTooOldFilter,)

@ -5,7 +5,8 @@
"fields": {
"name": "Seil 40m grün",
"buy_date": "2016-01-01",
"lifetime": "3"
"lifetime": "3",
"quantity": "3"
}
},
{
@ -14,7 +15,8 @@
"fields": {
"name": "Seil 40m blau",
"buy_date": "2012-01-01",
"lifetime": "3"
"lifetime": "3",
"quantity": "10"
}
},
{
@ -23,7 +25,8 @@
"fields": {
"name": "Seil 60m gelb",
"buy_date": "2013-01-01",
"lifetime": "3"
"lifetime": "3",
"quantity": "5"
}
},
{
@ -32,7 +35,8 @@
"fields": {
"name": "Seil 60m blau",
"buy_date": "2016-01-01",
"lifetime": "3"
"lifetime": "3",
"quantity": "2"
}
}
]

@ -15,15 +15,23 @@ class MaterialPart(models.Model):
members of the association (Ownership)
"""
name = models.CharField(_('name'), max_length=30)
quantity = models.IntegerField(_('quantity'), default=0)
buy_date = models.DateField(_('purchase date'), editable=True)
lifetime = models.DecimalField(_('lifetime (years)'), decimal_places=0,
max_digits=3)
lifetime = models.DecimalField(_('lifetime (years)'), decimal_places=0, max_digits=3)
photo = models.ImageField(_('photo'), upload_to='images', blank=True)
def __str__(self):
"""String representation"""
return self.name
def quantity_real(self):
real = sum([o.count for o in Ownership.objects.filter(material__id = self.pk)])
return str(real) + '/' + str(self.quantity)
quantity_real.admin_order_field = 'quantity'
quantity_real.short_description = _('Quantity')
def not_too_old(self):
"""Returns wether the part should be replaced cause of age"""
buy_time = timezone.make_aware(datetime.combine(self.buy_date,

@ -20,9 +20,10 @@ from .models import (Member, Group, MemberList, MemberOnList, Klettertreff,
# Register your models here.
class MemberAdmin(admin.ModelAdmin):
fields = ['prename', 'lastname', 'email', 'birth_date', 'group']
list_display = ('name', 'birth_date')
list_filter = ('group',)
fields = ['prename', 'lastname', 'email', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'group',
'gets_newsletter', 'comments']
list_display = ('name', 'street', 'town', 'phone_number', 'phone_number_parents', 'birth_date', 'gets_newsletter', 'comments')
list_filter = ('group', 'gets_newsletter')
class GroupAdmin(admin.ModelAdmin):

@ -28,9 +28,16 @@ class Member(models.Model):
"""
prename = models.CharField(max_length=20, verbose_name=_('prename'))
lastname = models.CharField(max_length=20, verbose_name=_('last name'))
street = models.CharField(max_length=30, verbose_name=_('street'), default='', blank=True)
town = models.CharField(max_length=30, verbose_name=_('town'), default='', blank=True)
phone_number = models.CharField(max_length=12, verbose_name=_('phone number'), default='', blank=True)
phone_number_parents = models.CharField(max_length=12, verbose_name=_('parents phone number'), default='', blank=True)
email = models.EmailField(max_length=100, default="")
birth_date = models.DateField(_('birth date')) # to determine the age
group = models.ManyToManyField(Group)
gets_newsletter = models.BooleanField(_('receives newsletter'),
default=True)
comments = models.TextField(_('comments'), default='', blank=True)
def __str__(self):
"""String representation"""
@ -45,9 +52,11 @@ class Member(models.Model):
verbose_name = _('member')
verbose_name_plural = _('members')
class MemberList(models.Model):
"""Lets the user create a list of members in pdf format. """
name = models.CharField(verbose_name='List Name', default='', max_length=50)
name = models.CharField(verbose_name='List Name', default='',
max_length=50)
date = models.DateField(default=datetime.today)
comment = models.TextField(_('Comments'), default='')

Loading…
Cancel
Save