Expose default email address, phone number when editing a Person
This commit is contained in:
parent
ff3e83b1c5
commit
8ac0bb2334
|
@ -65,6 +65,12 @@
|
|||
</ul>
|
||||
</b-field>
|
||||
|
||||
<b-field horizontal label="Address"
|
||||
v-for="address in customer.addresses"
|
||||
:key="address.uuid">
|
||||
{{ address.display }}
|
||||
</b-field>
|
||||
|
||||
</div>
|
||||
<div class="buttons" style="align-items: start;">
|
||||
${self.render_customer_panel_buttons(customer)}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2019 Lance Edgar
|
||||
# Copyright © 2010-2020 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -263,14 +263,6 @@ class CustomersView(MasterView):
|
|||
if query.count():
|
||||
raise colander.Invalid(node, "Customer ID must be unique")
|
||||
|
||||
def render_default_email(self, customer, field):
|
||||
if customer.emails:
|
||||
return customer.emails[0].address
|
||||
|
||||
def render_default_phone(self, customer, field):
|
||||
if customer.phones:
|
||||
return customer.phones[0].number
|
||||
|
||||
def render_default_address(self, customer, field):
|
||||
if customer.addresses:
|
||||
return six.text_type(customer.addresses[0])
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2019 Lance Edgar
|
||||
# Copyright © 2010-2020 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -847,6 +847,20 @@ class MasterView(View):
|
|||
'importer_host_title': importer_host_title,
|
||||
})
|
||||
|
||||
def render_default_phone(self, obj, field):
|
||||
"""
|
||||
Render the "default" (first) phone number for the given contact.
|
||||
"""
|
||||
if obj.phones:
|
||||
return obj.phones[0].number
|
||||
|
||||
def render_default_email(self, obj, field):
|
||||
"""
|
||||
Render the "default" (first) email address for the given contact.
|
||||
"""
|
||||
if obj.emails:
|
||||
return obj.emails[0].address
|
||||
|
||||
def render_product_key_value(self, obj):
|
||||
"""
|
||||
Render the "canonical" product key value for the given object.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2019 Lance Edgar
|
||||
# Copyright © 2010-2020 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -52,8 +52,14 @@ class PeopleView(MasterView):
|
|||
has_versions = True
|
||||
supports_mobile = True
|
||||
bulk_deletable = True
|
||||
is_contact = True
|
||||
manage_notes_from_profile_view = False
|
||||
|
||||
labels = {
|
||||
'default_phone': "Phone Number",
|
||||
'default_email': "Email Address",
|
||||
}
|
||||
|
||||
grid_columns = [
|
||||
'display_name',
|
||||
'first_name',
|
||||
|
@ -67,8 +73,8 @@ class PeopleView(MasterView):
|
|||
'middle_name',
|
||||
'last_name',
|
||||
'display_name',
|
||||
'phone',
|
||||
'email',
|
||||
'default_phone',
|
||||
'default_email',
|
||||
'address',
|
||||
'employee',
|
||||
'customers',
|
||||
|
@ -197,15 +203,26 @@ class PeopleView(MasterView):
|
|||
|
||||
def configure_common_form(self, f):
|
||||
super(PeopleView, self).configure_common_form(f)
|
||||
person = f.model_instance
|
||||
|
||||
f.set_label('display_name', "Full Name")
|
||||
|
||||
# TODO: should remove this?
|
||||
f.set_readonly('phone')
|
||||
f.set_label('phone', "Phone Number")
|
||||
|
||||
f.set_renderer('default_phone', self.render_default_phone)
|
||||
if not self.creating and person.phones:
|
||||
f.set_default('default_phone', person.phones[0].number)
|
||||
|
||||
# TODO: should remove this?
|
||||
f.set_readonly('email')
|
||||
f.set_label('email', "Email Address")
|
||||
|
||||
f.set_renderer('default_email', self.render_default_email)
|
||||
if not self.creating and person.emails:
|
||||
f.set_default('default_email', person.emails[0].address)
|
||||
|
||||
f.set_readonly('address')
|
||||
f.set_label('address', "Mailing Address")
|
||||
|
||||
|
@ -319,6 +336,17 @@ class PeopleView(MasterView):
|
|||
'view_profile_url': self.get_action_url('view_profile', person),
|
||||
}
|
||||
|
||||
def get_context_address(self, address):
|
||||
return {
|
||||
'uuid': address.uuid,
|
||||
'street': address.street,
|
||||
'street2': address.street2,
|
||||
'city': address.city,
|
||||
'state': address.state,
|
||||
'zipcode': address.zipcode,
|
||||
'display': six.text_type(address),
|
||||
}
|
||||
|
||||
def get_context_customers(self, person):
|
||||
data = []
|
||||
for cp in person._customers:
|
||||
|
@ -333,6 +361,8 @@ class PeopleView(MasterView):
|
|||
uuid=customer.uuid),
|
||||
'people': [self.get_context_person(p)
|
||||
for p in customer.people],
|
||||
'addresses': [self.get_context_address(a)
|
||||
for a in customer.addresses],
|
||||
})
|
||||
return data
|
||||
|
||||
|
|
Loading…
Reference in a new issue