示例#1
0
def set_toggle(request, toggle_slug):
    static_toggle = find_static_toggle(toggle_slug)
    if not static_toggle:
        raise Http404()

    item = request.POST['item']
    enabled = request.POST['enabled'] == 'true'
    namespace = request.POST['namespace']
    _set_toggle(request.user.username, static_toggle, item, namespace, enabled)

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")
 def handle(self, add_on_name, *args, **options):
     add_to_toggle = options.get('add_to_toggle')
     if add_to_toggle:
         add_to_toggle = find_static_toggle(add_to_toggle)
         if not add_to_toggle:
             raise CommandError('Toggle %s not found.' % add_to_toggle)
     with open("apps_with_feature_%s.csv" % add_on_name,
               "w",
               encoding='utf-8') as csvfile:
         writer = csv.DictWriter(csvfile,
                                 fieldnames=[
                                     'domain', 'application_id', 'app_name',
                                     'all_add_ons_enabled', 'status'
                                 ])
         writer.writeheader()
         for domain_obj in self._iter_domains(options):
             application_ids = get_app_ids_in_domain(domain_obj.name)
             for application_id in application_ids:
                 application = Application.get(application_id)
                 if not application.is_remote_app():
                     all_add_ons_enabled = toggles.ENABLE_ALL_ADD_ONS.enabled(
                         domain_obj.name)
                     if add_on_name in application.add_ons or all_add_ons_enabled:
                         try:
                             writer.writerow({
                                 'domain':
                                 domain_obj.name.encode('utf-8'),
                                 'application_id':
                                 application.get_id,
                                 'app_name':
                                 application.name.encode('utf-8'),
                                 'all_add_ons_enabled':
                                 all_add_ons_enabled,
                                 'status':
                                 application.add_ons.get(add_on_name)
                             })
                             if add_to_toggle:
                                 add_to_toggle.set(domain_obj.name, True,
                                                   NAMESPACE_DOMAIN)
                         except UnicodeEncodeError:
                             print('encode error')
                             print({
                                 'domain':
                                 domain_obj.name,
                                 'application_id':
                                 application.get_id,
                                 'app_name':
                                 application.name,
                                 'all_add_ons_enabled':
                                 all_add_ons_enabled,
                                 'status':
                                 application.add_ons.get(add_on_name)
                             })
示例#3
0
def set_toggle(request, toggle_slug):
    static_toggle = find_static_toggle(toggle_slug)
    if not static_toggle:
        raise Http404()

    item = request.POST['item']
    enabled = request.POST['enabled'] == 'true'
    namespace = request.POST['namespace']
    static_toggle.set(item=item, enabled=enabled, namespace=namespace)

    if enabled:
        _notify_on_change(static_toggle, [item], request.user.username)

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")
示例#4
0
def set_toggle(request, toggle_slug):
    static_toggle = find_static_toggle(toggle_slug)
    if not static_toggle:
        raise Http404()

    item = request.POST['item']
    enabled = request.POST['enabled'] == 'true'
    namespace = request.POST['namespace']
    static_toggle.set(item=item, enabled=enabled, namespace=namespace)

    if enabled:
        _notify_on_change(static_toggle, [item], request.user.username)

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")
示例#5
0
def set_toggle(request, toggle_slug):
    static_toggle = find_static_toggle(toggle_slug)
    if not static_toggle:
        raise Http404()

    item = request.POST['item']
    enabled = request.POST['enabled'] == 'true'
    namespace = request.POST['namespace']
    if static_toggle.set(item=item, enabled=enabled, namespace=namespace):
        action = ToggleAudit.ACTION_ADD if enabled else ToggleAudit.ACTION_REMOVE
        ToggleAudit.objects.log_toggle_action(
            toggle_slug, request.user.username, [namespaced_item(item, namespace)], action
        )

    if enabled:
        _notify_on_change(static_toggle, [item], request.user.username)

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")
示例#6
0
def toggle_app_manager_v2(request):
    slug = "app_manager_v2"
    on_or_off = request.POST.get('on_or_off', 'on')
    try:
        toggle = Toggle.get(slug)
    except ResourceNotFound:
        toggle = Toggle(slug=slug)

    enable = on_or_off == "on"
    enabled = request.user.username in toggle.enabled_users
    if enable != enabled:
        changed_entries = [request.user.username]
        if enable:
            toggle.enabled_users.append(request.user.username)
        else:
            toggle.enabled_users.remove(request.user.username)
        toggle.save()
        _call_save_fn_and_clear_cache(slug, changed_entries, toggle.enabled_users, find_static_toggle(slug))

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")
 def handle(self, add_on_name, *args, **options):
     add_to_toggle = options.get('add_to_toggle')
     if add_to_toggle:
         add_to_toggle = find_static_toggle(add_to_toggle)
         if not add_to_toggle:
             raise CommandError('Toggle %s not found.' % add_to_toggle)
     with open("apps_with_feature_%s.csv" % add_on_name, "w", encoding='utf-8') as csvfile:
         writer = csv.DictWriter(csvfile,
                                 fieldnames=[
                                     'domain', 'application_id', 'app_name',
                                     'all_add_ons_enabled', 'status'
                                 ])
         writer.writeheader()
         for domain_obj in self._iter_domains(options):
             application_ids = get_app_ids_in_domain(domain_obj.name)
             for application_id in application_ids:
                 application = Application.get(application_id)
                 if not application.is_remote_app():
                     all_add_ons_enabled = toggles.ENABLE_ALL_ADD_ONS.enabled(domain_obj.name)
                     if add_on_name in application.add_ons or all_add_ons_enabled:
                         try:
                             writer.writerow({
                                 'domain': domain_obj.name.encode('utf-8'),
                                 'application_id': application.get_id,
                                 'app_name': application.name.encode('utf-8'),
                                 'all_add_ons_enabled': all_add_ons_enabled,
                                 'status': application.add_ons.get(add_on_name)
                             })
                             if add_to_toggle:
                                 add_to_toggle.set(domain_obj.name, True, NAMESPACE_DOMAIN)
                         except UnicodeEncodeError:
                             print('encode error')
                             print({
                                 'domain': domain_obj.name,
                                 'application_id': application.get_id,
                                 'app_name': application.name,
                                 'all_add_ons_enabled': all_add_ons_enabled,
                                 'status': application.add_ons.get(add_on_name)
                             })
示例#8
0
def toggle_app_manager_v2(request):
    slug = "app_manager_v2"
    on_or_off = request.POST.get('on_or_off', 'on')
    try:
        toggle = Toggle.get(slug)
    except ResourceNotFound:
        toggle = Toggle(slug=slug)

    enable = on_or_off == "on"
    enabled = request.user.username in toggle.enabled_users
    if enable != enabled:
        changed_entries = [request.user.username]
        if enable:
            toggle.enabled_users.append(request.user.username)
        else:
            toggle.enabled_users.remove(request.user.username)
        toggle.save()
        _call_save_fn_and_clear_cache(slug, changed_entries,
                                      toggle.enabled_users,
                                      find_static_toggle(slug))

    return HttpResponse(json.dumps({'success': True}),
                        content_type="application/json")
示例#9
0
 def static_toggle(self):
     """
     Returns the corresponding toggle definition from corehq/toggles.py
     """
     return find_static_toggle(self.toggle_slug)
示例#10
0
 def static_toggle(self):
     """
     Returns the corresponding toggle definition from corehq/toggles.py
     """
     return find_static_toggle(self.toggle_slug)
示例#11
0
def _all_domains_have_toggle_enabled(domains, toggle_slug):
    toggle = find_static_toggle(toggle_slug)
    toggle_enabled = {toggle.enabled(domain) for domain in domains}
    return len(toggle_enabled) == 1 and True in toggle_enabled
示例#12
0
def _get_domains_with_toggle_enabled(domains, toggle_slug):
    toggle = find_static_toggle(toggle_slug)
    return list(filter(toggle.enabled, domains))