Esempio n. 1
0
    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())
Esempio n. 2
0
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    
Esempio n. 3
0
 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)
Esempio n. 4
0
    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)
Esempio n. 5
0
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()
Esempio n. 6
0
    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')
Esempio n. 7
0
 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)
Esempio n. 8
0
    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')
Esempio n. 9
0
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)
Esempio n. 10
0
    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)
Esempio n. 11
0
    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)
Esempio n. 12
0
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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
 def get(self, error=None):
     posts = Post.all().order('-created')
     self.render('front.html', posts=posts, error=error)
Esempio n. 16
0
 def test_post_all(self):
     self.create_post()
     posts = Post.all()
     self.assertEquals(1, len(posts))
Esempio n. 17
0
 def test_all_exception(self):
     Post.all()
     self.assertRaises(ApiException)
Esempio n. 18
0
 def test_post_all_empty(self):
     post = Post.all()
     self.assertEquals(0, len(post))
Esempio n. 19
0
 def test_post_all(self):
     self.create_post('001', 'username')
     posts = Post.all()
     self.assertEquals(1, len(posts))
Esempio n. 20
0
 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)
Esempio n. 21
0
 def get(self):
     posts = Post.all().order('-created')
     self.render('frontPost.html', posts=posts, username=self.user)
Esempio n. 22
0
 def get(self):
     posts = Post.all().order('-created')
     self.render('home.html', posts=posts)
Esempio n. 23
0
def render_posts(admin):
    post = Post()
    return render_template("posts.html" ,
            posts = post.all(pagination_info["from"],pagination_info["to"]),p = post,admin= False)
Esempio n. 24
0
    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()
Esempio n. 25
0
 def get(self):
     posts = Post.all().order('-created').run(limit=9)
     self.render("blog.html", posts=posts)
Esempio n. 26
0
 def get(self):
     posts = Post.all()
     posts.order('-created')
     self.render("postlist.html",
                 posts=posts,
                 username=self.get_username_from_cookie())
Esempio n. 27
0
 def get(self):
     posts = greetings = Post.all().order('-created')
     self.render('front.html', posts=greetings)