From f34d9abe5c5c69880d1cdd34b1ac270332efa786 Mon Sep 17 00:00:00 2001
From: frekk <frekk@ucc.asn.au>
Date: Sun, 30 Dec 2018 18:01:58 +0800
Subject: [PATCH] add membership home view

---
 gms/memberdb/forms.py            |  8 ++++++--
 gms/memberdb/templates/home.html | 25 +++++++++++++++++++++++++
 gms/memberdb/views.py            | 30 +++++++++++++++++++++++++++---
 3 files changed, 58 insertions(+), 5 deletions(-)
 create mode 100644 gms/memberdb/templates/home.html

diff --git a/gms/memberdb/forms.py b/gms/memberdb/forms.py
index 4aa5ee0..5f6657a 100644
--- a/gms/memberdb/forms.py
+++ b/gms/memberdb/forms.py
@@ -1,5 +1,7 @@
 from django import forms
 
+from .models import Member, Membership
+
 """
 Custom ModelForm class with some extra features
 """
@@ -11,5 +13,7 @@ class MyModelForm(forms.ModelForm):
         self.request = kwargs.pop("request")
         super().__init__(*args, **kwargs)
 
-
-
+class MemberHomeForm(MyModelForm):
+    class Meta:
+        model = Member
+        fields = ['display_name', 'email_address', 'phone_number']
diff --git a/gms/memberdb/templates/home.html b/gms/memberdb/templates/home.html
new file mode 100644
index 0000000..2336bfe
--- /dev/null
+++ b/gms/memberdb/templates/home.html
@@ -0,0 +1,25 @@
+{% extends "register.html" %}
+{% block title %}UCC Member Home{% endblock %}
+{% block content_title %}
+    <h1>Member home</h1>
+{% endblock %}
+
+{% block tips %}
+{% if not object %}
+<b>Your account exists already but no membership information has yet been recorded in this system.</b>
+<br>Please update/correct the details below as necessary.
+{% else %}
+Please confirm that the details below have not changed since your last registration or membership renewal.
+{% endif %}
+{% endblock %}
+
+{% block extra_preform %}
+<div class="form-row readonly">
+    <label for="id_username">Username:</label>
+    <span class="text" id="id_username">{{ request.user.username }}</span>
+</div>
+{% endblock %}
+
+{% block action_url %}{% url 'memberdb:renew' %}{% endblock %}
+
+{% block action_text %}Renew{% endblock %}
\ No newline at end of file
diff --git a/gms/memberdb/views.py b/gms/memberdb/views.py
index ddecabd..f704ae3 100644
--- a/gms/memberdb/views.py
+++ b/gms/memberdb/views.py
@@ -4,9 +4,10 @@ from django.shortcuts import render
 from django.urls import reverse
 from django.forms import ModelForm
 from django.views.generic.edit import UpdateView
-from django import forms
+from django.contrib.auth.mixins import LoginRequiredMixin
 
 from .models import Member, IncAssocMember, Membership
+from .forms import MemberHomeForm
 
 def index(request):
     member_list = Member.objects.all()
@@ -32,9 +33,32 @@ class MyUpdateView(UpdateView):
     object = None
 
     def get_object(self):
-        return self.object
+        if (not self.object is None):
+            return self.object
+        try:
+            sobj = super().get_object()
+            if (not sobj is None):
+                return sobj
+        finally:
+            return None
 
     def get_form_kwargs(self, **kwargs):
         kwargs.update(super().get_form_kwargs())
         kwargs.update({'request': self.request})
-        return kwargs
\ No newline at end of file
+        return kwargs
+
+class MemberHomeView(LoginRequiredMixin, MyUpdateView):
+    model = Member
+    template_name = 'home.html'
+    form_class = MemberHomeForm
+
+    def get_object(self):
+        return Member.objects.filter(username__exact=self.request.user.username).first()
+
+    def get_context_data(self):
+        d = super().get_context_data()
+        m = self.get_object()
+        d.update({
+            'memberships': m.memberships.all() if m is not None else None,
+        })
+        return d
-- 
GitLab