def test_get_practice_mode_apps(self):
     self.assertEqual(
         {app.get_id for app in get_practice_mode_configured_apps(self.domain)},
         {self.app2.get_id, self.app3.get_id}
     )
     self.assertEqual(
         {app.get_id for app in get_practice_mode_configured_apps(self.domain, 'user2')},
         {self.app3.get_id}
     )
Ejemplo n.º 2
0
 def test_get_practice_mode_apps(self):
     self.assertEqual(
         {app.get_id for app in get_practice_mode_configured_apps(self.domain)},
         {self.app2.get_id, self.app3.get_id}
     )
     self.assertEqual(
         {app.get_id for app in get_practice_mode_configured_apps(self.domain, 'user2')},
         {self.app3.get_id}
     )
Ejemplo n.º 3
0
def toggle_demo_mode(request, domain, user_id):
    user = CommCareUser.get_by_user_id(user_id, domain)
    demo_mode = request.POST.get('demo_mode', 'no')
    demo_mode = True if demo_mode == 'yes' else False

    edit_user_url = reverse(EditCommCareUserView.urlname, args=[domain, user_id])
    # handle bad POST param
    if user.is_demo_user == demo_mode:
        warning = _("User is already in Demo mode!") if user.is_demo_user else _("User is not in Demo mode!")
        messages.warning(request, warning)
        return HttpResponseRedirect(edit_user_url)

    if demo_mode:
        download = DownloadBase()
        res = turn_on_demo_mode_task.delay(user.get_id, domain)
        download.set_task(res)
        return HttpResponseRedirect(
            reverse(
                DemoRestoreStatusView.urlname,
                args=[domain, download.download_id, user_id]
            )
        )
    else:
        from corehq.apps.app_manager.views.utils import unset_practice_mode_configured_apps, \
            get_practice_mode_configured_apps
        # if the user is being used as practice user on any apps, check/ask for confirmation
        apps = get_practice_mode_configured_apps(domain)
        confirm_turn_off = True if (request.POST.get('confirm_turn_off', 'no')) == 'yes' else False
        if apps and not confirm_turn_off:
            return HttpResponseRedirect(reverse(ConfirmTurnOffDemoModeView.urlname, args=[domain, user_id]))

        turn_off_demo_mode(user)
        unset_practice_mode_configured_apps(domain, user.get_id)
        messages.success(request, _("Successfully turned off demo mode!"))
    return HttpResponseRedirect(edit_user_url)
Ejemplo n.º 4
0
def toggle_demo_mode(request, domain, user_id):
    user = CommCareUser.get_by_user_id(user_id, domain)
    demo_mode = request.POST.get('demo_mode', 'no')
    demo_mode = True if demo_mode == 'yes' else False

    edit_user_url = reverse(EditCommCareUserView.urlname, args=[domain, user_id])
    # handle bad POST param
    if user.is_demo_user == demo_mode:
        warning = _("User is already in Demo mode!") if user.is_demo_user else _("User is not in Demo mode!")
        messages.warning(request, warning)
        return HttpResponseRedirect(edit_user_url)

    if demo_mode:
        download = DownloadBase()
        res = turn_on_demo_mode_task.delay(user.get_id, domain)
        download.set_task(res)
        return HttpResponseRedirect(
            reverse(
                DemoRestoreStatusView.urlname,
                args=[domain, download.download_id, user_id]
            )
        )
    else:
        from corehq.apps.app_manager.views.utils import unset_practice_mode_configured_apps, \
            get_practice_mode_configured_apps
        # if the user is being used as practice user on any apps, check/ask for confirmation
        apps = get_practice_mode_configured_apps(domain)
        confirm_turn_off = True if (request.POST.get('confirm_turn_off', 'no')) == 'yes' else False
        if apps and not confirm_turn_off:
            return HttpResponseRedirect(reverse(ConfirmTurnOffDemoModeView.urlname, args=[domain, user_id]))

        turn_off_demo_mode(user)
        unset_practice_mode_configured_apps(domain, user.get_id)
        messages.success(request, _("Successfully turned off demo mode!"))
    return HttpResponseRedirect(edit_user_url)
Ejemplo n.º 5
0
 def page_context(self):
     from corehq.apps.app_manager.views.utils import get_practice_mode_configured_apps
     user_id = self.kwargs.pop('couch_user_id')
     user = CommCareUser.get_by_user_id(user_id, self.domain)
     practice_apps = get_practice_mode_configured_apps(self.domain, user_id)
     return {
         'commcare_user': user,
         'practice_apps': practice_apps,
     }
Ejemplo n.º 6
0
 def page_context(self):
     from corehq.apps.app_manager.views.utils import get_practice_mode_configured_apps
     user_id = self.kwargs.pop('couch_user_id')
     user = CommCareUser.get_by_user_id(user_id, self.domain)
     practice_apps = get_practice_mode_configured_apps(self.domain, user_id)
     return {
         'commcare_user': user,
         'practice_apps': practice_apps,
     }
Ejemplo n.º 7
0
 def response_practice_mobile_workers(project, new_plan_version):
     from corehq.apps.app_manager.views.utils import get_practice_mode_configured_apps
     apps = get_practice_mode_configured_apps(project.name)
     return _fmt_alert(
         ungettext(
             "You have %(num_apps)d application that has a practice mobile worker "
             "configured, it will be unset on downgrade.",
             "You have %(num_apps)d applications that has a practice mobile worker "
             "configured, it will be unset on downgrade.", len(apps)) % {
                 'num_apps': len(apps),
             },
         [
             mark_safe('<a href="%(url)s">%(title)s</a>') % {
                 'title': app['name'],
                 'url': reverse('view_app', args=[project.name, app['_id']])
             } for app in apps
         ],
     )
Ejemplo n.º 8
0
 def response_practice_mobile_workers(project, new_plan_version):
     from corehq.apps.app_manager.views.utils import get_practice_mode_configured_apps
     apps = get_practice_mode_configured_apps(project.name)
     if not apps:
         return None
     return _fmt_alert(
         ungettext(
             "You have %(num_apps)d application that has a practice mobile worker "
             "configured, it will be unset on downgrade.",
             "You have %(num_apps)d applications that has a practice mobile worker "
             "configured, it will be unset on downgrade.",
             len(apps)
         ) % {
             'num_apps': len(apps),
         },
         [mark_safe('<a href="%(url)s">%(title)s</a>') % {
             'title': app['name'],
             'url': reverse('view_app', args=[project.name, app['_id']])
         } for app in apps],
     )
Ejemplo n.º 9
0
 def response_practice_mobile_workers(project, new_plan_version):
     from corehq.apps.app_manager.views.utils import (
         get_practice_mode_configured_apps, )
     apps = get_practice_mode_configured_apps(project.name)
     if not apps:
         return None
     return _fmt_alert(
         ngettext(
             "You have %(num_apps)d application that has a practice mobile worker "
             "configured, it will be unset on downgrade.",
             "You have %(num_apps)d applications that has a practice mobile worker "
             "configured, it will be unset on downgrade.", len(apps)) % {
                 'num_apps': len(apps),
             },
         [
             format_html(
                 '<a href="{}">{}</a>',
                 reverse('view_app', args=[project.name, app['_id']]),
                 app['name']) for app in apps
         ],
     )