Add logic for editing default phone/email in base master view
and refactor customer, vendor views to use it
This commit is contained in:
parent
630ffe0cf8
commit
f2a60f683c
3 changed files with 82 additions and 35 deletions
61
tailbone/views/vendors/core.py
vendored
61
tailbone/views/vendors/core.py
vendored
|
@ -42,6 +42,12 @@ class VendorsView(MasterView):
|
|||
model_class = model.Vendor
|
||||
has_versions = True
|
||||
|
||||
labels = {
|
||||
'id': "ID",
|
||||
'default_phone': "Phone Number",
|
||||
'default_email': "Default Email",
|
||||
}
|
||||
|
||||
grid_columns = [
|
||||
'id',
|
||||
'name',
|
||||
|
@ -56,8 +62,9 @@ class VendorsView(MasterView):
|
|||
'special_discount',
|
||||
'lead_time_days',
|
||||
'order_interval_days',
|
||||
'phone',
|
||||
'email',
|
||||
'default_phone',
|
||||
'default_email',
|
||||
'orders_email',
|
||||
'contact',
|
||||
]
|
||||
|
||||
|
@ -68,7 +75,6 @@ class VendorsView(MasterView):
|
|||
g.filters['name'].default_verb = 'contains'
|
||||
g.set_sort_defaults('name')
|
||||
|
||||
g.set_label('id', "ID")
|
||||
g.set_label('phone', "Phone Number")
|
||||
g.set_label('email', "Email Address")
|
||||
|
||||
|
@ -77,22 +83,59 @@ class VendorsView(MasterView):
|
|||
|
||||
def configure_form(self, f):
|
||||
super(VendorsView, self).configure_form(f)
|
||||
|
||||
f.set_label('id', "ID")
|
||||
vendor = f.model_instance
|
||||
|
||||
f.set_label('lead_time_days', "Lead Time in Days")
|
||||
|
||||
f.set_label('order_interval', "Order Interval in Days")
|
||||
|
||||
f.set_readonly('phone')
|
||||
f.set_label('phone', "Phone Number")
|
||||
# default_phone
|
||||
f.set_renderer('default_phone', self.render_default_phone)
|
||||
if not self.creating and vendor.phones:
|
||||
f.set_default('default_phone', vendor.phones[0].number)
|
||||
|
||||
f.set_readonly('email')
|
||||
f.set_label('email', "Email Address")
|
||||
# default_email
|
||||
f.set_renderer('default_email', self.render_default_email)
|
||||
if not self.creating and vendor.emails:
|
||||
f.set_default('default_email', vendor.emails[0].address)
|
||||
|
||||
# orders_email
|
||||
f.set_renderer('orders_email', self.render_orders_email)
|
||||
if not self.creating and vendor.emails:
|
||||
f.set_default('orders_email', vendor.get_email_address(type_='Orders') or '')
|
||||
|
||||
f.set_readonly('contact')
|
||||
f.set_renderer('contact', self.render_contact)
|
||||
|
||||
def objectify(self, form, data):
|
||||
vendor = super(VendorsView, self).objectify(form, data)
|
||||
vendor = self.objectify_contact(vendor, data)
|
||||
|
||||
if 'orders_email' in data:
|
||||
address = data['orders_email']
|
||||
email = vendor.get_email(type_='Orders')
|
||||
if address:
|
||||
if email:
|
||||
if email.address != address:
|
||||
email.address = address
|
||||
else:
|
||||
vendor.add_email_address(address, type='Orders')
|
||||
elif email:
|
||||
vendor.emails.remove(email)
|
||||
|
||||
return vendor
|
||||
|
||||
def render_default_email(self, vendor, field):
|
||||
if vendor.emails:
|
||||
return vendor.emails[0].address
|
||||
|
||||
def render_orders_email(self, vendor, field):
|
||||
return vendor.get_email_address(type_='Orders')
|
||||
|
||||
def render_default_phone(self, vendor, field):
|
||||
if vendor.phones:
|
||||
return vendor.phones[0].number
|
||||
|
||||
def render_contact(self, vendor, field):
|
||||
person = vendor.contact
|
||||
if not person:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue