def external_source_run(source_id): ''' use the importer specified to see if there is any new data, and if there is, then import it. ''' try: source = ExternalSource.get(id=source_id) except ExternalSource.DoesNotExist: return 'Invalid Source', 404 time_now = now() if user_session.is_admin() and request.form.get('force', 'no') == 'yes': flash("Update forced.") else: if source.last_checked: next_check = source.last_checked + timedelta( minutes=source.frequency) if next_check > time_now: return "Nothing to do. Last: {0}, Next: {1}, Now: {2} ".format( source.last_checked, next_check, time_now) module = external_source_types.load(source.type) settings_data = json.loads(source.settings) new_posts = module.get_new(settings_data) if new_posts: for fresh_data in new_posts: post = Post(type=fresh_data.get('type', 'html'), \ author=source.post_as_user) post_type_module = post_types.load(fresh_data.get('type', 'html')) post.feed = source.feed fresh_data['active_start'] = source.current_lifetime_start() fresh_data['active_end'] = source.current_lifetime_end() post_form_intake(post, fresh_data, post_type_module) post.display_time = source.display_time if source.publish: post.publisher = source.post_as_user post.publish_date = now() post.published = True post.save() # else, no new posts! oh well! source.settings = json.dumps(settings_data) source.last_checked = now() source.save() return 'Done!'
def external_source_run(source_id): ''' use the importer specified to see if there is any new data, and if there is, then import it. ''' try: source = ExternalSource.get(id=source_id) except ExternalSource.DoesNotExist: return 'Invalid Source', 404 time_now = now() if user_session.is_admin() and request.form.get('force', 'no') == 'yes': flash("Update forced.") else: if source.last_checked: next_check = source.last_checked + timedelta(minutes=source.frequency) if next_check > time_now: return "Nothing to do. Last: {0}, Next: {1}, Now: {2} ".format( source.last_checked, next_check, time_now) module = external_source_types.load(source.type) settings_data = json.loads(source.settings) new_posts = module.get_new(settings_data) if new_posts: for fresh_data in new_posts: post = Post(type=fresh_data.get('type', 'html'), \ author=source.post_as_user) post_type_module = post_types.load(fresh_data.get('type', 'html')) post.feed = source.feed fresh_data['active_start'] = source.current_lifetime_start() fresh_data['active_end'] = source.current_lifetime_end() post_form_intake(post, fresh_data, post_type_module) post.display_time = source.display_time if source.publish: post.publisher = source.post_as_user post.publish_date = now() post.published = True post.save() # else, no new posts! oh well! source.settings = json.dumps(settings_data) source.last_checked = now() source.save() return 'Done!'
def post_new(feed_id): ''' create a new post! ''' if not user_session.logged_in(): flash("You're not logged in!") return redirect(url_for('index')) user = user_session.get_user() try: feed = Feed.get(id=feed_id) except Feed.DoesNotExist: flash('Sorry, Feed does not exist!') return redirect(url_for('feeds')) if not feed.user_can_write(user): flash("Sorry! You don't have permission to write here!") return redirect(request.referrer if request.referrer else '/') if request.method == 'GET': # send a blank form for the user: post = Post() post.feed = feed # give list of available post types: all_posttypes = dict([(x['id'], x) for x in post_types.types()]) if post.feed.post_types: allowed_post_types = [] for post_type in post.feed.post_types_as_list(): if post_type in all_posttypes: allowed_post_types.append(all_posttypes[post_type]) else: allowed_post_types = all_posttypes.values() # return the page: return render_template('postnew.html', current_feed=feed, post=post, user=user, post_types=allowed_post_types) else: # POST. new post! post_type = request.form.get('post_type') try: post_type_module = post_types.load(post_type) except: flash('Sorry! invalid post type.') return redirect(request.referrer if request.referrer else '/') if feed.post_types and post_type not in feed.post_types_as_list(): flash('sorry! this post type is not allowed in this feed!') return redirect(request.referrer if request.referrer else '/') post = Post(type=post_type, author=user) try: post.feed = feed if_i_cant_write_then_i_quit(post, user) post_form_intake(post, request.form, post_type_module) except PleaseRedirect as e: flash(str(e.msg)) return redirect(e.url if e.url else request.url) post.save() flash('Saved!') return redirect(url_for('feedpage', feedid=post.feed.id))
def post_new(feed_id): ''' create a new post! ''' #if not user_session.logged_in(): # flash("You're not logged in!") # return redirect(url_for('index')) user = user_session.get_user() try: feed = Feed.get(id=feed_id) except Feed.DoesNotExist: flash('Sorry, Feed does not exist!') return redirect(url_for('feeds')) if not feed.user_can_write(user): flash("Sorry! You don't have permission to write here!") return redirect(request.referrer if request.referrer else '/') if request.method == 'GET': # send a blank form for the user: post = Post() post.feed = feed # give list of available post types: all_posttypes = dict([(x['id'], x) for x in post_types.types()]) if post.feed.post_types: allowed_post_types = [] for post_type in post.feed.post_types_as_list(): if post_type in all_posttypes: allowed_post_types.append(all_posttypes[post_type]) else: allowed_post_types = list(all_posttypes.values()) # return the page: return render_template('postnew.html', current_feed=feed, post=post, user=user, post_types=allowed_post_types) else: # POST. new post! post_type = request.form.get('post_type') try: post_type_module = post_types.load(post_type) except: flash('Sorry! invalid post type.') return redirect(request.referrer if request.referrer else '/') if feed.post_types and post_type not in feed.post_types_as_list(): flash('sorry! this post type is not allowed in this feed!') return redirect(request.referrer if request.referrer else '/') post = Post(type=post_type, author=user) try: post.feed = feed if_i_cant_write_then_i_quit(post, user) post_form_intake(post, request.form, post_type_module) except PleaseRedirect as e: flash(str(e.msg)) return redirect(e.url if e.url else request.url) post.save() post.publish(user) # publish all posts by default flash('Saved!') return redirect(url_for('feedpage', feedid=post.feed.id))