Esempio n. 1
0
        def wrapped(request, *args, **kwargs):
            try:
                if (hasattr(request, 'subscription')
                    and request.subscription is not None
                    and request.subscription.is_trial
                    and request.subscription.date_end is not None
                ):
                    edition_req = DefaultProductPlan.get_lowest_edition_by_domain(
                        request.domain, [slug]
                    )
                    plan_name = request.subscription.plan_version.user_facing_description['name']
                    feature_name = privileges.Titles.get_name_from_privilege(slug)
                    request.show_trial_notice = True
                    request.trial_info = {
                        'current_plan': plan_name,
                        'feature_name': feature_name,
                        'required_plan': edition_req,
                        'date_end': request.subscription.date_end.strftime(USER_DATE_FORMAT)
                    }
                    request.is_billing_admin = (hasattr(request, 'couch_user')
                                                and BillingAccountAdmin.get_admin_status_and_account(
                                                    request.couch_user, request.domain
                                                )[0])

                return requires_privilege(slug, **assignment)(fn)(
                    request, *args, **kwargs
                )
            except PermissionDenied:
                request.show_trial_notice = False
                from corehq.apps.domain.views import SubscriptionUpgradeRequiredView
                return SubscriptionUpgradeRequiredView().get(
                    request, request.domain, slug
                )
Esempio n. 2
0
 def wrapped(request, *args, **kwargs):
     try:
         return requires_privilege(slug, **assignment)(fn)(request, *args, **kwargs)
     except PermissionDenied:
         return HttpResponse(
             "You have lost access to this feature.", status=http_status_code or 412, content_type="text/plain"
         )
Esempio n. 3
0
 def wrapped(request, *args, **kwargs):
     try:
         return requires_privilege(slug, **assignment)(fn)(request, *args, **kwargs)
     except PermissionDenied:
         error_message = "You have lost access to this feature."
         response = get_response(error_message, http_status_code)
         return HttpResponse(json.dumps(response), content_type="application/json")
Esempio n. 4
0
        def wrapped(request, *args, **kwargs):
            try:
                if (hasattr(request, 'subscription')
                        and request.subscription is not None
                        and request.subscription.is_trial
                        and request.subscription.date_end is not None):
                    edition_req = DefaultProductPlan.get_lowest_edition([slug])
                    plan_name = request.subscription.plan_version.user_facing_description[
                        'name']
                    feature_name = privileges.Titles.get_name_from_privilege(
                        slug)
                    request.show_trial_notice = True
                    request.trial_info = {
                        'current_plan':
                        plan_name,
                        'feature_name':
                        feature_name,
                        'required_plan':
                        edition_req,
                        'date_end':
                        request.subscription.date_end.strftime(
                            USER_DATE_FORMAT)
                    }
                    request.is_domain_admin = (
                        hasattr(request, 'couch_user')
                        and request.couch_user.is_domain_admin(request.domain))

                return requires_privilege(slug,
                                          **assignment)(fn)(request, *args,
                                                            **kwargs)
            except PermissionDenied:
                request.show_trial_notice = False
                from corehq.apps.domain.views import SubscriptionUpgradeRequiredView
                return SubscriptionUpgradeRequiredView().get(
                    request, request.domain, slug)
Esempio n. 5
0
class LanguageProfilesView(View):
    urlname = 'build_profiles'

    @method_decorator(require_can_edit_apps)
    @method_decorator(requires_privilege(privileges.BUILD_PROFILES))
    def dispatch(self, request, *args, **kwargs):
        return super(LanguageProfilesView,
                     self).dispatch(request, *args, **kwargs)

    def post(self, request, domain, app_id, *args, **kwargs):
        profiles = json.loads(request.body).get('profiles')
        app = get_app(domain, app_id)
        build_profiles = {}
        if profiles:
            if app.is_remote_app() and len(profiles) > 1:
                # return bad request if they attempt to save more than one profile to a remote app
                return HttpResponse(status=400)
            for profile in profiles:
                id = profile.get('id')
                if not id:
                    id = uuid.uuid4().hex
                build_profiles[id] = BuildProfile(langs=profile['langs'],
                                                  name=profile['name'])
        app.build_profiles = build_profiles
        app.save()
        return HttpResponse()

    def get(self, request, *args, **kwargs):
        return HttpResponse()
Esempio n. 6
0
 def wrapped(request, *args, **kwargs):
     try:
         return requires_privilege(slug, **assignment)(fn)(
             request, *args, **kwargs)
     except PermissionDenied:
         error_message = "You have lost access to this feature."
         response = get_response(error_message, http_status_code)
         return HttpResponse(json.dumps(response),
                             content_type="application/json", status=401)
Esempio n. 7
0
 def wrapped(request, *args, **kwargs):
     try:
         return requires_privilege(slug, **assignment)(fn)(
             request, *args, **kwargs
         )
     except PermissionDenied:
         from corehq.apps.domain.views import SubscriptionUpgradeRequiredView
         return SubscriptionUpgradeRequiredView().get(
             request, request.domain, slug
         )
Esempio n. 8
0
 def wrapped(request, *args, **kwargs):
     try:
         return requires_privilege(slug, **assignment)(fn)(
             request, *args, **kwargs
         )
     except PermissionDenied:
         return HttpResponse(
             "You have lost access to this feature.",
             status=http_status_code or 412, content_type="text/plain",
         )
Esempio n. 9
0
class LanguageProfilesView(View):
    urlname = 'build_profiles'

    @method_decorator(require_can_edit_apps)
    @method_decorator(requires_privilege(privileges.BUILD_PROFILES))
    def dispatch(self, request, *args, **kwargs):
        return super(LanguageProfilesView,
                     self).dispatch(request, *args, **kwargs)

    def post(self, request, domain, app_id, *args, **kwargs):
        profiles = json.loads(request.body.decode('utf-8')).get('profiles')
        app = get_app(domain, app_id)
        build_profiles = {}
        if profiles:
            if app.is_remote_app() and len(profiles) > 1:
                # return bad request if they attempt to save more than one profile to a remote app
                return HttpResponse(status=400)
            for profile in profiles:
                id = profile.get('id')
                if not id:
                    id = uuid.uuid4().hex

                def practice_user_id():
                    if not app.enable_practice_users:
                        return ''
                    try:
                        practice_user_id = profile.get('practice_user_id')
                        if practice_user_id:
                            get_and_assert_practice_user_in_domain(
                                practice_user_id, domain)
                        return practice_user_id
                    except PracticeUserException:
                        return HttpResponse(status=400)

                build_profiles[id] = BuildProfile(
                    langs=profile['langs'],
                    name=profile['name'],
                    practice_mobile_worker_id=practice_user_id())
        app.build_profiles = build_profiles
        app.save()
        return HttpResponse()

    def get(self, request, *args, **kwargs):
        return HttpResponse()