def settings(path='/'): if current_user.is_anonymous(): abort(401) if path != '/': path = '/' + path next = util.is_safe_url(request.values.get('next', path)) record = models.Pages.pull_by_url(next) if record is None: rec = {'url': next, 'author': current_user.id} else: rec = record.data if request.method == 'GET': if record is None: flash('There is no page here yet - create one.') return render_template('pagemanager/settings.html', tags=json.dumps(dropdowns( 'pagemanager', 'tags')), urls=json.dumps(dropdowns('pagemanager', 'url')), record=rec) elif (request.method == 'DELETE' or (request.method == 'POST' and request.values.get('submit', False) == 'Delete')): if record is None: abort(404) else: _sync_delete(record) flash('Page deleted') return redirect("/") elif request.method == 'POST': if record is None: record = models.Pages() if request.values.get('template', False): tmpl = models.Pages.pull_by_url(request.values['template']) if tmpl is not None and 'content' in tmpl.data: record.data['content'] = tmpl.data['content'] newdata = request.json if request.json else request.values # check the new url does not overwrite an already present url if 'url' not in newdata: flash("A URL is required.") elif (record.data.get('url', '') != newdata['url'] and models.Pages.pull_by_url(newdata['url']) is not None): # update record data so form is up to date but don't save it record.update_from_form(request) flash( "There is already a page present at the URL you specifed. You must delete that page first." ) else: record.save_from_form(request) flash('Settings updated') time.sleep(1) return render_template('pagemanager/settings.html', tags=json.dumps(dropdowns('pages', 'tags')), urls=json.dumps(dropdowns('pages', 'url')), record=record.data)
def nextdirect(default): for target in request.args.get('next'), request.referrer: if not target: continue if target == util.is_safe_url(target): return target else: return redirect(default)
def settings(path="/"): if current_user.is_anonymous(): abort(401) if path != "/": path = "/" + path next = util.is_safe_url(request.values.get("next", path)) record = models.Pages.pull_by_url(next) if record is None: rec = {"url": next, "author": current_user.id} else: rec = record.data if request.method == "GET": if record is None: flash("There is no page here yet - create one.") return render_template( "pagemanager/settings.html", tags=json.dumps(dropdowns("pagemanager", "tags")), urls=json.dumps(dropdowns("pagemanager", "url")), record=rec, ) elif request.method == "DELETE" or (request.method == "POST" and request.values.get("submit", False) == "Delete"): if record is None: abort(404) else: _sync_delete(record) flash("Page deleted") return redirect("/") elif request.method == "POST": if record is None: record = models.Pages() if request.values.get("template", False): tmpl = models.Pages.pull_by_url(request.values["template"]) if tmpl is not None and "content" in tmpl.data: record.data["content"] = tmpl.data["content"] newdata = request.json if request.json else request.values # check the new url does not overwrite an already present url if "url" not in newdata: flash("A URL is required.") elif record.data.get("url", "") != newdata["url"] and models.Pages.pull_by_url(newdata["url"]) is not None: # update record data so form is up to date but don't save it record.update_from_form(request) flash("There is already a page present at the URL you specifed. You must delete that page first.") else: record.save_from_form(request) flash("Settings updated") time.sleep(1) return render_template( "pagemanager/settings.html", tags=json.dumps(dropdowns("pages", "tags")), urls=json.dumps(dropdowns("pages", "url")), record=record.data, )
def get_redirect_target(form=None): form_target = '' if form and hasattr(form, 'next') and getattr(form, 'next'): form_target = form.next.data for target in form_target, request.args.get('next',[]): if not target: continue if target == util.is_safe_url(target): return target return url_for('doaj.home')
def get_redirect_target(form=None): form_target = "" if form and hasattr(form, "next") and getattr(form, "next"): form_target = form.next.data for target in form_target, request.args.get("next", []): if not target: continue if target == util.is_safe_url(target): return target return url_for("admin.index")
def get_redirect_target(form=None): form_target = '' if form and hasattr(form, 'next') and getattr(form, 'next'): form_target = form.next.data for target in form_target, request.args.get('next', []): if not target: continue if target == util.is_safe_url(target): return target return url_for('doaj.home')
def redirect(self, endpoint='index', **values): if self.next.data == util.is_safe_url(self.next.data): return redirect(self.next.data) target = get_redirect_target() return redirect(target or url_for(endpoint, **values))
def get_redirect_target(): for target in request.args.get('next'), request.referrer: if not target: continue if target == util.is_safe_url(target): return target
def settings(path='/'): if not current_user.is_super: abort(401) if path != '/': path = '/' + path next = util.is_safe_url(request.values.get('next',path)) record = models.Pages.pull_by_url(next) if record is None: rec = { 'url': next, 'author': current_user.id } else: rec = record.data if request.method == 'GET': if record is None: flash('There is no page here yet - create one.','info') return render_template( 'pagemanager/settings.html', tags = json.dumps(dropdowns('pagemanager','tags')), urls = json.dumps(dropdowns('pagemanager','url')), record = rec ) elif ( request.method == 'DELETE' or (request.method == 'POST' and request.values.get('submit','').lower() == 'delete') ): if record is None: abort(404) else: _sync_delete(record) flash('Page deleted') return redirect("/") elif request.method == 'POST': if record is None: record = models.Pages() if request.values.get('template',False): tmpl = models.Pages.pull_by_url(request.values['template']) if tmpl is not None and 'content' in tmpl.data: record.data['content'] = tmpl.data['content'] newdata = request.json if request.json else request.values # check the new url does not overwrite an already present url if 'url' not in newdata: flash("A URL is required.") elif (record.data.get('url','') != newdata['url'] and models.Pages.pull_by_url(newdata['url']) is not None ): # update record data so form is up to date but don't save it record.update_from_form(request) flash("There is already a page present at the URL you specifed. You must delete that page first.") else: record.save_from_form(request) flash('Settings updated') time.sleep(1) return render_template( 'pagemanager/settings.html', tags = json.dumps(dropdowns('pages','tags')), urls = json.dumps(dropdowns('pages','url')), record = record.data )