Updated for 2010.
authorgniibe <gniibe@fsij.org>
Wed, 19 May 2010 07:56:38 +0000 (16:56 +0900)
committergniibe <gniibe@fsij.org>
Wed, 19 May 2010 07:56:38 +0000 (16:56 +0900)
ChangeLog
membership/urls.py
membership/views.py
templates/membership/member_browse.html [new file with mode: 0644]
templates/top_page.html

index 6813177..bc0d399 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-05-19  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * templates/top_page.html: Updated for 2010.
+
+       * membership/views.py, membership/urls.py: Added 'browse/'
+       interface by Secretariat.
+
 2009-08-04  Niibe Yutaka  <gniibe@fsij.org>
 
        * membership/models.py (Member.name): Handle corp case.
@@ -84,6 +91,6 @@
        * membership/models.py (MemberType): Removed.
        (Member, MemberPayment): Change field type of member_type into
        CharField with choices (was: ForeignKey).
-       
+
        * membership/__setup__.py: Removed.
 
index 17e900c..a8a52af 100644 (file)
@@ -8,6 +8,8 @@ urlpatterns = patterns('',
     (r'^address/$', 'fsij.membership.views.address'),
     (r'^address/register/$', 'fsij.membership.views.register_address'),
     (r'^payment/$', 'fsij.membership.views.payment'),
+# Views by Secretariat (index)
+    (r'^browse/$', 'fsij.membership.views.member_browse'),
 # Views by Secretariat (index)
     (r'^list_top/$', 'fsij.membership.views.member_list_top'),
     (r'^list/$', 'fsij.membership.views.member_list'),
index 89cc990..8278db0 100644 (file)
@@ -336,3 +336,19 @@ def valid_member_list(request,year):
                                'deleted': deleted,
                                'year': year,
                                })
+
+@user_passes_test(lambda u: u.has_perm('membership.can_manage'), LOGIN_URL)
+def member_browse(request):
+    if 'query' in request.GET:
+        if request.GET['current_past_all'] == "current":
+            members = Member.objects.filter(date_quit__isnull=True).order_by('member_id')
+        elif request.GET['current_past_all'] == "past":
+            members = Member.objects.filter(date_quit__isnull=False).order_by('member_id')
+        else:
+            members = Member.objects.all()
+    else:
+        members = None
+    return render_to_response('membership/member_browse.html',
+                              {'req': request,
+                               'members': members,
+                               })
diff --git a/templates/membership/member_browse.html b/templates/membership/member_browse.html
new file mode 100644 (file)
index 0000000..9d28476
--- /dev/null
@@ -0,0 +1,105 @@
+<div id="search" style="background: lightgrey">
+<form method="GET" action=".">
+<ul>
+<li>
+条件:
+<!--  絞り込み
+member_type で絞る
+name で絞る
+email で絞る
+  -->
+
+<ul>
+<li>会費支払い:
+<input type="radio" name="payment_condition" value="1">今年度会費支払い済</input>
+<input type="radio" name="payment_condition" value="2">今年度会費未納</input>
+<input type="radio" name="payment_condition" value="3">会費未納あり</input>
+</li>
+
+<li>対象:
+<select name="current_past_all">
+<option value="current">現在の会員のみ</option>
+<option value="past">退会済み会員のみ</option>
+<option value="all">すべて</option>
+</select>
+</li>
+</ul>
+</li>
+
+<li>
+順番:
+<select name="ordered_by"><option value="type,name">会員種別, 名前</select>
+</li>
+
+<input type="submit" value="Submit Query"/>
+<input type="hidden" name="query" value="true" />
+</form>
+</div>
+
+<div id="list" style="float:left; border-width:2; border-style:outset; width: 90%">
+{% if members %}
+<table id="members">
+<tr>
+  <th style="cursor:pointer" onclick="closeColumn(0)">ユーザ名</th>
+  <th style="cursor:pointer" onclick="closeColumn(1)">会員番号</th>
+  <th style="cursor:pointer" onclick="closeColumn(2)">会員種別</th>
+  <th style="cursor:pointer" onclick="closeColumn(3)">会員名</th>
+  <th style="cursor:pointer" onclick="closeColumn(4)">メールアドレス</th>
+  <th style="cursor:pointer" onclick="closeColumn(5)">入会年月日</th>
+  <th style="cursor:pointer" onclick="closeColumn(6)">退会年月日</th>
+  <th style="cursor:pointer" onclick="closeColumn(7)">前受金</th>
+  <th style="cursor:pointer" onclick="closeColumn(8)">住所</th>
+  <th style="cursor:pointer" onclick="closeColumn(9)">支払い</th>
+</tr>
+<select id="addcol" name="columns">
+<option name="">
+</select>
+{% for m in members %}
+<tr bgcolor={% cycle lightcyan,white as rowcolors %}>
+  <td>{{m.user.username}}</td>
+  <td>{{m.member_id}}</td>
+  <td>{{ m.get_member_type_display }}</td>
+  <td><a href="../{{ m.member_id }}/" target="edit" title="{{ m.member_id }}">
+      {{ m.name }}</a></td>
+  <td>{{ m.email }}</td>
+  <td>{{ m.date_joined }}</td>
+  <td>{{ m.date_quit }}</td>
+  <td>{{ m.advance_payment }}</td>
+  <td>{% if m.memberaddress_set.get %}{{ m.memberaddress_set.get.zip_code }}{% else %}----{% endif %}</td>
+  <td>{{ m.memberpayment_set.count }}</td>
+</tr>
+{% endfor %}
+</table>
+{% else %}
+<p>No query yet.</p>
+{% endif %}
+</div>
+
+<div id="content" style="float:left; border-width:2; border-style:outset; width: 5%">
+<p>THis is test content.</p>
+</div>
+
+<script type=text/javascript>
+var columnList = [1,1,1,1,1,1,1,1,1,1];
+var s = document.getElementById("addcol");
+var t = document.getElementById("members");
+
+function closeColumn(c)
+{
+  for (i=0; i<t.rows.length; i++) {
+    t.rows[i].cells[c].style.display = "none";
+  }
+  columnList[c] = 0;
+
+  s.add(new Option(t.rows[0].cells[c].innerHTML, c),  null);
+}
+
+s.onchange = function() {
+  var chosenoption=this.options[this.selectedIndex];
+  for (i=0; i<t.rows.length; i++) {
+    t.rows[i].cells[chosenoption.value].style.display = "";
+  }
+  columnList[chosenoption.value] = 1;
+  this.remove(this.selectedIndex);
+}
+</script>
index 9cba36a..12f6094 100644 (file)
@@ -3,20 +3,21 @@
 <h2>FSIJメンバーズサイト移行のお知らせ (2009-07-09)</h2>
 <p>新しいマシンを用意し、メンバーズサイトは移行しました</p>
 
-<h2>2009年度通常総会のお知らせ</h2>
+<h2>2010年度通常総会のお知らせ</h2>
 <p>
-2009年6月13日(土)に、産総研秋葉原事業所で2009年度通常総会を開催します。
+2010年6月19日(土)に、産総研秋葉原事業所で2010年度通常総会を開催します。
 </p>
-<p>詳しくは<a href="meetings/1/">こちら</a>を参照ください。</p>
+<p>詳しくは<a href="meetings/2/">こちら</a>を参照ください。</p>
 <p>事前の出欠登録をおねがいします。登録は前日まで変更できますので、まずは早めに登録してくださいますよう、おねがいします。</p>
 
 <p>場所は駅前の秋葉原ダイビル 11Fです(大会議室1)。
 Google mapでは<a href=http://maps.google.com/maps/ms?msa=0&msid=114694549899339534298.00043980edf09d46b14cf>ここ</a>。</p>
 
 <br>
-<h2>2008年度財務諸表の閲覧</h2>
+<h2>2009年度財務諸表の閲覧</h2>
 {% if user.is_authenticated %}
 <p>
+2009年度財務諸表は準備中です。  
 2008年度財務諸表は<a href="accounting/2008/bs_pl_cf/">こちら</a>。
 </p>
 {% else %}