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})
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>')
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', []))
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', []))
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)
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)
def screens(): ''' HTML listing of all screens ''' return render_template('screens.html', aliases=config_var('screens.aliases', []), screens=Screen.select())