Model of membership change for MemberType. Now, we use choices feature.
authorgniibe <gniibe@fsij.org>
Fri, 31 Jul 2009 06:56:56 +0000 (15:56 +0900)
committergniibe <gniibe@fsij.org>
Fri, 31 Jul 2009 06:56:56 +0000 (15:56 +0900)
12 files changed:
+migrate+/gc_table_20090731.sql [new file with mode: 0644]
+migrate+/membership_20090731.sql [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
membership/__setup__.py [deleted file]
membership/admin.py
membership/models.py
membership/views.py
templates/membership/member_edit.html
templates/membership/member_index.html
templates/membership/member_list.html
templates/membership/member_payment.html
templates/membership/valid_member_list.html

diff --git a/+migrate+/gc_table_20090731.sql b/+migrate+/gc_table_20090731.sql
new file mode 100644 (file)
index 0000000..b11c944
--- /dev/null
@@ -0,0 +1,3 @@
+drop table "membership_member_bak";
+drop table "meeting_attendance_registration_bak";
+drop table "django_session";
diff --git a/+migrate+/membership_20090731.sql b/+migrate+/membership_20090731.sql
new file mode 100644 (file)
index 0000000..0957c6a
--- /dev/null
@@ -0,0 +1,79 @@
+#  In the class Member,
+#  
+#  -    member_type = models.ForeignKey(MemberType)
+#  +    member_type = models.CharField(max_length=1, choices=MEMBER_TYPE)
+#  
+#  In the class Member, same changes as class Member.
+#  
+#  And the class MemberType will not be used any more.
+#  # member_type
+#  # 1: member
+#  # 2: student member
+#  # 3: associate member (corporate member)
+#  class MemberType(models.Model):
+#      name = models.CharField(max_length=10)
+#      def __unicode__(self):
+#          return self.name
+#  """
+#  
+#  
+alter table "membership_member" rename to "membership_member20090730";
+create table "membership_member" (
+    "id" integer NOT NULL PRIMARY KEY,
+    "user_id" integer NULL UNIQUE REFERENCES "auth_user" ("id"),
+    "member_id" varchar(10) NOT NULL,
+    "member_type" varchar(1) NOT NULL,
+    "name_in_alphabet" varchar(50) NOT NULL,
+    "date_joined" date NULL,
+    "date_quit" date NULL,
+    "advance_payment" integer NOT NULL
+);
+insert into "membership_member" (
+       id, user_id, member_id, member_type, name_in_alphabet,
+        date_joined, date_quit, advance_payment)
+    select id, user_id, member_id, "M", name_in_alphabet, date_join, date_quit,
+       advance_payment from "membership_member20090730"
+    where member_type_id = 1;
+insert into "membership_member" (
+       id, user_id, member_id, member_type, name_in_alphabet,
+       date_joined, date_quit, advance_payment)
+    select id, user_id, member_id, "S", name_in_alphabet, date_join, date_quit,
+       advance_payment from "membership_member20090730"
+    where member_type_id = 2;
+insert into "membership_member" (
+       id, user_id, member_id, member_type, name_in_alphabet,
+       date_joined, date_quit, advance_payment)
+    select id, user_id, member_id, "A", name_in_alphabet, date_join, date_quit,
+       advance_payment from "membership_member20090730"
+    where member_type_id = 3;
+
+alter table "membership_memberpayment" rename to "membership_memberpayment20090730";
+create table "membership_memberpayment" (
+    "id" integer NOT NULL PRIMARY KEY,
+    "member_id" integer NOT NULL REFERENCES "membership_member" ("id"),
+    "date" date NOT NULL,
+    "fee_id" integer NOT NULL,
+    "member_type" varchar(1) NOT NULL,
+    "contribution" integer NOT NULL,
+    "t_i_id" integer NULL UNIQUE
+);
+insert into "membership_memberpayment" (id, member_id, date,
+       fee_id, member_type, contribution, t_i_id)
+    select id, member_id, date, fee_id, "M",
+       contribution, t_i_id from "membership_memberpayment20090730"
+    where member_type_id = 1;
+insert into "membership_memberpayment" (id, member_id, date,
+       fee_id, member_type, contribution, t_i_id)
+    select id, member_id, date, fee_id, "S",
+       contribution, t_i_id from "membership_memberpayment20090730"
+    where member_type_id = 2;
+insert into "membership_memberpayment" (id, member_id, date,
+       fee_id, member_type, contribution, t_i_id)
+    select id, member_id, date, fee_id, "A",
+       contribution, t_i_id from "membership_memberpayment20090730"
+    where member_type_id = 3;
+
+drop table "membership_membertype";
+drop table "membership_memberpayment20090730"
+;
+drop table "membership_member20090730";
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..9ae15fd
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,25 @@
+2009-07-31  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * +migrate+: New directory.
+
+       * membership/admin.py: Remove MemberType.
+
+       * membership/models.py (Member): Rename date_join to date_joined.
+
+       * membership/views.py (member_payment, add_member_payment): Follow
+       member_type change.
+       (manage_member, manage_register_member): Likewise.
+
+       * templates/membership/member_edit.html: Likewise.
+       * templates/membership/member_index.html: Likewise.
+       * templates/membership/member_list.html: Likewise.
+       * templates/membership/member_payment.html: Likewise.
+
+2009-07-30  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * membership/models.py (MemberType): Removed.
+       (Member, MemberPayment): Change field type of member_type into
+       CharField with choices (was: ForeignKey).
+       
+       * membership/__setup__.py: Removed.
+
diff --git a/membership/__setup__.py b/membership/__setup__.py
deleted file mode 100644 (file)
index fbd18be..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- coding: utf-8-*-
-from fsij.membership.models import MemberType
-a1 = MemberType(name='正会員')
-a1.save()
-a2 = MemberType(name='学生会員')
-a2.save()
-a3 = MemberType(name='賛助会員')
-a3.save()
-print "id=%d\n" % a1.id
-print "id=%d\n" % a2.id
-print "id=%d\n" % a3.id
index 0d969a0..175b0cc 100644 (file)
@@ -1,7 +1,6 @@
 from django.contrib import admin
-from fsij.membership.models import Member, CorporateMember, MemberType, MemberAddress, MemberPayment, MemberFee
+from fsij.membership.models import Member, CorporateMember, MemberAddress, MemberPayment, MemberFee
 
-admin.site.register(MemberType)
 admin.site.register(Member)
 admin.site.register(CorporateMember)
 admin.site.register(MemberAddress)
index 9745a4b..1207e11 100644 (file)
@@ -1,22 +1,17 @@
+# -*- coding: utf-8-*-
+
 from django.db import models
 from django.contrib.auth.models import User
 from fsij.accounting.models import LedgerEntry
 
-# member_type
-# 1: member
-# 2: student member
-# 3: associate member (corporate member)
-class MemberType(models.Model):
-    name = models.CharField(max_length=10)
-    def __unicode__(self):
-        return self.name
+MEMBER_TYPE = ( ('M', u'正会員'), ('S', u'学生会員'), ('A', u'賛助会員'), )
 
 class Member(models.Model):
     user = models.ForeignKey(User, unique=True, blank=True, null=True)
     member_id = models.CharField(max_length=10)
-    member_type = models.ForeignKey(MemberType)
+    member_type = models.CharField(max_length=1, choices=MEMBER_TYPE)
     name_in_alphabet = models.CharField(max_length=50, blank=True)
-    date_join = models.DateField('date joined', blank=True, null=True)
+    date_joined = models.DateField('date joined', blank=True, null=True)
     date_quit = models.DateField('date quit', blank=True, null=True)
     advance_payment = models.IntegerField()
     def __unicode__(self):
@@ -24,7 +19,7 @@ class Member(models.Model):
     class Meta:
         permissions = (("can_manage", "Can manage members"),)
     def name(self):
-        if self.member_type.id == 3:
+        if self.member_type == 'A':
             try:
                 corp = self.corporatemember
             except (Corporatemember.DoesNotExist):
@@ -71,8 +66,8 @@ class MemberPayment(models.Model):
     date = models.DateField()
     fee = models.ForeignKey(MemberFee)
     # member type as of payment time
-    member_type = models.ForeignKey(MemberType)
-    # contribution as of payment time, valid if member_type.id == 3
+    member_type = models.CharField(max_length=1, choices=MEMBER_TYPE)
+    # contribution as of payment time, valid if member_type == 'A'
     contribution = models.IntegerField() # Kuchi-Suu in Japanese
     t_i = models.ForeignKey(LedgerEntry, unique=True, blank=True, null=True)
     def __unicode__(self):
index d9afb4a..7c776f4 100644 (file)
@@ -125,13 +125,12 @@ def member_payment(request, member, manage=False):
         payments = None
     if manage:
         fee_list = MemberFee.objects.filter(year__gte = (member.date_join.year - 1))
-        if member.member_type.id == 3:
+        if member.member_type == 'A':
             fee_list = fee_list.exclude(year = 9999)
         fee_list_in_payments = map(lambda (p): p.fee, member.memberpayment_set.all())
         fee_list = filter(lambda (f): not f in fee_list_in_payments, fee_list)
     else:
         fee_list = None
-    member_type_list = MemberType.objects.all().exclude(id=3)
     try: referrer = request.META['HTTP_REFERER']
     except: referrer = None
     if referrer:
@@ -143,12 +142,12 @@ def member_payment(request, member, manage=False):
                                'reload_parent': parent_is_list and manage,
                                'manage' : manage,
                                'fee_list' : fee_list,
-                               'member_type_list': member_type_list })
+                               'member_type_list': MEMBER_TYPE })
 
 def add_member_payment(request, member):
     p = MemberPayment(member = member,
                       date = datetime.date(*time.strptime(request.POST['date'], '%Y-%m-%d')[:3]),
-                      member_type = MemberType.objects.get(id=request.POST['member_type']),
+                      member_type = request.POST['member_type'],
                       fee = MemberFee.objects.get(year = request.POST['fee']),
                       contribution = request.POST['contribution'])
     p.save()
@@ -209,7 +208,7 @@ def manage_member(request, member_id, new):
     else: parent_is_list = None
     return render_to_response('membership/member_edit.html',
                               {'member': member,
-                               'member_type_list': MemberType.objects.all(),
+                               'member_type_list': MEMBER_TYPE,
                                'original_path': request.path,
                                'reload_parent': parent_is_list,
                                'errors': errors,
@@ -219,7 +218,10 @@ def manage_member(request, member_id, new):
 def manage_register_member(request, member_id):
     member = Member.objects.get(member_id=member_id)
     errors = []
-    member_type = MemberType.objects.get(id=request.POST['member_type'])
+    member_type = request.POST['member_type']
+    mt_list = filter(lambda x: x[0] == member_type, MEMBER_TYPE)
+    if mt_list == ():
+        errors.append('member_type')
     name_in_alphabet = request.POST['name_in_alphabet']
     date_join = request.POST['date_join']
     date_quit = request.POST['date_quit']
index 74ddafb..e1b77fd 100644 (file)
@@ -18,7 +18,7 @@ parent.list.location.reload()
 <ul>
 <li>会員種別: <select name=member_type>
 {% for mt in member_type_list %}
-<option value="{{mt.id}}" {% ifequal mt member.member_type %}selected{% endifequal %}>{{ mt.name }}</option>
+<option value="{{mt.0}}" {% ifequal mt member.member_type %}selected{% endifequal %}>{{ mt.1 }}</option>
 {% endfor %}
 </select>
 </li>
index 32b3867..bf2d5c2 100644 (file)
@@ -2,9 +2,9 @@
 
 <ul>
 <li>{{ member.member_id }}</li>
-<li>{{ member.member_type.name }}</li>
+<li>{{ member.get_member_type_display }}</li>
 <!--
-<li>{{ member.date_join }}</li>
+<li>{{ member.date_joined }}</li>
 -->
 <li><a href="email/">メールアドレス</a><li>
 <li><a href="address/">住所</a></li>
index 5e013fd..21f5c28 100644 (file)
@@ -15,8 +15,8 @@
 <tr>
   <td><a href="../{{ m.member_id }}/" target="edit" title="{{ m.member_id }}">
   {{ m.name }}</a></td>
-  <td>{{ m.member_type.name }}</td>
-  <td>{{ m.date_join }}</td>
+  <td>{{ m.get_member_type_display }}</td>
+  <td>{{ m.date_joined }}</td>
   <td><a href="../{{ m.member_id }}/address/" target="edit">
 {% if m.memberaddress_set.get %}{{ m.memberaddress_set.get.zip_code }}{% else %}新規作成{% endif %}</a></td>
   <td><a href="../{{ m.member_id }}/payment/" target="edit">{{ m.memberpayment_set.count }}</a></td>
index dab95d7..ddd0208 100644 (file)
@@ -10,7 +10,7 @@ parent.list.location.reload()
 
 <table>
 <tr><td>会員番号</td><td>{{ member.member_id }}</td></tr>
-<tr><td>会員種別</td><td>{{ member.member_type.name }}</td></tr>
+<tr><td>会員種別</td><td>{{ member.get_member_type_display }}</td></tr>
 {% ifnotequal member.advance_payment 0 %}
 <tr><td>前受金</td><td>{{ member.advance_payment }}</td></tr>
 {% endifnotequal %}
@@ -25,9 +25,9 @@ parent.list.location.reload()
 <td>{{ p.date }}</td>
 <td>{% ifequal p.fee.year 9999 %}入会金{% else %}{{ p.fee.year }}年度{% endifequal%}
 {% ifnotequal p.member_type member.member_type %}
-[ {{ p.member_type.name }} ]
+[ {{ p.get_member_type_display }} ]
 {% endifnotequal %}
-{% ifequal p.member_type.id 3 %}
+{% ifequal p.member_type 'A' %}
 ( {{ p.contribution }} )
 {% endifequal %}
 </td>
@@ -44,13 +44,13 @@ parent.list.location.reload()
 <option value="{{ fee.year }}">{% ifequal fee.year 9999 %}入会金{% else %}{{ fee.year }}年度{% endifequal %}</option>
 {% endfor %}
 </select>
-{% ifequal member.member_type.id 3 %}
+{% ifequal member.member_type 'A' %}
 ( <input type="text" name="contribution" value="{{ member.corporatemember.contribution }}" /> )
-<input type="hidden" name="member_type" value="{{member.member_type.id}}" />
+<input type="hidden" name="member_type" value="{{member.member_type}}" />
 {% else %}
 <select name="member_type">
 {% for mt in member_type_list %}
-<option value="{{mt.id}}" {% ifequal mt member.member_type %}selected{% endifequal %}>{{mt.name}}</option>
+<option value="{{mt.0}}" {% ifequal mt member.member_type %}selected{% endifequal %}>{{mt.1}}</option>
 {% endfor %}
 </select>
 <input type="hidden" name="contribution" value="1" />
@@ -67,9 +67,9 @@ parent.list.location.reload()
 <tr bgcolor={% cycle lightcyan,white %}><td>{{ p.date }}</td>
 <td>{% ifequal p.fee.year 9999 %}入会金{% else %}{{ p.fee.year }}年度{% endifequal %}
 {% ifnotequal p.member_type member.member_type %}
-[ {{ p.member_type.name }} ]
+[ {{ p.get_member_type_display }} ]
 {% endifnotequal %}
-{% ifequal p.member_type.id 3 %}
+{% ifequal p.member_type 'A' %}
 ( {{ p.contribution }} )
 {% endifequal %}
 </td></tr>
index fcf4ba7..9aba254 100644 (file)
@@ -9,21 +9,21 @@
 {% for m in added %}
 <tr bgcolor=cyan>
   <td>{{ m.name }}</td>
-  <td>{{ m.member_type.name }}</td>
+  <td>{{ m.get_member_type_display }}</td>
   <td>{{ m.date_join }}</td>
 </tr>
 {% endfor %}
 {% for m in deleted %}
 <tr bgcolor=violet>
   <td>{{ m.name }}</td>
-  <td>{{ m.member_type.name }}</td>
+  <td>{{ m.get_member_type_display }}</td>
   <td>{{ m.date_join }}</td>
 </tr>
 {% endfor %}
 {% for m in stable %}
 <tr>
   <td>{{ m.name }}</td>
-  <td>{{ m.member_type.name }}</td>
+  <td>{{ m.get_member_type_display }}</td>
   <td>{{ m.date_join }}</td>
 </tr>
 {% endfor %}