Пример #1
0
    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')
Пример #2
0
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)
Пример #3
0
 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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
def check_intervention_past_start():
    run_on_all_tenants(send_intervention_past_start_notification)
Пример #9
0
def check_intervention_draft_status():
    run_on_all_tenants(send_intervention_draft_notification)
Пример #10
0
def check_pca_missing():
    run_on_all_tenants(send_pca_missing_notifications)
Пример #11
0
def check_pca_required():
    run_on_all_tenants(send_pca_required_notifications)
Пример #12
0
 def handle(self, *args, **options):
     self.all_flag = options["all"]
     run_on_all_tenants(self.run)
Пример #13
0
 def handle(self, *args, **options):
     self.all_flag = options["all"]
     run_on_all_tenants(self.run)
Пример #14
0
 def handle(self, *args, **options):
     run_on_all_tenants(copy_t2f_travel_attachments, **options)
Пример #15
0
 def handle(self, *args, **options):
     run_on_all_tenants(self.run)