def screenedit(screenid): ''' edit one screen ''' try: if int(screenid) == -1: flash('New Screen') screen = Screen() # pylint: disable=no-value-for-parameter else: screen = Screen().get(Screen.id == int(screenid)) # pylint: disable=no-value-for-parameter backgrounds = [basename(x) for x in \ glob(app.config['SITE_VARS']['user_dir'] + '*') if allow_filetype(x)] except Screen.DoesNotExist: flash('Invalid Screen ID! Screen does NOT exist!') return redirect(url_for('index')) if request.method == 'POST': if request.form.get('action', 'update') == 'delete': screen.delete_instance() flash('deleted') return redirect(request.referrer) # first check that name is OK: try: oldname = screen.urlname screen.urlname = urllib.parse.quote(request.form.get('urlname'), '') screen.save() except sqlite3.IntegrityError: screen.urlname = oldname flash("Sorry! That name is already being used!") screen.background = request.form.get('background') screen.settings = request.form.get('settings', '') screen.css = request.form.get('css', '').replace('"', "'") screen.zones = form_json('zones', {}) screen.save() flash('saved.') if int(screenid) == -1: return redirect(url_for('screenedit', screenid=screen.id)) fonts = ['', 'serif', 'sans-serif', 'monospace', 'cursive', 'fantasy'] fonts += [name for name, _ in user_fonts()] return render_template('screen_editor.html', feeds=Feed.select(), backgrounds=backgrounds, fonts=fonts, screen=screen)
def screen_json(screenid, old_md5): ''' When you edit a screen, it saves most of the data as JSON. This requests the MD5sum of that data, (and that data). You can then compare against what you're already displaying, and only update if it's changed. ''' try: screen = Screen.get(id=int(screenid)) except: screen = Screen() # pylint: disable=no-value-for-parameter screen_md5 = screen.md5() if screen_md5 == old_md5: return jsonify(screenid=screenid, md5=screen_md5) else: return jsonify(screenid=screenid, md5=screen_md5, screen=screen.to_dict())