def get(self): rss_items = [] # fetch all posts from the db logging.info("FeedHandler::get() - Fetching posts from the db") q = Post.all() q.order("-created_at") results = q.fetch(20) for p in results: rss_items.append( PyRSS2Gen.RSSItem( title = "Tasty Burger Friday", link = "http://www.tasty-babelsberg.de", description = p.content, # guid = PyRSS2Gen.Guid('Guid{0}'.format(p.key().id())), pubDate = p.created_at ) ) logging.info("Building the RSS") # build the rss rss = PyRSS2Gen.RSS2( title = "Tasty Burger Feed", link = "http://www.tasty-babelsberg.de", description = "Tasty Burger Friday", lastBuildDate = datetime.datetime.now(), items = rss_items ) self.response.headers['Content-Type'] = 'application/rss+xml' self.response.out.write(rss.to_xml())
def generate_posts_json(update = False): mc_key = "JSON_POSTS" news_dict, age = age_get(mc_key) if update or news_dict is None: q = Post.all().order('-pubDate') posts = list(q.fetch(limit=20)) news_dict = dict() for newstype in urllist: news_dict[newstype] = [] news_dict["carousel_posts"] = [] for p in posts: news_dict[p.newstype].append({ "TITLE":p.title, "DESCRIPTION":p.description, "PUBDATE":p.pubDate.isoformat(), "LINK":p.link, "IMAGE":p.image, "SRC":p.src, "NEWSTYPE":p.newstype #remove later }) carousel_posts = list(q.filter('srckey IN', [1, 6, 10]).fetch(limit=6)) for p in carousel_posts: news_dict["carousel_posts"].append({ "TITLE":p.title, "DESCRIPTION":p.description, "PUBDATE":p.pubDate.strftime("%X, %x"), "LINK":p.link, "IMAGE":p.image, "SRC":p.src, "NEWSTYPE":p.newstype #remove later }) news_dict = json.dumps(news_dict) age_set(mc_key, news_dict) logging.info("DB QUERY!!") return news_dict, age
def get(self): posts = Post.all().order('-created') if self.user: self.render('front-private.html', posts=posts, user_name=self.user.name) else: self.render('front.html', posts=posts)
def post(self): action = self.request.get("action") post_id = self.request.get("post_id") error_message = '' if action: if post_id.isdigit(): post = Post.get_by_id(int(post_id)) if post: if self.user_logged_in(): if self.user_owns_post(post): if action == 'like' or action == 'dislike': error_message = 'You cannot like your own post' else: if (action == 'like'): if Post.likedPost(post, self.user.key()): post.liked_user.append(self.user.key()) post.put() else: error_message = 'You can like only once' elif (action == 'dislike'): if Post.dislikedPost(post, self.user.key()): post.disliked_user.append(self.user.key()) post.put() else: error_message = 'You cand dislike only once' posts = Post.all().order('-created') if self.user: self.render("front.html", posts=posts, current_userid=self.user.key().id(), error_message=error_message) else: self.render("front.html", posts=posts, error_message=error_message)
def index(parameters): template = open('./templates/posts/index.html').read() posts = Post.all(Post.cxn, "posts") post_template = open('./templates/posts/show.html').read() rendered_posts = "<br><br>".join([TemplateEngine(post_template, definitions(post, {"id": post.id, "comments_link": '<p><a href="/posts/{0}#comments">{1} comments</a></p>'.format(post.id, len(post.comments(globals())))})).render_partial() for post in posts]) index_definitions = {"number_of_pages": str(parameters["number_of_pages"]), "rendered_posts": rendered_posts} index_definitions["login_status_message"] = login_status_message(parameters) return TemplateEngine(template, index_definitions).render()
def list(): post_type = request.args.get('type') page = int(request.args.get('page', 1)) query = request.args.get('q', 'sngularrocks') posts = Post() return Response(json.dumps(posts.all(query, page, post_type), default=json_util.default), mimetype='application/json')
def get(self): #posts = db.GqlQuery("Select * FROM Post ORDER BY created DESC limit 10") posts = Post.all().order('-created') if (self.user): self.render("front.html", posts=posts, current_userid=self.user.key().id()) else: self.render("front.html", posts=posts)
def get(self): #check if user is logged in if self.user: posts = Post.all().filter('author =', self.user.key()) posts.order("-created") self.render('mypage.html', username = self.user.name, posts = posts) #if user is not logged in, redirect to login page else: self.redirect('/login')
def call_feed_page(request, **kvargs): posts = Post.all() posts = sorted(posts, key=lambda post: (post.time), reverse=True) posts = posts[:10] favorites = Favorite.objects.filter(user_id=request.user) if favorites == []: favorites = None return generic_htmlvars('feed_page.html', request, posts=posts, favorites=favorites, **kvargs)
def render_front(self, visits): posts = Post.all().order('-created') error = self.request.get('error') message = self.request.get('msg') if error == '1': error = "You can only delete your own posts." elif error == '2': error = "No post found that matches that post identifier." if message == '1': message = "Your post has been successfully deleted" self.render("posts/posts.html", posts=posts, message=message, error=error)
def get(self, post_id): key = db.Key.from_path('Post', int(post_id)) post = db.get(key) if not post: return self.redirect('/blog?error=2') if self.user.key().id() == post.author_id: self.render("posts/edit_post.html", post=post, subject=post.subject, content=post.content) elif self.user: message = "You can only edit your own posts." posts = Post.all().order('-created') self.render('posts/posts.html', posts=posts, message=message) else: error = "You need to be logged in to edit a post!" return self.render('sessions/login.html', error=error)
def hello_world(): setting = Setting() post = Post() user = User() settings = setting.all() settings_formatted = {} for element in settings: settings_formatted[element.get('name')] = element.get('data').get('es') latest_ten_posts = post.all(q='sngularrocks') users = user.top_users() return render_template('index.html', setting=settings_formatted, posts=latest_ten_posts, users=users)
def get(self): """Get posts from DB and render it. """ per_page = 5 page = self.request.get('page') if page: page = int(page) else: page = 1 posts_all = Post.all().order('-created') nr_posts = posts_all.count() total_page = nr_posts / per_page if nr_posts % per_page: total_page += 1 offset = per_page * (page - 1) posts = posts_all.fetch(limit=per_page, offset=offset) self.render('main.html', posts=posts, page=page, total_page=total_page)
def post(self, post_id): key = db.Key.from_path('Post', int(post_id)) post = db.get(key) subject = self.request.get('subject') content = self.request.get('content') if self.user and self.user.key().id() == post.author_id: if subject and content: post.subject = subject post.content = content post.put() # store in database self.redirect("/blog/posts/%s" % str(post.key().id())) else: error = 'A post needs both a subject line and content' self.render_form(subject=subject, content=content, error=error) elif self.user: message = "You can only edit your own posts." posts = Post.all().order('-created') self.render('posts/posts.html', posts=posts, message=message) else: error = "You need to be logged in to edit a post!" return self.render('sessions/login.html', error=error)
def get(self, error=None): posts = Post.all().order('-created') self.render('front.html', posts=posts, error=error)
def test_post_all(self): self.create_post() posts = Post.all() self.assertEquals(1, len(posts))
def test_all_exception(self): Post.all() self.assertRaises(ApiException)
def test_post_all_empty(self): post = Post.all() self.assertEquals(0, len(post))
def test_post_all(self): self.create_post('001', 'username') posts = Post.all() self.assertEquals(1, len(posts))
def get(self): """Show 10 posts.""" posts = Post.all().order("-created").run(limit=10) return self.render("post-index.html", posts=posts, user=self.user)
def get(self): posts = Post.all().order('-created') self.render('frontPost.html', posts=posts, username=self.user)
def get(self): posts = Post.all().order('-created') self.render('home.html', posts=posts)
def render_posts(admin): post = Post() return render_template("posts.html" , posts = post.all(pagination_info["from"],pagination_info["to"]),p = post,admin= False)
def get(self): for user in User.all(): user.delete() for post in Post.all(): post.delete() users_dicts = [{ "username": "******", "pw": "cw", "fname": "Clarence", "lname": "Wendle", "email": "*****@*****.**", "bio": "Clarence is the main character of Clarence. " "Clarence's distinct perspective can transform any " "circumstance, however mundane, into the best day ever! " "His beliefs, outlook and experiences are all uniquely his " "own. Clarence leads with his heart, reacting to life " "with unfailing excitement and enthusiasm. He values his " "friends more than gold. In Pretty Great Day with a " "Girl, he is shown to be friends with everybody in Aberdale " "except Victor. Clarence loves everything because to " "Clarence, everything is amazing. He is most definitely " "the emotional third of this trio of friends. Despite " "all this, he's not very bright. It has been shown " "multiple times that his optimism also transforms " "him to a dimwit. In Average Jeff, it shown that he scored " "no only high crayon, he's the lowest, implying " "that his stupidity lead him up to this, however due to " "his habits and his describe stupidity.", "url": "https://pbs.twimg.com/profile_images/554702195220697089/kb5fWogP.jpeg" }, { "username": "******", "pw": "rs", "fname": "Ryan", "lname": "Sumouski", "email": "*****@*****.**", "bio": "Ryan 'Sumo' Sumouski is one of the three main " "protagonists (More as a deuteragonist) in Clarence. He " "is one of Clarence's friends. He loves to do all sorts " "of crazy things so that he can enjoy having fun with " "Clarence, Jeff, and everyone else. Like his friends, he " "is socially awkward. He was originally voiced by Jason " "Marsden in the 'Pilot,' but was replaced by Tom Kenny " "in the series.", "url": "http://vignette4.wikia.nocookie.net/clarence/images/d/d8/Bird_Boy_Man_57.png/revision/latest?cb=20160120051349" }, { "username": "******", "pw": "jr", "fname": "Jeff", "lname": "Randell", "email": "*****@*****.**", "bio": "Jeff Randell is one of the three main characters " "in Clarence. Clarence's best friend, Jeff, is a bit of " "a square with a long list of phobias, but even someone " "as uptight as Jeff can't help but have fun when Clarence " "is around. He is both the tritagonist and a semi-antagonist.", "url": "http://vignette2.wikia.nocookie.net/clarence/images/6/6c/This_is_Jeffrey_Randell_from_the_6_clock_news.png/revision/latest?cb=20150407232224" }, { "username": "******", "pw": "cb", "fname": "Courage", "lname": "Bagge", "email": "*****@*****.**", "bio": "Despite his signature cowardly demeanor, Courage " "does live up to the meaning of his name. Because of a " "kidnapping incident with his parents, he was abandoned as " "a puppy, found by Muriel, and began fearing everything. " "This fear is easily swallowed, however, when Muriel's " "safety is put into jeopardy or trouble falls upon him " "in general. Not only because he wishes to protect " "Muriel, but because the events of his most painful memory " "drives him to do so in fear of losing another loved one.", "url": "http://vignette1.wikia.nocookie.net/courage/images/1/11/Courage.a.jpg/revision/latest/scale-to-width-down/310?cb=20110304185658" }, { "username": "******", "pw": "as", "fname": "Arnold", "lname": "Shortman", "email": "*****@*****.**", "bio": "Arnold Phillip Shortman is a fictional character " "created by Craig Bartlett. He has featured in claymation " "shorts and comics, but his main role has been the main " "protagonist of the Nickelodeon animated television series " "Hey Arnold!. His head is shaped like a giant football, " "thus earning him the nickname \"Football Head\".", "url": "http://vignette3.wikia.nocookie.net/heyarnold/images/f/f6/Arnold.jpg/revision/latest/scale-to-width-down/200?cb=20140706192844" }] lorem_ipsums = [ "Lorem ipsum dolor sit amet, pri vocent partiendo ne, in eam " "quis quidam ceteros, ea vim amet modo reformidans. Ludus " "posidonium an mea, scripta omnesque expetendis usu in, " "quis tation labore ne usu. Dicta essent sit et. Sea ex dicant " "propriae conceptam. Invenire scribentur ne pri, id elitr " "recteque torquatos his. Eu officiis luptatum pro.\n", "Ex labores dissentias eum. Has liber vituperatoribus ea. " "Elit feugiat ut sed, ius mundi invidunt aliquando et. Eu " "democritum interesset ullamcorper nec, ei nam prodesset " "delicatissimi. Everti molestiae no duo, duo nusquam " "fierent ei, nonumes eligendi ex mei.\n", "Est ad saperet definiebas scriptorem. Ex vel melius probatus " "ullamcorper, mel congue petentium an. Sit epicuri evertitur " "id, usu ea fugit altera. Cu usu option instructior. An mea " "vitae feugiat consequuntur, ea has dicta facilisi iudicabit. " "Nullam timeam an sed, no eum paulo omnesque tacimates.\n", "Ius cu error nominavi, duo elit saepe causae ne. At tractatos " "explicari vis, esse fugit tritani pro ne. An vim rebum dictas " "nostrum. Est quot nominati an. Dico solum vix ei.\n", "Magna virtute vix ea, rationibus constituto et eos. Decore " "tamquam delenit sea ei, appetere pertinax pro et. Ut qui " "pertinax expetenda, ad eam etiam dignissim. Ne mel malorum " "expetenda. Stet eirmod ad his, mei doctus pertinax ea.\n", "Prompta saperet pertinacia sit no. Ei per vivendo partiendo. " "Ius solet delenit volutpat ex, cu augue ponderum quo. Vim zril " "mentitum appetere id, id ridens petentium vituperata vis.\n", "Ferri principes sit ut. Ad soleat voluptua pro. Pri pericula " "explicari te, albucius percipit te vim. Cum tempor oblique " "atomorum ex, sanctus volumus mediocrem ne sed. Ad veritus " "consequat vel, vis cu graeco singulis facilisis.\n", "Illud patrioque evertitur sit in. Ex reque sensibus efficiantur " "vel. Sed cu quis affert, vero prima iracundia vis cu. Mea " "etiam luptatum et, pri meis quando iracundia at. Meis " "everti ei usu, eu his choro dolorum.\n", "Cu quo soluta partiendo, petentium assueverit constituam has " "in. Animal qualisque an eos, odio unum detracto ei vel. At " "his dicta utamur. No putant laboramus his, ei cum tollit " "delectus lucilius, et duo quaeque accusamus. Est eu consul " "insolens atomorum. Mel illud nusquam suscipiantur ei, per id " "quot adipisci. Sea te veritus vocibus incorrupte.\n", "Usu in quot repudiare interesset, novum epicurei " "vituperatoribus et cum. Ea mei movet nullam neglegentur, " "fabulas saperet te eos. Qui stet oporteat indoctum no, " "unum nostrum deleniti ne sit. Ferri pertinax eam no, ex " "latine persecuti per. Ut quo luptatum gloriatur democritum.\n" ] imgs = [ "https://images3.alphacoders.com/675/675273.jpg", "https://blogs-images.forbes.com/erikkain/files/2017/01/Switch-gamepad.jpg", "http://sawadacoffee.com/wp-content/uploads/Sawada-Coffee-10DEC2015-003.jpg", "https://www.nobrowcoffee.com/wp-content/uploads/2016/04/coffee-wallpaper-1306-1433-hd-wallpapers.jpg", "https://cdn0.vox-cdn.com/uploads/chorus_image/image/48851021/shutterstock_249549703.0.0.jpg", "http://media3.s-nbcnews.com/j/newscms/2016_32/1665641/ss-160812-twip-02_3380f5e9d30b766138155f8c3f11f9a8.nbcnews-fp-1200-800.jpg" ] titles = [ "Lifehax: Turn your pizza upside down for more flavor", "Chemistry 101: Sandals are OK", "I will beat you at FIFA no questions asked", "One easy trick to win at Smash4: Play Bayo or Cloud", "Zelda BOTW is my spirit animal", "10 reasons why Arjay is cool", "I love Frank Ocean", "11 things you didn't know about clickbait titles" ] user_ids = {} user_comments = { "asuser": [ "What's wrong with old things? Some old things are great.", "Hey, leave those kids alone.", "Hey Grandpa, I've got a problem. " ], "cwuser": ["I think that frog's dead", "Mmmm...flavory", "Hit the pinata"], "cbuser": [ "AAAAAAAAAAAAAAAAAAAA!", "Muriel, I'll save you!", "The things I do for love." ], "jruser": [ "You can't make me, I'm not moving an inch.", "Why don't we just ask someone?", "I was worried you guys got lost or something." ], "rsuser": [ "What are you talkin' about? Pinatas are awesome.", "Hit the pinata" ] } # create users for user_dict in users_dicts: user = User.register(user_dict["username"], user_dict["fname"], user_dict["lname"], user_dict["pw"], user_dict["email"]) response = urlopen(user_dict["url"]) img = response.read() avatar_image = images.resize(img, 150, 150, crop_to_fit=True) user.avatar_image = avatar_image user.bio = user_dict["bio"] user.put() user_ids[user.username] = user.key().id() # create posts for _ in range(random.randint(15, 25)): title = random.choice(titles) content = '\n'.join([ random.choice(lorem_ipsums) for x in range(random.randint(3, 10)) ]) response = urlopen(random.choice(imgs)) header_img = response.read() author_id = user_ids[random.choice(user_ids.keys())] # create post object post = Post(title=title, content=content, author=User.get_by_id(author_id), views=random.choice(range(25, 100))) post.create_snippet() post.put() try: PostPhoto.add_image_to_post(post, header_img) except images.BadImageError: print img_url # likes and comments users_who_like = random.sample(user_ids.keys(), random.randint(0, 5)) for key in users_who_like: post.like(user_ids[key]) comment = Comment(user=User.get_by_id(int(user_ids[key])), post=post, content=random.choice(user_comments[key])) comment.put() post.put()
def get(self): posts = Post.all().order('-created').run(limit=9) self.render("blog.html", posts=posts)
def get(self): posts = Post.all() posts.order('-created') self.render("postlist.html", posts=posts, username=self.get_username_from_cookie())
def get(self): posts = greetings = Post.all().order('-created') self.render('front.html', posts=greetings)