From 2e84ee7d4f8498bfb7d493d7b669399d4f149d40 Mon Sep 17 00:00:00 2001 From: Skia Date: Tue, 22 Mar 2016 11:42:00 +0100 Subject: [PATCH] Fix subscription and improve views --- club/views.py | 1 - core/models.py | 4 ++++ core/templates/core/user_detail.jinja | 10 ++++++++- core/templates/core/user_tools.jinja | 5 ++++- sith/settings.py | 2 ++ subscription/models.py | 4 ++++ .../templates/subscription/subscription.html | 18 ---------------- .../templates/subscription/subscription.jinja | 14 +++++++++++++ subscription/views.py | 21 ++++++++----------- 9 files changed, 46 insertions(+), 33 deletions(-) delete mode 100644 subscription/templates/subscription/subscription.html create mode 100644 subscription/templates/subscription/subscription.jinja diff --git a/club/views.py b/club/views.py index 0a944b10..25d936b9 100644 --- a/club/views.py +++ b/club/views.py @@ -8,7 +8,6 @@ from django.core.exceptions import ValidationError from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin from club.models import Club, Membership -from subscription.views import SubscriberMixin class ClubListView(CanViewMixin, ListView): """ diff --git a/core/models.py b/core/models.py index 96681eff..611d8732 100644 --- a/core/models.py +++ b/core/models.py @@ -201,6 +201,10 @@ class User(AbstractBaseUser, PermissionsMixin): return True return False + def can_be_edited_by(self, user): + return user.is_in_group(settings.AE_GROUPS['board']['name']) or user.is_in_group(settings.AE_GROUPS['root']['name']) + + class AnonymousUser(AuthAnonymousUser): def __init__(self, request): super(AnonymousUser, self).__init__() diff --git a/core/templates/core/user_detail.jinja b/core/templates/core/user_detail.jinja index 5e4603a2..8f16ba75 100644 --- a/core/templates/core/user_detail.jinja +++ b/core/templates/core/user_detail.jinja @@ -24,8 +24,16 @@ You're seeing the profile of {{ profile.get_full_name() }}
{{ profile.nick_name }}
{{ profile.date_of_birth|date("d/m/Y") }} -

+ +

+{% if get_subscriber(profile).is_subscribed() %} +User is subscriber until {{ get_subscriber(profile).subscriptions.last().subscription_end }} +{% else %} +User is not subscribed. New subscription +{% endif %} +

+ {% endblock %} diff --git a/core/templates/core/user_tools.jinja b/core/templates/core/user_tools.jinja index 7db4670d..2ee9d738 100644 --- a/core/templates/core/user_tools.jinja +++ b/core/templates/core/user_tools.jinja @@ -9,9 +9,12 @@

Back to profile

{% endblock %} diff --git a/sith/settings.py b/sith/settings.py index 97d1b579..55c899e0 100644 --- a/sith/settings.py +++ b/sith/settings.py @@ -97,6 +97,8 @@ TEMPLATES = [ "can_edit_prop": "core.views.can_edit_prop", "can_edit": "core.views.can_edit", "can_view": "core.views.can_view", + "get_subscriber": "subscription.views.get_subscriber", + "settings": "sith.settings", }, "bytecode_cache": { "name": "default", diff --git a/subscription/models.py b/subscription/models.py index bc4ccbad..49bbb152 100644 --- a/subscription/models.py +++ b/subscription/models.py @@ -35,6 +35,7 @@ class Subscription(models.Model): subscription_start = models.DateField(_('subscription start')) subscription_end = models.DateField(_('subscription end')) payment_method = models.CharField(_('payment method'), max_length=255, choices=settings.AE_PAYMENT_METHOD) + # TODO add location! class Meta: permissions = ( @@ -112,6 +113,9 @@ class Subscription(models.Model): return start.replace(month=(start.month+6*duration)%12, year=start.year+int(duration/2)+(1 if start.month > 6 and duration%2 == 1 else 0)) + def can_be_edited_by(self, user): + return user.is_in_group(settings.AE_GROUPS['board']['name']) or user.is_in_group(settings.AE_GROUPS['root']['name']) + def is_valid_now(self): return self.subscription_start <= date.today() and date.today() <= self.subscription_end diff --git a/subscription/templates/subscription/subscription.html b/subscription/templates/subscription/subscription.html deleted file mode 100644 index 2e87e5a6..00000000 --- a/subscription/templates/subscription/subscription.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "core/base.html" %} - -{% block title %} -{% if profile %} -Edit {{ member.user.get_display_name }}'s subscription -{% endif %} -{% endblock %} - -{% block content %} -

Edit subscription

-{#

Go to profile

#} -{#

You're editing the subscription of {{ member.user.get_display_name }}

#} -
- {% csrf_token %} - {{ form.as_p }} -

-
-{% endblock %} diff --git a/subscription/templates/subscription/subscription.jinja b/subscription/templates/subscription/subscription.jinja new file mode 100644 index 00000000..dd894c5c --- /dev/null +++ b/subscription/templates/subscription/subscription.jinja @@ -0,0 +1,14 @@ +{% extends "core/base.jinja" %} + +{% block title %} +New subscription +{% endblock %} + +{% block content %} +

New subscription

+
+ {% csrf_token %} + {{ form.as_p() }} +

+
+{% endblock %} diff --git a/subscription/views.py b/subscription/views.py index 083f9609..d08bc781 100644 --- a/subscription/views.py +++ b/subscription/views.py @@ -10,23 +10,20 @@ from subscription.models import Subscriber, Subscription from core.views import CanEditMixin, CanEditPropMixin, CanViewMixin from core.models import User -class SubscriberMixin(View): - def dispatch(self, request, *arg, **kwargs): - res = super(SubscriberMixin, self).dispatch(request, *arg, **kwargs) - subscriber = Subscriber.objects.filter(pk=request.user.pk).first() - if subscriber is not None and subscriber.is_subscribed(): - return ret - raise PermissionDenied +def get_subscriber(user): + s = Subscriber.objects.filter(pk=user.pk).first() + return s class SubscriptionForm(forms.ModelForm): class Meta: model = Subscription fields = ['member', 'subscription_type', 'payment_method'] - #widgets = { - # 'subscription_type': Select(choices={(k.lower(), k+" - "+str(v['price'])+"€"+str(Subscription.compute_end(2))) for k,v in settings.AE_SUBSCRIPTIONS.items()}), - #} - class NewSubscription(CanEditMixin, CreateView): - template_name = 'subscription/subscription.html' + template_name = 'subscription/subscription.jinja' form_class = SubscriptionForm + + def get_initial(self): + if 'member' in self.request.GET.keys(): + return {'member': self.request.GET['member']} + return {}