コード例 #1
0
def posts_housekeeping():
    ''' goes through all posts, move 'old' posts to archive status,
        delete reeeeealy old posts. '''

    time_now = now()
    archive_time = time_now - \
                   timedelta(days=config_var('posts.archive_after_days', 7))
    delete_time = time_now - \
                  timedelta(days=config_var('posts.delete_after_days', 30))

    # first delete really old posts:

    delete_count = 0
    archive_count = 0

    if config_var('posts.delete_when_old', True):
        for post in Post.select().where(Post.active_end < delete_time):
            delete_post_and_run_callback(post, post_types.load(post.type))
            delete_count += 1

    # next set old-ish posts to archived:

    if config_var('posts.archive_when_old', True):
        archive_count = Post.update(status=2) \
                            .where((Post.active_end < archive_time) &
                                   (Post.status != 2)) \
                            .execute()

    # And done.

    return jsonify({"deleted": delete_count,
                    "archived": archive_count,
                    "delete_before": delete_time,
                    "archive_before": archive_time,
                    "now": time_now})
コード例 #2
0
def posts_housekeeping():
    ''' goes through all posts, move 'old' posts to archive status,
        delete reeeeealy old posts. '''

    time_now = now()
    archive_time = time_now - \
                   timedelta(days=config_var('posts.archive_after_days', 7))
    delete_time = time_now - \
                  timedelta(days=config_var('posts.delete_after_days', 30))

    # first delete really old posts:

    delete_count = 0
    archive_count = 0

    if config_var('posts.delete_when_old', True):
        for post in Post.select().where(Post.active_end < delete_time):
            delete_post_and_run_callback(post, post_types.load(post.type))
            delete_count += 1

    # next set old-ish posts to archived:

    if config_var('posts.archive_when_old', True):
        archive_count = Post.update(status=2) \
                            .where((Post.active_end < archive_time) &
                                   (Post.status != 2)) \
                            .execute()

    # And done.

    return jsonify({"deleted": delete_count,
                    "archived": archive_count,
                    "delete_before": delete_time,
                    "archive_before": archive_time,
                    "now": time_now})
コード例 #3
0
ファイル: screens.py プロジェクト: Fivebread/streetsign
def client_alias(alias_name):
    ''' client alias repointing address '''

    raw_aliases = config_var('screens.aliases', [])

    aliases = {}
    for alias in raw_aliases:
        aliases[alias['name']] = alias

    if alias_name in aliases:
        alias = aliases[alias_name]

        # This is very ugly, and could certainly be improved,
        # but it works for now:

        details = []
        if alias.get('forceaspect', None):
            details.append(('forceaspect', alias['forceaspect']))
        if alias.get('forcetop', None) != None:
            details.append(('forcetop', alias['forcetop']))
        if alias.get('fadetime', None) != None:
            details.append(('fadetime', alias['fadetime']))
        if alias.get('scrollspeed', None):
            details.append(('scrollspeed', alias['scrollspeed']))

        request.args = ImmutableDict(**dict(details + request.args.items()))

        return screendisplay(alias['screen_type'], alias['screen_name'])

    else:
        return ('<!doctype html><html><body><h1>Screen Alias not found.</h1>'
                '<p>Sorry...</p><script>'
                'setTimeout(function(){'
                '    document.location.reload(true);}, 10000);'
                '</script></body></html>')
コード例 #4
0
ファイル: screens.py プロジェクト: keyanmca/streetsign
def save_aliases():
    ''' save the current aliases. '''
    try:
        user = user_session.get_user()
    except user_session.NotLoggedIn:
        flash('Sorry, you need to be logged in!')
        return redirect(url_for('index'))
    if not user.is_admin:
        flash('Sorry. You are NOT an admin!')
        return redirect(url_for('index'))

    if request.method == 'POST':
        aliases = form_json('aliases', [])

        try:
            alias_configvar = ConfigVar.get(ConfigVar.id == 'screens.aliases')
        except ConfigVar.DoesNotExist:
            alias_configvar = ConfigVar()
            alias_configvar.id='screens.aliases'
            alias_configvar.save(force_insert=True)

        alias_configvar.value = aliases
        alias_configvar.save()
        return jsonify(aliases=json.loads(alias_configvar.value))

    return jsonify(aliases=config_var('screens.aliases', []))
コード例 #5
0
ファイル: screens.py プロジェクト: rcompaore/streetsign
def client_alias(alias_name):
    ''' client alias repointing address '''

    raw_aliases = config_var('screens.aliases', [])

    aliases = {}
    for alias in raw_aliases:
        aliases[alias['name']] = alias

    if alias_name in aliases:
        alias = aliases[alias_name]

        # This is very ugly, and could certainly be improved,
        # but it works for now:

        details = []
        if alias.get('forceaspect', None):
            details.append(('forceaspect', alias['forceaspect']))
        if alias.get('forcetop', None) != None:
            details.append(('forcetop', alias['forcetop']))
        if alias.get('fadetime', None) != None:
            details.append(('fadetime', alias['fadetime']))
        if alias.get('scrollspeed', None):
            details.append(('scrollspeed', alias['scrollspeed']))

        request.args = ImmutableDict(**dict(details + request.args.items()))

        return screendisplay(alias['screen_type'], alias['screen_name'])

    else:
        return ('<!doctype html><html><body><h1>Screen Alias not found.</h1>'
                '<p>Sorry...</p><script>'
                'setTimeout(function(){'
                '    document.location.reload(true);}, 10000);'
                '</script></body></html>')
コード例 #6
0
ファイル: screens.py プロジェクト: Fivebread/streetsign
def save_aliases():
    ''' save the current aliases. '''

    if request.method == 'POST':
        aliases = form_json('aliases', [])

        try:
            alias_configvar = ConfigVar.get(ConfigVar.id == 'screens.aliases')
        except ConfigVar.DoesNotExist:
            alias_configvar = ConfigVar() # pylint: disable=no-value-for-parameter
            alias_configvar.id = 'screens.aliases'
            alias_configvar.save(force_insert=True)

        alias_configvar.value = aliases
        alias_configvar.save()
        return jsonify(aliases=json.loads(alias_configvar.value))

    return jsonify(aliases=config_var('screens.aliases', []))
コード例 #7
0
def save_aliases():
    ''' save the current aliases. '''

    if request.method == 'POST':
        aliases = form_json('aliases', [])

        try:
            alias_configvar = ConfigVar.get(ConfigVar.id == 'screens.aliases')
        except ConfigVar.DoesNotExist:
            alias_configvar = ConfigVar()  # pylint: disable=no-value-for-parameter
            alias_configvar.id = 'screens.aliases'
            alias_configvar.save(force_insert=True)

        alias_configvar.value = aliases
        alias_configvar.save()
        return jsonify(aliases=json.loads(alias_configvar.value))

    return jsonify(aliases=config_var('screens.aliases', []))
コード例 #8
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)
コード例 #9
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)
コード例 #10
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())
コード例 #11
0
def screens():
    ''' HTML listing of all screens  '''
    return render_template('screens.html',
                           aliases=config_var('screens.aliases', []),
                           screens=Screen.select())