コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: pagemanager.py プロジェクト: CottageLabs/opendoar
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,
        )
コード例 #4
0
ファイル: account.py プロジェクト: jbarnsby/doaj
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')
コード例 #5
0
ファイル: account.py プロジェクト: CottageLabs/opendoar
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")
コード例 #6
0
ファイル: account.py プロジェクト: kelly-mcdougall/doaj
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')
コード例 #7
0
ファイル: account.py プロジェクト: jbarnsby/doaj
 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))
コード例 #8
0
ファイル: account.py プロジェクト: CottageLabs/contentmine
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
コード例 #9
0
ファイル: account.py プロジェクト: ContentMine/old_site
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
コード例 #10
0
ファイル: account.py プロジェクト: ContentMine/old_site
 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))
コード例 #11
0
ファイル: pagemanager.py プロジェクト: hrickards/backend
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
        )