Add/improve various display of Member data
This commit is contained in:
parent
8ac0bb2334
commit
970b5871e5
5 changed files with 142 additions and 2 deletions
|
@ -92,6 +92,7 @@ class CustomersView(MasterView):
|
|||
'active_in_pos_sticky',
|
||||
'people',
|
||||
'groups',
|
||||
'members',
|
||||
]
|
||||
|
||||
mobile_form_fields = [
|
||||
|
@ -250,6 +251,18 @@ class CustomersView(MasterView):
|
|||
f.set_renderer('groups', self.render_groups)
|
||||
f.set_readonly('groups')
|
||||
|
||||
def configure_form(self, f):
|
||||
super(CustomersView, self).configure_form(f)
|
||||
customer = f.model_instance
|
||||
permission_prefix = self.get_permission_prefix()
|
||||
|
||||
# members
|
||||
if self.creating:
|
||||
f.remove_field('members')
|
||||
else:
|
||||
f.set_renderer('members', self.render_members)
|
||||
f.set_readonly('members')
|
||||
|
||||
def template_kwargs_view(self, **kwargs):
|
||||
kwargs['show_profiles_helper'] = self.show_profiles_helper
|
||||
return kwargs
|
||||
|
@ -336,6 +349,17 @@ class CustomersView(MasterView):
|
|||
items.append(HTML.tag('li', tags.link_to(text, url)))
|
||||
return HTML.tag('ul', HTML.literal('').join(items))
|
||||
|
||||
def render_members(self, customer, field):
|
||||
members = customer.members
|
||||
if not members:
|
||||
return ""
|
||||
items = []
|
||||
for member in members:
|
||||
text = six.text_type(member)
|
||||
url = self.request.route_url('members.view', uuid=member.uuid)
|
||||
items.append(HTML.tag('li', tags.link_to(text, url)))
|
||||
return HTML.tag('ul', HTML.literal('').join(items))
|
||||
|
||||
def get_version_child_classes(self):
|
||||
return [
|
||||
(model.CustomerPhoneNumber, 'parent_uuid'),
|
||||
|
|
|
@ -113,7 +113,7 @@ class MemberView(MasterView):
|
|||
def grid_extra_class(self, member, i):
|
||||
if not member.active:
|
||||
return 'warning'
|
||||
if not member.equity_current:
|
||||
if member.equity_current is False:
|
||||
return 'notice'
|
||||
|
||||
def configure_form(self, f):
|
||||
|
@ -158,7 +158,7 @@ class MemberView(MasterView):
|
|||
f.set_label('customer_uuid', "Customer")
|
||||
else:
|
||||
f.set_readonly('customer')
|
||||
# f.set_renderer('customer', self.render_customer)
|
||||
f.set_renderer('customer', self.render_customer)
|
||||
|
||||
# default_email
|
||||
f.set_renderer('default_email', self.render_default_email)
|
||||
|
|
|
@ -32,6 +32,7 @@ from sqlalchemy import orm
|
|||
|
||||
from rattail.db import model, api
|
||||
from rattail.time import localtime
|
||||
from rattail.util import OrderedDict
|
||||
|
||||
import colander
|
||||
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
|
||||
|
@ -316,6 +317,7 @@ class PeopleView(MasterView):
|
|||
'today': localtime(self.rattail_config).date(),
|
||||
'person_data': self.get_context_person(person),
|
||||
'customers_data': self.get_context_customers(person),
|
||||
'members_data': self.get_context_members(person),
|
||||
'employee': employee,
|
||||
'employee_view_url': self.request.route_url('employees.view', uuid=employee.uuid) if employee else None,
|
||||
'employee_history': employee.get_current_history() if employee else None,
|
||||
|
@ -366,6 +368,30 @@ class PeopleView(MasterView):
|
|||
})
|
||||
return data
|
||||
|
||||
def get_context_members(self, person):
|
||||
data = OrderedDict()
|
||||
|
||||
for member in person.members:
|
||||
data[member.uuid] = self.get_context_member(member)
|
||||
|
||||
for customer in person.customers:
|
||||
for member in customer.members:
|
||||
if member.uuid not in data:
|
||||
data[member.uuid] = self.get_context_member(member)
|
||||
|
||||
return list(data.values())
|
||||
|
||||
def get_context_member(self, member):
|
||||
return {
|
||||
'uuid': member.uuid,
|
||||
'id': member.id,
|
||||
'active': member.active,
|
||||
'joined': six.text_type(member.joined) if member.joined else None,
|
||||
'withdrew': six.text_type(member.withdrew) if member.withdrew else None,
|
||||
'display': six.text_type(member),
|
||||
'view_url': self.request.route_url('members.view', uuid=member.uuid),
|
||||
}
|
||||
|
||||
def get_context_employee_history(self, employee):
|
||||
data = []
|
||||
if employee:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue