コード例 #1
0
ファイル: feed_handler.py プロジェクト: DaniGong/pyramid-blog
    def sitemaps(self):
        header = u'''<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.sitemaps.org/schemas/sitemap-image/1.1"
        xmlns:video="http://www.sitemaps.org/schemas/sitemap-video/1.1">\n'''
        footer = u'''</urlset>'''

        model = u'''<url><loc>%s</loc><changefreq>daily</changefreq></url>\n'''
        xmls = u''
        
        xmls += u"\n<!-- HOME -->\n"
        xmls += model%(u'http://renatopp.com')

        xmls += u"\n<!-- POSTS AND PAGES -->\n"
        posts = Session.query(Post).filter(Post.status=='Published').order_by(desc(Post.id)).all()
        for post in posts:
            if post.type == 'page':
                xmls += model%url('page', self.request, alias=post.alias)
            else:
                xmls += model%url('blog_entry', self.request, id=post.id, alias=post.alias)

        xmls += u"\n<!-- SNIPPETS -->\n"
        snippets = Session.query(Snippet).order_by(desc(Snippet.id)).all()
        for snippet in snippets:
            xmls += model%url('snippet_entry', self.request, id=snippet.id, alias=snippet.alias)
        
        return Response(header + xmls + footer)
コード例 #2
0
    def sitemaps(self):
        header = u'''<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.sitemaps.org/schemas/sitemap-image/1.1"
        xmlns:video="http://www.sitemaps.org/schemas/sitemap-video/1.1">\n'''
        footer = u'''</urlset>'''

        model = u'''<url><loc>%s</loc><changefreq>daily</changefreq></url>\n'''
        xmls = u''

        xmls += u"\n<!-- HOME -->\n"
        xmls += model % (u'http://renatopp.com')

        xmls += u"\n<!-- POSTS AND PAGES -->\n"
        posts = Session.query(Post).filter(
            Post.status == 'Published').order_by(desc(Post.id)).all()
        for post in posts:
            if post.type == 'page':
                xmls += model % url('page', self.request, alias=post.alias)
            else:
                xmls += model % url(
                    'blog_entry', self.request, id=post.id, alias=post.alias)

        xmls += u"\n<!-- SNIPPETS -->\n"
        snippets = Session.query(Snippet).order_by(desc(Snippet.id)).all()
        for snippet in snippets:
            xmls += model % url('snippet_entry',
                                self.request,
                                id=snippet.id,
                                alias=snippet.alias)

        return Response(header + xmls + footer)
コード例 #3
0
ファイル: user_handler.py プロジェクト: jbcnrlz/pyramid-blog
    def update(self):
        item = Session.query(self.model).get(self.get_id())
        params = self.request.params.copy()
    
        k = 'User-%d-password'%item.id
        if params and params[k] != item.password:
            if not params[k]:
                params[k] = item.password
            else:
                params[k] = self.model.get_pass_hash(params[k])

        form = FieldSet(item, data=params or None)
        self.model._configure_form(form)

        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_update(item, form, params)
                Session.add(form.model)
                self.request.session.flash(u'Item atualizado com sucesso.', 'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos', 'error')

        params = dict(form=form, url_base=self.url_base)
        
        if self.renderer_base:
            renderer = self.renderer_base+'/edit.jinja2'
        else:
            renderer = '/bases/crud_edit.jinja2'

        return self.render(renderer, params)
コード例 #4
0
ファイル: post_handler.py プロジェクト: jbcnrlz/pyramid-blog
    def create(self):
        form = FieldSet(self.model, data=self.request.POST or None)
        self.model._configure_form(form)
        if self.request.POST:
            if form.validate():
                form.sync()
                self.model._before_create(form, self.request.POST)
                Session.add(form.model)
                self.request.session.flash(u'Item incluído com sucesso.', 'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos.', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #5
0
ファイル: __init__.py プロジェクト: nskrypnik/pyramid-blog
    def _do_create(self):
        form = FieldSet(self.model, data=self.request.params or None)
        self.model._configure_form(form)
        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_create(form, self.request.params)
                Session.add(form.model)
                self.request.session.flash(u'Item successfully added.', 'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Invalid data.', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #6
0
    def _do_create(self):
        form = FieldSet(self.model, data=self.request.params or None)
        self.model._configure_form(form)
        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_create(form, self.request.params)
                Session.add(form.model)
                self.request.session.flash(u'Item successfully added.',
                                           'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Invalid data.', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #7
0
    def articles(self):
        feed = feedgenerator.Rss201rev2Feed(
            title="Renatopp's - Feed dos Artigos",
            link=self.request.host_url,
            description=
            "Artigos do super ultra hyper mega site http://renatopp.com",
            author_name=self.author)

        posts = Session.query(Post).order_by(desc(
            Post.id)).filter(Post.type == 'article').filter(
                Post.status == 'Published').limit(10).all()
        for post in posts:
            summary = post.content[:200].replace('\n', '<br>')
            categorys = ', '.join([c.name
                                   for c in post.categorys]) or 'Sem Categoria'
            description = u"""
            %s (...)<br><br>
            Categorias: %s<br>
            Visite <a href="http://renatopp.com">renatopp.com</a>
            """ % (summary, categorys)

            feed.add_item(title=post.title,
                          link=url('blog_entry',
                                   self.request,
                                   id=post.id,
                                   alias=post.alias),
                          description=description,
                          author_name=self.author)
        return Response(feed.writeString('utf-8'))
コード例 #8
0
    def snippets(self):
        feed = feedgenerator.Rss201rev2Feed(
            title="Renatopp's - Feed dos Snippets",
            link=self.request.host_url,
            description=
            "Snippets do super ultra hyper mega site http://renatopp.com",
            author_name=self.author)

        snippets = Session.query(Snippet).order_by(desc(
            Snippet.id)).limit(10).all()
        for snippet in snippets:
            summary = snippet.summary or u'Sem descrição'
            language = snippet.language
            category = ', '.join([c.name for c in snippet.categorys
                                  ]) or 'Sem Categoria'

            description = u"""
            %s<br>
            <br>
            Linguagem: %s <br>
            Categorias: %s <br>
            Visite o site para mais informações - 
            <a href="http://renatopp.com">renatopp.com</a>.
            """ % (summary, language, category)

            feed.add_item(title=snippet.title,
                          link=url('snippet_entry',
                                   self.request,
                                   id=snippet.id,
                                   alias=snippet.alias),
                          description=description,
                          author_name="Renato Pereira")

        return Response(feed.writeString('utf-8'))
コード例 #9
0
ファイル: __init__.py プロジェクト: jbcnrlz/pyramid-blog
    def _do_update(self):
        item = Session.query(self.model).get(self.get_id())
        
        form = FieldSet(item, data=self.request.params or None)
        self.model._configure_form(form)
        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_update(item, form, self.request.params)
                Session.add(form.model)
                self.request.session.flash(u'Item atualizado com sucesso.', 'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #10
0
ファイル: feed_handler.py プロジェクト: DaniGong/pyramid-blog
    def articles(self):
        feed = feedgenerator.Rss201rev2Feed(
            title="Renatopp's - Feed dos Artigos",
            link=self.request.host_url,
            description="Artigos do super ultra hyper mega site http://renatopp.com",
            author_name=self.author
        )

        posts = Session.query(Post).order_by(desc(Post.id)).filter(Post.type=='article').filter(Post.status=='Published').limit(10).all()
        for post in posts:
            summary = post.content[:200].replace('\n', '<br>')
            categorys = ', '.join([c.name for c in post.categorys]) or 'Sem Categoria'
            description = u"""
            %s (...)<br><br>
            Categorias: %s<br>
            Visite <a href="http://renatopp.com">renatopp.com</a>
            """ % (summary, categorys)

            feed.add_item(
                title=post.title,
                link=url('blog_entry', self.request, id=post.id, alias=post.alias), 
                description=description,
                author_name=self.author
            )
        return Response(feed.writeString('utf-8'))
コード例 #11
0
ファイル: user_handler.py プロジェクト: DaniGong/pyramid-blog
    def login(self):
        form = FieldSet(User, data=self.request.POST if self.request.POST else None)
        form.configure(
            include=[form.email, form.password],
            options=[
                form.password.password()
            ]
        )

        if self.request.POST:
            user = Session.query(User).filter(
                (User.email==self.request.POST['User--email']) &
                (User.password==User.get_pass_hash(self.request.POST['User--password']))
            ).first()

            if user is not None:
                session = self.request.session
                session['user_id'] = user.id
                session['user_name'] = user.nickname
                session['user_email'] = user.email

                return HTTPFound(location=self.request.GET.get('back_to', url('post', self.request)))
        
        print '\n\n\n\n\n'
        return dict(form=form)
コード例 #12
0
ファイル: feed_handler.py プロジェクト: DaniGong/pyramid-blog
    def snippets(self):
        feed = feedgenerator.Rss201rev2Feed(
            title="Renatopp's - Feed dos Snippets",
            link=self.request.host_url,
            description="Snippets do super ultra hyper mega site http://renatopp.com",
            author_name=self.author
        )

        snippets = Session.query(Snippet).order_by(desc(Snippet.id)).limit(10).all()
        for snippet in snippets:
            summary = snippet.summary or u'Sem descrição'
            language = snippet.language
            category = ', '.join([c.name for c in snippet.categorys]) or 'Sem Categoria'

            description = u"""
            %s<br>
            <br>
            Linguagem: %s <br>
            Categorias: %s <br>
            Visite o site para mais informações - 
            <a href="http://renatopp.com">renatopp.com</a>.
            """ % (summary, language, category)

            feed.add_item(
                title=snippet.title,
                link=url('snippet_entry', self.request, id=snippet.id, alias=snippet.alias), 
                description=description,
                author_name="Renato Pereira"
            )

        return Response(feed.writeString('utf-8'))
コード例 #13
0
    def page(self):
        query = Session.query(Post)
        query = query.filter(Post.alias == self.request.matchdict.get('alias'))
        query = query.filter(Post.type == 'page')
        query = query.filter(Post.status == 'Published')

        post = query.first()
        return dict(post=post)
コード例 #14
0
    def _do_update(self):
        item = Session.query(self.model).get(self.get_id())

        form = FieldSet(item, data=self.request.params or None)
        self.model._configure_form(form)
        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_update(item, form, self.request.params)
                Session.add(form.model)
                self.request.session.flash(u'Item atualizado com sucesso.',
                                           'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #15
0
ファイル: blog_handler.py プロジェクト: DaniGong/pyramid-blog
    def page(self):
        query = Session.query(Post)
        query = query.filter(Post.alias==self.request.matchdict.get('alias'))
        query = query.filter(Post.type=='page')
        query = query.filter(Post.status=='Published')

        post = query.first()
        return dict(post=post)
コード例 #16
0
    def create(self):
        if self.auth():
            return HTTPFound(location=self.urlLogin)

        form = FieldSet(self.model, data=self.request.POST or None)
        self.model._configure_form(form)
        if self.request.POST:
            if form.validate():
                form.sync()
                self.model._before_create(form, self.request.POST)
                Session.add(form.model)
                self.request.session.flash(u'Item incluído com sucesso.', 'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos.', 'error')

        return dict(form=form, url_base=self.url_base)
コード例 #17
0
    def _do_index(self):
        page = self.request.GET.get('page', 1)
        query = Session.query(self.model).order_by(self.order_by).all()
        items = Page(query, page=page, items_per_page=10)

        grid = Grid(self.model, items)
        self.model._configure_grid(grid)

        return dict(grid=grid, items=items, url_base=self.url_base)
コード例 #18
0
ファイル: __init__.py プロジェクト: nskrypnik/pyramid-blog
    def _do_index(self):
        page = self.request.GET.get('page', 1)
        query = Session.query(self.model).order_by(self.order_by).all()
        items = Page(query, page=page, items_per_page=10)

        grid = Grid(self.model, items)
        self.model._configure_grid(grid)
        
        return dict(grid=grid, items=items, url_base=self.url_base)
コード例 #19
0
ファイル: blog_handler.py プロジェクト: DaniGong/pyramid-blog
    def snippet_view(self):
        snippet = Session.query(Snippet).get(self.get_id())
        
        try:
            lexer = pygments.lexers.get_lexer_by_name(snippet.language)
        except ValueError:
            lexer = pygments.lexers.TextLexer()
        DEFAULT = pygments.formatters.HtmlFormatter(noclasses=False)

        return dict(snippet=snippet, code=pygments.highlight(snippet.content, lexer, DEFAULT))
コード例 #20
0
ファイル: blog_handler.py プロジェクト: DaniGong/pyramid-blog
    def __get_posts_query(self, filter_type=None):
        query = Session.query(Post)
        query = query.filter(Post.status=='Published')
        if filter_type:
            query = query.filter(Post.type==filter_type)
        else:
            query = query.filter(Post.type!='page')
            
        query = query.order_by(desc(Post.id))

        return query
コード例 #21
0
    def snippet_view(self):
        snippet = Session.query(Snippet).get(self.get_id())

        try:
            lexer = pygments.lexers.get_lexer_by_name(snippet.language)
        except ValueError:
            lexer = pygments.lexers.TextLexer()
        DEFAULT = pygments.formatters.HtmlFormatter(noclasses=False)

        return dict(snippet=snippet,
                    code=pygments.highlight(snippet.content, lexer, DEFAULT))
コード例 #22
0
    def __get_posts_query(self, filter_type=None):
        query = Session.query(Post)
        query = query.filter(Post.status == 'Published')
        if filter_type:
            query = query.filter(Post.type == filter_type)
        else:
            query = query.filter(Post.type != 'page')

        query = query.order_by(desc(Post.id))

        return query
コード例 #23
0
ファイル: blog_handler.py プロジェクト: jbcnrlz/pyramid-blog
 def index(self):
     '''
     display:
         front: shows the first post in a large box
         list: shows all posts in a small box
     '''
     page = self.request.params.get('page', '1')
     query = Session.query(Post).filter(Post.status=='Published').order_by(desc(Post.id)).all()
     posts = Page(query, page=page, items_per_page=10)
 
     display = 'front' if page=='1' else 'list'
     
     return self.render('/controllers/blogs/index.jinja2', dict(display=display, posts=posts))
コード例 #24
0
ファイル: blog_handler.py プロジェクト: DaniGong/pyramid-blog
    def snippet_index(self):
        '''
        display:
            front: shows the first post in a large box
            list: shows all posts in a small box
        '''
        query = Session.query(Snippet).order_by(desc(Snippet.id))

        page = self.request.params.get('page', '1')
        snippets = Page(query, page=page, items_per_page=6)
    
        display = 'front' if page=='1' else 'list'
        
        return self.render('/controllers/blogs/snippet_index.jinja2', dict(display=display, snippets=snippets))
コード例 #25
0
    def snippet_index(self):
        '''
        display:
            front: shows the first post in a large box
            list: shows all posts in a small box
        '''
        query = Session.query(Snippet).order_by(desc(Snippet.id))

        page = self.request.params.get('page', '1')
        snippets = Page(query, page=page, items_per_page=6)

        display = 'front' if page == '1' else 'list'

        return self.render('/controllers/blogs/snippet_index.jinja2',
                           dict(display=display, snippets=snippets))
コード例 #26
0
    def update(self):
        if self.auth():
            return HTTPFound(location=self.urlLogin)

        item = Session.query(self.model).get(self.get_id())
        params = self.request.params.copy()

        k = 'User-%d-password' % item.id
        if params and params[k] != item.password:
            if not params[k]:
                params[k] = item.password
            else:
                params[k] = self.model.get_pass_hash(params[k])

        form = FieldSet(item, data=params or None)
        self.model._configure_form(form)

        if self.request.params:
            if form.validate():
                form.sync()
                self.model._before_update(item, form, params)
                Session.add(form.model)
                self.request.session.flash(u'Item atualizado com sucesso.',
                                           'success')
                return HTTPFound(location=g.url(self.url_base))
            else:
                self.request.session.flash(u'Dados inválidos', 'error')

        params = dict(form=form, url_base=self.url_base)

        if self.renderer_base:
            renderer = self.renderer_base + '/edit.jinja2'
        else:
            renderer = '/bases/crud_edit.jinja2'

        return self.render(renderer, params)
コード例 #27
0
    def index(self):
        if self.auth():
            return HTTPFound(location=self.urlLogin)

        page = self.request.params.get('page', '1')
        query = Session.query(Post).order_by(desc(Post.id))
        if self.request.params.get('type'):
            query = query.filter(Post.type=='page')
        else:
            query = query.filter(Post.type!='page')
        items = Page(query, page=page, items_per_page=10)
        
        grid = Grid(self.model, items)
        Post._configure_grid(grid)
            
        return self.render('/bases/crud_index.jinja2', dict(grid=grid, items=items, url_base=self.url_base))
コード例 #28
0
    def login(self):
        form = FieldSet(User,
                        data=self.request.POST if self.request.POST else None)
        form.configure(include=[form.email, form.password],
                       options=[form.password.password()])

        if self.request.POST:
            user = Session.query(User).filter(
                (User.email == self.request.POST['User--email'])
                & (User.password == User.get_pass_hash(
                    self.request.POST['User--password']))).first()

            if user is not None:
                session = self.request.session
                session['user_id'] = user.id
                session['user_name'] = user.nickname
                session['user_email'] = user.email

                return HTTPFound(location=self.request.GET.get(
                    'back_to', url('post', self.request)))

        print '\n\n\n\n\n'
        return dict(form=form)
コード例 #29
0
ファイル: blog_handler.py プロジェクト: DaniGong/pyramid-blog
 def view(self):
     post = Session.query(Post).get(self.get_id())
     return dict(post=post)
コード例 #30
0
 def view(self):
     if self.auth():
         return HTTPFound(location=self.urlLogin)
         
     post = Session.query(Post).get(self.get_id())
     return dict(post=post)
コード例 #31
0
 def _do_delete(self):
     item = Session.query(self.model).get(self.get_id())
     Session.delete(item)
     self.request.session.flash(u'Item deleted successfully.', 'success')
     return HTTPFound(location=g.url(self.url_base))
コード例 #32
0
 def view(self):
     post = Session.query(Post).get(self.get_id())
     return dict(post=post)
コード例 #33
0
ファイル: __init__.py プロジェクト: nskrypnik/pyramid-blog
 def _do_delete(self):
     item = Session.query(self.model).get(self.get_id())
     Session.delete(item)
     self.request.session.flash(u'Item deleted successfully.', 'success')
     return HTTPFound(location=g.url(self.url_base))