diff --git a/src/memberdb/models.py b/src/memberdb/models.py index b8cb469caed55544aa75c28e40c3fd0aad0aeffc..eb6b28096dab64875bb54a38daeeecc0eba57acd 100644 --- a/src/memberdb/models.py +++ b/src/memberdb/models.py @@ -11,52 +11,53 @@ import subprocess import ldap """ -dictionary of membership types & descriptions, should be updated if these are changed in dispense. +list of membership types & descriptions, should be updated if these are changed in dispense. +note: this is a list of tuples of key and value as dict, if it was a dict the database models get confused """ -MEMBERSHIP_TYPES = { - 'oday': { +MEMBERSHIP_TYPES = [ + ('oday', { 'dispense':'pseudo:11', 'desc':'O\' Day Special - first time members only', 'is_guild':True, 'is_student':True, 'must_be_fresh':True, - }, - 'student_and_guild': { + }), + ('student_and_guild', { 'dispense':'pseudo:10', 'desc':'Student and UWA Guild member', 'is_guild':True, 'is_student':True, 'must_be_fresh':False, - }, - 'student_only': { + }), + ('student_only', { 'dispense':'pseudo:9', 'desc':'Student and not UWA Guild member', 'is_guild':False, 'is_student':True, 'must_be_fresh':False, - }, - 'guild_only': { + }), + ('guild_only', { 'dispense':'pseudo:8', 'desc':'Non-Student and UWA Guild member', 'is_guild':True, 'is_student':False, 'must_be_fresh':False, - }, - 'non_student': { + }), + ('non_student', { 'dispense':'pseudo:7', 'desc':'Non-Student and not UWA Guild member', 'is_guild':False, 'is_student':False, 'must_be_fresh':False, - }, - 'lifer': { + }), + ('lifer', { 'dispense':'', 'desc':'Life member', 'is_guild':False, 'is_student':False, 'must_be_fresh':False, - } -} + }) +] def get_membership_choices(is_renew=None, get_prices=True): """ @@ -64,7 +65,7 @@ def get_membership_choices(is_renew=None, get_prices=True): also dynamically fetch the prices from dispense (if possible) """ choices = [] - for key, val in MEMBERSHIP_TYPES.items(): + for key, val in MEMBERSHIP_TYPES: if (val['must_be_fresh'] and is_renew == True): # if you have an account already, you don't qualify for the fresher special continue @@ -90,7 +91,7 @@ def get_membership_choices(is_renew=None, get_prices=True): def get_membership_type(member): best = 'non_student' is_fresh = member.memberships.all().count() == 0 - for i, t in MEMBERSHIP_TYPES.items(): + for i, t in MEMBERSHIP_TYPES: if (t['must_be_fresh'] == is_fresh and t['is_student'] == member.is_student and t['is_guild'] == member.is_guild): best = i break @@ -225,11 +226,16 @@ class Membership (models.Model): def __str__ (self): return "Member [%s] (%s) renewed membership on %s" % (self.member.username, self.member.display_name, self.date_submitted.strftime("%Y-%m-%d")) + def get_membership_type(self): + for key, val in MEMBERSHIP_TYPES: + if key == self.membership_type: + return val + def get_dispense_item(self): - return MEMBERSHIP_TYPES[self.membership_type]['dispense'] + return self.get_membership_type()['dispense'] def get_pretty_type(self): - return MEMBERSHIP_TYPES[self.membership_type]['desc'] + return self.get_membership_type()['desc'] class Meta: verbose_name = "Membership renewal record" diff --git a/src/memberdb/register.py b/src/memberdb/register.py index 0bceb6aee7a3e57051656bc9b46c6bf19368d5e7..99ba5d15d136a699eaa5b079593c0d0bf5b3cf06 100644 --- a/src/memberdb/register.py +++ b/src/memberdb/register.py @@ -19,7 +19,7 @@ from django.conf import settings from squarepay.models import MembershipPayment from squarepay.dispense import get_item_price -from .models import Member, Membership, get_membership_choices, make_pending_membership, MEMBERSHIP_TYPES +from .models import Member, Membership, get_membership_choices, make_pending_membership from .forms import MyModelForm from .views import MyUpdateView diff --git a/src/memberdb/views.py b/src/memberdb/views.py index 268f3ae6700d8660f5203c3ea982762db634b1e0..19e40304f5648e01fa55512b1409ca8d0db3ebcb 100644 --- a/src/memberdb/views.py +++ b/src/memberdb/views.py @@ -11,7 +11,7 @@ from django.contrib.auth.mixins import AccessMixin from django.utils import timezone from formtools.wizard.views import SessionWizardView -from .models import Member, IncAssocMember, Membership, MEMBERSHIP_TYPES, TokenConfirmation +from .models import Member, IncAssocMember, Membership, TokenConfirmation from .forms import MemberHomeForm class MemberMiddleware: diff --git a/src/squarepay/views.py b/src/squarepay/views.py index 2e62b3cb500978d796c1777e2ced2ab1d72f26c7..c80825f531d6848bf3eff53cb27033cfbb58d9e6 100644 --- a/src/squarepay/views.py +++ b/src/squarepay/views.py @@ -9,7 +9,7 @@ from django.urls import reverse from django.utils import timezone from memberdb.views import MemberAccessMixin -from memberdb.models import Membership, MEMBERSHIP_TYPES +from memberdb.models import Membership from .models import MembershipPayment, CardPayment from . import payments