class ProcessLogoFileUploadView(ProcessImageFileUploadView): name = "hqmedia_uploader_logo" @method_decorator(requires_privilege_raise404(privileges.COMMCARE_LOGO_UPLOADER)) def post(self, request, *args, **kwargs): return super(ProcessLogoFileUploadView, self).post(request, *args, **kwargs) @property def form_path(self): return ("jr://file/commcare/logo/data/%s%s" % (self.filename, self.file_ext)) def validate_file(self, replace_diff_ext=True): return super(ProcessLogoFileUploadView, self).validate_file(replace_diff_ext) @property def filename(self): return self.kwargs.get('logo_name') def process_upload(self): if self.app.logo_refs is None: self.app.logo_refs = {} ref = super( ProcessLogoFileUploadView, self ).process_upload() self.app.logo_refs[self.filename] = ref['ref'] self.app.save() return ref
def locations_access_required(view_fn): """ Decorator controlling domain-level access to locations. """ return login_and_domain_required( requires_privilege_raise404(privileges.LOCATIONS)(view_fn) )
def locations_access_required(view_fn): """ Decorator controlling domain-level access to locations. """ return login_and_domain_required( requires_privilege_raise404(privileges.LOCATIONS)(view_fn) )
class AccountingSingleOptionResponseView(View, AsyncHandlerMixin): urlname = 'accounting_subscriber_response' http_method_names = ['post'] async_handlers = [ SubscriberFilterAsyncHandler, SubscriptionFilterAsyncHandler, AccountFilterAsyncHandler, DomainFilterAsyncHandler, BillingContactInfoAsyncHandler, SoftwarePlanAsyncHandler, InvoiceNumberAsyncHandler, CustomerInvoiceNumberAsyncHandler, InvoiceBalanceAsyncHandler, ] @method_decorator(require_superuser) @method_decorator(requires_privilege_raise404(privileges.ACCOUNTING_ADMIN)) def dispatch(self, request, *args, **kwargs): return super(AccountingSingleOptionResponseView, self).dispatch(request, *args, **kwargs) def post(self, request, *args, **kwargs): if self.async_response: return self.async_response return HttpResponseBadRequest("Please check your query.")
class AccountingAdminInterfaceDispatcher(ReportDispatcher): prefix = 'accounting_admin_interface' map_name = "ACCOUNTING_ADMIN_INTERFACES" @method_decorator(requires_privilege_raise404(privileges.ACCOUNTING_ADMIN)) def dispatch(self, request, *args, **kwargs): return super(AccountingAdminInterfaceDispatcher, self).dispatch(request, *args, **kwargs)
class ReportBuilderView(TemplateView): @cls_to_view_login_and_domain @method_decorator(toggles.REPORT_BUILDER.required_decorator()) @method_decorator(requires_privilege_raise404(privileges.REPORT_BUILDER)) def dispatch(self, request, domain, **kwargs): self.domain = domain return super(ReportBuilderView, self).dispatch(request, domain, **kwargs)
class AccountingSectionView(BaseSectionPageView): section_name = 'Accounting' @property def section_url(self): return reverse('accounting_default') @method_decorator(requires_privilege_raise404(privileges.ACCOUNTING_ADMIN)) def dispatch(self, request, *args, **kwargs): return super(AccountingSectionView, self).dispatch(request, *args, **kwargs)
class RemoveLogoView(BaseMultimediaView): name = "hqmedia_remove_logo" @property def logo_slug(self): if self.request.method == 'POST': return self.request.POST.get('logo_slug') return None @method_decorator(requires_privilege_raise404(privileges.COMMCARE_LOGO_UPLOADER)) def post(self, *args, **kwargs): if self.logo_slug in self.app.logo_refs: del self.app.logo_refs[self.logo_slug] self.app.save() return HttpResponse()