コード例 #1
0
ファイル: screens.py プロジェクト: keyanmca/streetsign
def screendisplay(template, screenname):
    '''
        The actual output screen view.
    '''
    try:
        screen = Screen.get(urlname=screenname)
    except Screen.DoesNotExist:
        # return first screen, if you can't find the one we really want.
        # this stops us from ending up with screens which 'die' due to misnaming.
        # They may show the wrong screen - but it's better than not showing
        # a screen at all.
        # TODO: add an config_var to decide what to do in this circumstance.
        screen = Screen.get()

    return render_template('screens/' + template + '.html',
                           screen=screen)
コード例 #2
0
def screendisplay(template, screenname):
    '''
        The actual output screen view.
    '''
    try:
        screen = Screen.get(urlname=screenname)
    except Screen.DoesNotExist:
        # return first screen, if you can't find the one we really want.
        # this stops us from ending up with screens which 'die' due to misnaming.
        # They may show the wrong screen - but it's better than not showing
        # a screen at all.
        # TODO: add an config_var to decide what to do in this circumstance.
        screen = Screen.get()

    return render_template('screens/' + template + '.html',
                           screen=screen,
                           site_mode=app.config['MODE'])
コード例 #3
0
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())
コード例 #4
0
ファイル: screens.py プロジェクト: keyanmca/streetsign
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())
コード例 #5
0
ファイル: __init__.py プロジェクト: Fivebread/streetsign
def index():
    ''' main front page / dashboard / index. '''
    try:
        user = user_session.get_user()
    except user_session.NotLoggedIn as e:
        user = User()

    if not user:
        user = User()


    publishable_feeds = user.publishable_feeds()


    posts_to_publish = Post.select()\
                           .where((Post.published==False) &
                                  (Post.feed << publishable_feeds))

    screens = Screen.select()
    aliases = config_var('screens.aliases', [])

    for alias in aliases:
        for screen in screens:
            if screen.urlname == alias['screen_name']:
                alias['screen'] = screen
                break
        else:
            alias['screen'] = None

    return render_template('dashboard.html',
        aliases=aliases,
        feeds=Feed.select(),
        publishable_feeds=publishable_feeds,
        posts=Post.select().where(Post.author == user)\
                  .order_by(Post.write_date.desc())\
                  .limit(15),
        posts_to_publish=posts_to_publish,
        screens=screens,
        user=user)
コード例 #6
0
ファイル: __init__.py プロジェクト: rcompaore/streetsign
def index():
    ''' main front page / dashboard / index. '''
    try:
        user = user_session.get_user()
    except user_session.NotLoggedIn:
        user = User()

    if not user:
        user = User()

    publishable_feeds = user.publishable_feeds()


    posts_to_publish = Post.select()\
                           .where((Post.published == False) &
                                  (Post.feed << publishable_feeds))

    screens = Screen.select()
    aliases = config_var('screens.aliases', [])

    for alias in aliases:
        for screen in screens:
            if screen.urlname == alias['screen_name']:
                alias['screen'] = screen
                break
        else:
            alias['screen'] = None

    return render_template('dashboard.html',
                           aliases=aliases,
                           feeds=Feed.select(),
                           publishable_feeds=publishable_feeds,
                           posts=Post.select().where(Post.author == user)\
                                     .order_by(Post.write_date.desc())\
                                     .limit(15),
                           posts_to_publish=posts_to_publish,
                           screens=screens,
                           user=user)
コード例 #7
0
ファイル: screens.py プロジェクト: Fivebread/streetsign
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.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)
コード例 #8
0
ファイル: screens.py プロジェクト: Fivebread/streetsign
def screens():
    ''' HTML listing of all screens  '''
    return render_template('screens.html',
                           aliases=config_var('screens.aliases', []),
                           screens=Screen.select())
コード例 #9
0
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)
コード例 #10
0
def screens():
    ''' HTML listing of all screens  '''
    return render_template('screens.html',
                           aliases=config_var('screens.aliases', []),
                           screens=Screen.select())