コード例 #1
0
def any_migrations_in_progress(domain, strict=False):
    """Returns True if there are any migrations in progress where modifications to
    project forms and cases should be prevented
    """
    return DATA_MIGRATION.enabled(domain) or DomainMigrationProgress.objects.filter(
        domain=domain, migration_status=MigrationStatus.IN_PROGRESS
    ).exists()
コード例 #2
0
def check_data_migration_in_progress(domain, last_migration_check_time):
    utcnow = datetime.utcnow()
    if last_migration_check_time is None or (
            utcnow - last_migration_check_time) > timedelta(minutes=1):
        return DATA_MIGRATION.enabled(domain), utcnow

    return False, last_migration_check_time
コード例 #3
0
ファイル: run_sms_queue.py プロジェクト: xbryanc/commcare-hq
 def get_items_to_be_processed(self, utcnow):
     for sms in QueuedSMS.get_queued_sms():
         if DATA_MIGRATION.enabled(sms.domain):
             continue
         yield {
             'id': sms.pk,
             'key': json_format_datetime(sms.datetime_to_process),
         }
コード例 #4
0
 def wrapped_view(request, domain, *args, **kwargs):
     if DATA_MIGRATION.enabled(domain):
         auth_logger.info("Request rejected domain=%s reason=%s request=%s",
                          domain, "flag:migration", request.path)
         return HttpResponse('Service Temporarily Unavailable',
                             content_type='text/plain',
                             status=503)
     return view_func(request, domain, *args, **kwargs)
コード例 #5
0
def run_case_update_rules(now=None):
    domains = (AutomaticUpdateRule.objects.filter(
        active=True,
        deleted=False).values_list('domain',
                                   flat=True).distinct().order_by('domain'))
    for domain in domains:
        if not DATA_MIGRATION.enabled(domain):
            run_case_update_rules_for_domain.delay(domain, now)
コード例 #6
0
 def get_items_to_be_processed(self, utcnow):
     for sms in QueuedSMS.get_queued_sms():
         if DATA_MIGRATION.enabled(sms.domain):
             continue
         yield {
             'id': sms.pk,
             'key': json_format_datetime(sms.datetime_to_process),
         }
コード例 #7
0
def run_case_update_rules(now=None):
    domains = (AutomaticUpdateRule
               .objects
               .filter(active=True, deleted=False)
               .values_list('domain', flat=True)
               .distinct()
               .order_by('domain'))
    for domain in domains:
        if not DATA_MIGRATION.enabled(domain):
            run_case_update_rules_for_domain.delay(domain, now)
コード例 #8
0
 def process_view(self, request, view_func, view_args, view_kwargs):
     if hasattr(request, 'domain') and hasattr(request, 'couch_user'):
         if getattr(view_func, 'domain_migration_handled', False):
             return None
         if DATA_MIGRATION.enabled(request.domain):
             return TemplateResponse(
                 request=request,
                 template='domain/data_migration_in_progress.html',
                 status=503,
             )
     return None
コード例 #9
0
ファイル: middleware.py プロジェクト: twymer/commcare-hq
 def process_view(self, request, view_func, view_args, view_kwargs):
     if hasattr(request, 'domain') and hasattr(request, 'couch_user'):
         if getattr(view_func, 'domain_migration_handled', False):
             return None
         if DATA_MIGRATION.enabled(request.domain):
             return TemplateResponse(
                 request=request,
                 template='domain/data_migration_in_progress.html',
                 status=503,
                 context={'domain': request.domain})
     return None
コード例 #10
0
ファイル: api.py プロジェクト: dimagi/commcare-hq
def any_migrations_in_progress(domain, strict=False):
    """ Checks if any migrations at all are in progress for the domain

    Returns True if there are any migrations in progress where modifications to
    project forms and cases should be prevented.

    This does not include migrations that are marked as dry runs.
    """
    return DATA_MIGRATION.enabled(domain) or DomainMigrationProgress.objects.filter(
        domain=domain, migration_status=MigrationStatus.IN_PROGRESS
    ).exists()
コード例 #11
0
ファイル: api.py プロジェクト: solleks/commcare-hq
def any_migrations_in_progress(domain, strict=False):
    """ Checks if any migrations at all are in progress for the domain

    Returns True if there are any migrations in progress where modifications to
    project forms and cases should be prevented.

    This does not include migrations that are marked as dry runs.
    """
    return DATA_MIGRATION.enabled(
        domain) or DomainMigrationProgress.objects.filter(
            domain=domain,
            migration_status=MigrationStatus.IN_PROGRESS).exists()
コード例 #12
0
 def wrapped_view(request, domain, *args, **kwargs):
     if DATA_MIGRATION.enabled(domain):
         return HttpResponse('Service Temporarily Unavailable',
                             content_type='text/plain',
                             status=503)
     return view_func(request, domain, *args, **kwargs)
コード例 #13
0
ファイル: decorators.py プロジェクト: dimagi/commcare-hq
 def wrapped_view(request, domain, *args, **kwargs):
     if DATA_MIGRATION.enabled(domain):
         return HttpResponse('Service Temporarily Unavailable',
                             content_type='text/plain', status=503)
     return view_func(request, domain, *args, **kwargs)
コード例 #14
0
 def enqueue_item(self, _id):
     domain = get_reminder_domain(_id)
     if DATA_MIGRATION.enabled(domain):
         return
     fire_reminder.delay(_id, domain)
コード例 #15
0
 def enqueue_item(self, _id):
     domain = get_reminder_domain(_id)
     if DATA_MIGRATION.enabled(domain):
         return
     fire_reminder.delay(_id, domain)
コード例 #16
0
def skip_domain(domain):
    return DATA_MIGRATION.enabled(domain) or any_migrations_in_progress(domain)