Make sure all contact info is "touched" when touching person record
This commit is contained in:
parent
12b0ac1037
commit
d72f61a98d
|
@ -1154,27 +1154,20 @@ class MasterView(View):
|
|||
alternative.
|
||||
"""
|
||||
obj = self.get_instance()
|
||||
change = self.touch_instance(obj)
|
||||
self.touch_instance(obj)
|
||||
self.request.session.flash("{} has been touched: {}".format(
|
||||
self.get_model_title(), self.get_instance_title(obj)))
|
||||
return self.redirect(self.get_action_url('view', obj))
|
||||
|
||||
def touch_instance(self, obj):
|
||||
"""
|
||||
Perform actual "touch" logic for the given object. Must return the
|
||||
:class:`rattail:~rattail.db.model.Change` record involved.
|
||||
|
||||
.. todo::
|
||||
Why should this return the change object? We're not using it for
|
||||
anything (yet?) but some views may generate multiple changes when
|
||||
touching the primary object, i.e. touch related objects also.
|
||||
Perform actual "touch" logic for the given object.
|
||||
"""
|
||||
change = model.Change()
|
||||
change.class_name = obj.__class__.__name__
|
||||
change.instance_uuid = obj.uuid
|
||||
change = self.Session.merge(change)
|
||||
change.deleted = False
|
||||
return change
|
||||
|
||||
def versions(self):
|
||||
"""
|
||||
|
|
|
@ -146,6 +146,35 @@ class PeopleView(MasterView):
|
|||
return not bool(person.user and person.user.username == 'chuck')
|
||||
return True
|
||||
|
||||
def touch_instance(self, person):
|
||||
"""
|
||||
Supplements the default logic as follows:
|
||||
|
||||
In addition to "touching" the person proper, we also "touch" each
|
||||
contact info record associated with them.
|
||||
"""
|
||||
# touch person, as per usual
|
||||
super(PeopleView, self).touch_instance(person)
|
||||
|
||||
def touch(obj):
|
||||
change = model.Change()
|
||||
change.class_name = obj.__class__.__name__
|
||||
change.instance_uuid = obj.uuid
|
||||
change.deleted = False
|
||||
self.Session.add(change)
|
||||
|
||||
# phone numbers
|
||||
for phone in person.phones:
|
||||
touch(phone)
|
||||
|
||||
# email addresses
|
||||
for email in person.emails:
|
||||
touch(email)
|
||||
|
||||
# mailing addresses
|
||||
for address in person.addresses:
|
||||
touch(address)
|
||||
|
||||
def configure_common_form(self, f):
|
||||
super(PeopleView, self).configure_common_form(f)
|
||||
|
||||
|
|
Loading…
Reference in a new issue