def handle(self, *args, **options): logger.info('Command started') countries = Country.objects.exclude(name__iexact='global') if options['schema']: country = countries.get(schema_name=options['schema']) connection.set_tenant(country) self.run() else: run_on_all_tenants(self.run) logger.info('Command finished')
def copy_all_attachments(**kwargs): copy_commands = [ copy_attached_agreements, copy_core_values_assessments, copy_reports, copy_signed_amendments, copy_interventions, copy_intervention_amendments, copy_intervention_attachments, copy_t2f_travel_attachments, ] for cmd in copy_commands: run_on_all_tenants(cmd, **kwargs)
def check_all(self): """ Check all objects for issues. """ def _inner(): for model_instance, metadata in self.get_objects_to_check(): try: self.run_check(model_instance, metadata) except IssueFoundException as e: issue = FlaggedIssue.get_or_new(content_object=model_instance, issue_id=self.check_id) issue.message = str(e) issue.save() # todo: is it always valid to run all checks against all tenants? run_on_all_tenants(_inner)
def recheck_all_open_issues(): """ Recheck all unresolved FlaggedIssue objects for resolution. """ def _check(): for issue in FlaggedIssue.objects.exclude(issue_status=ISSUE_STATUS_RESOLVED): try: issue.recheck() except IssueCheckNotFoundException as e: # todo: should this fail hard? logging.error(str(e)) # todo: is it always valid to run all checks against all tenants? run_on_all_tenants(_check)
def recheck_all_open_issues(): """ Recheck all unresolved FlaggedIssue objects for resolution. """ def _check(): for issue in FlaggedIssue.objects.exclude( issue_status=ISSUE_STATUS_RESOLVED): try: issue.recheck() except IssueCheckNotFoundException as e: # todo: should this fail hard? logging.error(str(e)) # todo: is it always valid to run all checks against all tenants? run_on_all_tenants(_check)
def check_all(self): """ Check all objects for issues. """ def _inner(): for model_instance, metadata in self.get_objects_to_check(): try: self.run_check(model_instance, metadata) except IssueFoundException as e: issue = FlaggedIssue.get_or_new( content_object=model_instance, issue_id=self.check_id) issue.message = str(e) issue.save() # todo: is it always valid to run all checks against all tenants? run_on_all_tenants(_inner)
def delete(self, *args, **kwargs): def clear_relations(obj=None): relations = [f for f in obj._meta.get_fields() if f.auto_created and not f.concrete] for relation in relations: if isinstance(relation, models.ManyToManyRel): # m2m relations should be unlinked relation.through.objects.filter(**{relation.field.m2m_reverse_field_name(): obj}).delete() elif isinstance(relation, models.ManyToOneRel) and relation.on_delete == models.CASCADE: # related objects should be removed in loop to perform correct delete behaviour for child for related_obj in getattr(obj, relation.related_name).all(): related_obj.delete() elif isinstance(relation, models.OneToOneRel) and relation.on_delete == models.CASCADE: if hasattr(obj, relation.related_name): getattr(obj, relation.related_name).delete() run_on_all_tenants(clear_relations, obj=self) super().delete(*args, **kwargs)
def check_intervention_past_start(): run_on_all_tenants(send_intervention_past_start_notification)
def check_intervention_draft_status(): run_on_all_tenants(send_intervention_draft_notification)
def check_pca_missing(): run_on_all_tenants(send_pca_missing_notifications)
def check_pca_required(): run_on_all_tenants(send_pca_required_notifications)
def handle(self, *args, **options): self.all_flag = options["all"] run_on_all_tenants(self.run)
def handle(self, *args, **options): self.all_flag = options["all"] run_on_all_tenants(self.run)
def handle(self, *args, **options): run_on_all_tenants(copy_t2f_travel_attachments, **options)
def handle(self, *args, **options): run_on_all_tenants(self.run)