def _fire_post_save_signals(instance, cases): from casexml.apps.case.signals import case_post_save error_message = "Error occurred during form submission post save (%s)" error_details = {'domain': instance.domain, 'form_id': instance.form_id} results = successful_form_received.send_robust(None, xform=instance) has_errors = log_signal_errors(results, error_message, error_details) for case in cases: results = case_post_save.send_robust(case.__class__, case=case) has_errors |= log_signal_errors(results, error_message, error_details) if has_errors: raise PostSaveError
def process_signals(self, instance): feedback = successful_form_received.send_robust(None, xform=instance) errors = [] for func, resp in feedback: if resp and isinstance(resp, Exception): error_message = unicode(resp) logging.error(( u"Receiver app: problem sending " u"post-save signal %s for xform %s: %s: %s" ) % (func, instance.form_id, type(resp).__name__, error_message)) errors.append(error_message) if errors: self.interface.xformerror_from_xform_instance(instance, ", ".join(errors)) self.formdb.update_form_problem_and_state(instance) return errors