def import_app(request, domain): template = "app_manager/import_app.html" if request.method == "POST": clear_app_cache(request, domain) name = request.POST.get('name') compressed = request.POST.get('compressed') valid_request = True if not name: messages.error( request, _("You must submit a name for the application you are importing." )) valid_request = False if not compressed: messages.error(request, _("You must submit the source data.")) valid_request = False if not valid_request: return render(request, template, {'domain': domain}) source = decompress([ six.unichr(int(x)) if int(x) < 256 else int(x) for x in compressed.split(',') ]) source = json.loads(source) assert (source is not None) app = import_app_util(source, domain, {'name': name}) return back_to_main(request, domain, app_id=app._id) else: app_id = request.GET.get('app') redirect_domain = request.GET.get('domain') or None if redirect_domain is not None: redirect_domain = redirect_domain.lower() if Domain.get_by_name(redirect_domain): return HttpResponseRedirect( reverse('import_app', args=[redirect_domain]) + "?app={app_id}".format(app_id=app_id)) else: if redirect_domain: messages.error( request, "We can't find a project called \"%s\"." % redirect_domain) else: messages.error(request, "You left the project name blank.") return HttpResponseRedirect( request.META.get('HTTP_REFERER', request.path)) if app_id: app = get_app(None, app_id) assert (app.get_doc_type() in ('Application', 'RemoteApp')) assert (request.couch_user.is_member_of(app.domain)) else: app = None return render(request, template, { 'domain': domain, 'app': app, })
def import_app(request, domain, template="app_manager/import_app.html"): if request.method == "POST": clear_app_cache(request, domain) name = request.POST.get('name') compressed = request.POST.get('compressed') valid_request = True if not name: messages.error(request, _("You must submit a name for the application you are importing.")) valid_request = False if not compressed: messages.error(request, _("You must submit the source data.")) valid_request = False if not valid_request: return render(request, template, {'domain': domain}) source = decompress([chr(int(x)) if int(x) < 256 else int(x) for x in compressed.split(',')]) source = json.loads(source) assert(source is not None) app = import_app_util(source, domain, {'name': name}) return back_to_main(request, domain, app_id=app._id) else: app_id = request.GET.get('app') redirect_domain = request.GET.get('domain') or None if redirect_domain is not None: redirect_domain = redirect_domain.lower() if Domain.get_by_name(redirect_domain): return HttpResponseRedirect( reverse('import_app', args=[redirect_domain]) + "?app={app_id}".format(app_id=app_id) ) else: if redirect_domain: messages.error(request, "We can't find a project called %s." % redirect_domain) else: messages.error(request, "You left the project name blank.") return HttpResponseRedirect(request.META.get('HTTP_REFERER', request.path)) if app_id: app = get_app(None, app_id) assert(app.get_doc_type() in ('Application', 'RemoteApp')) assert(request.couch_user.is_member_of(app.domain)) else: app = None return render(request, template, { 'domain': domain, 'app': app, 'is_superuser': request.couch_user.is_superuser })