Tweak how customer/person relationships are displayed
expose just a little more to make it easier to track down a data issue i had
This commit is contained in:
parent
24a2c15850
commit
4aa91414a5
|
@ -35,7 +35,7 @@ from .common import (StrippedTextFieldRenderer, CodeTextAreaFieldRenderer, Autoc
|
||||||
|
|
||||||
from .files import FileFieldRenderer
|
from .files import FileFieldRenderer
|
||||||
|
|
||||||
from .people import PersonFieldRenderer, CustomerFieldRenderer
|
from .people import PersonFieldRenderer, PeopleFieldRenderer, CustomerFieldRenderer
|
||||||
from .users import UserFieldRenderer, PermissionsFieldRenderer
|
from .users import UserFieldRenderer, PermissionsFieldRenderer
|
||||||
from .employees import EmployeeFieldRenderer
|
from .employees import EmployeeFieldRenderer
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,8 @@ People Field Renderers
|
||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
import six
|
import six
|
||||||
from webhelpers.html import tags
|
import formalchemy as fa
|
||||||
|
from webhelpers.html import tags, HTML
|
||||||
|
|
||||||
from tailbone.forms.renderers.common import AutocompleteFieldRenderer
|
from tailbone.forms.renderers.common import AutocompleteFieldRenderer
|
||||||
|
|
||||||
|
@ -45,6 +46,23 @@ class PersonFieldRenderer(AutocompleteFieldRenderer):
|
||||||
return tags.link_to(person, self.request.route_url('people.view', uuid=person.uuid))
|
return tags.link_to(person, self.request.route_url('people.view', uuid=person.uuid))
|
||||||
|
|
||||||
|
|
||||||
|
class PeopleFieldRenderer(fa.FieldRenderer):
|
||||||
|
"""
|
||||||
|
Renderer for "people" list relationship
|
||||||
|
"""
|
||||||
|
|
||||||
|
def render_readonly(self, **kwargs):
|
||||||
|
html = ''
|
||||||
|
people = self.raw_value
|
||||||
|
if not people:
|
||||||
|
return html
|
||||||
|
for person in people:
|
||||||
|
link = tags.link_to(person, self.request.route_url('people.view', uuid=person.uuid))
|
||||||
|
html += HTML.tag('li', c=link)
|
||||||
|
html = HTML.tag('ul', c=html)
|
||||||
|
return html
|
||||||
|
|
||||||
|
|
||||||
class CustomerFieldRenderer(AutocompleteFieldRenderer):
|
class CustomerFieldRenderer(AutocompleteFieldRenderer):
|
||||||
"""
|
"""
|
||||||
Renderer for :class:`rattail.db.model.Customer` instance fields.
|
Renderer for :class:`rattail.db.model.Customer` instance fields.
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8; -*-
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2015 Lance Edgar
|
# Copyright © 2010-2017 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -121,6 +121,7 @@ class CustomersView(MasterView):
|
||||||
fs.append(forms.fields.DefaultPhoneField('default_phone', label="Phone Number"))
|
fs.append(forms.fields.DefaultPhoneField('default_phone', label="Phone Number"))
|
||||||
fs.append(forms.fields.DefaultEmailField('default_email', label="Email Address"))
|
fs.append(forms.fields.DefaultEmailField('default_email', label="Email Address"))
|
||||||
fs.email_preference.set(renderer=forms.EnumFieldRenderer(self.enum.EMAIL_PREFERENCE))
|
fs.email_preference.set(renderer=forms.EnumFieldRenderer(self.enum.EMAIL_PREFERENCE))
|
||||||
|
fs.append(forms.AssociationProxyField('people', renderer=forms.renderers.PeopleFieldRenderer))
|
||||||
|
|
||||||
def configure_fieldset(self, fs):
|
def configure_fieldset(self, fs):
|
||||||
fs.configure(
|
fs.configure(
|
||||||
|
@ -132,6 +133,7 @@ class CustomersView(MasterView):
|
||||||
# fs.email.label("Email Address").readonly(),
|
# fs.email.label("Email Address").readonly(),
|
||||||
fs.default_email,
|
fs.default_email,
|
||||||
fs.email_preference,
|
fs.email_preference,
|
||||||
|
fs.people,
|
||||||
])
|
])
|
||||||
|
|
||||||
def configure_mobile_fieldset(self, fs):
|
def configure_mobile_fieldset(self, fs):
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8; -*-
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2016 Lance Edgar
|
# Copyright © 2010-2017 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -32,6 +32,7 @@ import formalchemy as fa
|
||||||
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
|
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
|
||||||
from webhelpers.html import HTML, tags
|
from webhelpers.html import HTML, tags
|
||||||
|
|
||||||
|
from tailbone import forms
|
||||||
from tailbone.views import MasterView, AutocompleteView
|
from tailbone.views import MasterView, AutocompleteView
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
|
@ -74,6 +75,9 @@ class PeopleView(MasterView):
|
||||||
g.filters['phone'] = g.make_filter('phone', model.PersonPhoneNumber.number,
|
g.filters['phone'] = g.make_filter('phone', model.PersonPhoneNumber.number,
|
||||||
label="Phone Number")
|
label="Phone Number")
|
||||||
|
|
||||||
|
g.joiners['customer_id'] = lambda q: q.outerjoin(model.CustomerPerson).outerjoin(model.Customer)
|
||||||
|
g.filters['customer_id'] = g.make_filter('customer_id', model.Customer.id, label="Customer ID")
|
||||||
|
|
||||||
g.filters['first_name'].default_active = True
|
g.filters['first_name'].default_active = True
|
||||||
g.filters['first_name'].default_verb = 'contains'
|
g.filters['first_name'].default_verb = 'contains'
|
||||||
|
|
||||||
|
@ -122,6 +126,7 @@ class PeopleView(MasterView):
|
||||||
fs.phone.set(label="Phone Number", readonly=True)
|
fs.phone.set(label="Phone Number", readonly=True)
|
||||||
fs.email.set(label="Email Address", readonly=True)
|
fs.email.set(label="Email Address", readonly=True)
|
||||||
fs.address.set(label="Mailing Address", readonly=True)
|
fs.address.set(label="Mailing Address", readonly=True)
|
||||||
|
fs.employee.set(renderer=forms.renderers.EmployeeFieldRenderer, attrs={'hyperlink': True})
|
||||||
fs._customers.set(renderer=CustomersFieldRenderer, readonly=True)
|
fs._customers.set(renderer=CustomersFieldRenderer, readonly=True)
|
||||||
|
|
||||||
def configure_fieldset(self, fs):
|
def configure_fieldset(self, fs):
|
||||||
|
@ -134,6 +139,7 @@ class PeopleView(MasterView):
|
||||||
fs.phone,
|
fs.phone,
|
||||||
fs.email,
|
fs.email,
|
||||||
fs.address,
|
fs.address,
|
||||||
|
fs.employee,
|
||||||
fs._customers,
|
fs._customers,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue