SlideShare uma empresa Scribd logo
Quokka CMS - Content Management with Flask and Mongo #tdc2014
Bruno Rocha
@rochacbruno (everywhere)
github.com/rochacbruno
brunorocha.org
pythonhub.com
Who?
Why not Plone ?
Features
● Organização de conteúdo
○ Canais, Categorias, Tags, Slugs, Redirects
● Criação e edição de conteúdo
○ Formulários, API, crawlers
● Controle de acesso e permissões
○ RBAC, Multi autores
● Indexação e busca
● Interação social
○ login, comments, share
● Recomendação
● Versionamento
● Multimedia
● Extensões/Plugins
● Instalação automatizada
● Temas!!!
Where it hurts?
● Flexibilidade
○ Campos customizados
○ Validadores customizados
● Esquema de banco de dados
○ Schema migrations
● Código único
○ Incluir novas features para sites específicos sem
quebrar o source e a modelagem do banco
● Performance
○ Manter a performance sem precisar de engenharia
de denormalização
Relacional
Postgres hstore… maybe...
CMS(Produto)
+ Zope Framework
+ Zodb = NoSQL
Full Stack
Framework
Micro Framework
Baterias incluídas, com
“overhead”. (tem muito mais do
que o necessário e não é fácil
refinar e exige conhecimento de
Zope)
Faz as escolhas por você
ORM, Templates, Organização
de arquivos, organização de
settings.
Mais escolhas = controle
Trabalha bem com NoSQL
Crescimento gradativo
WHY
?
● Leve
● Flexivel (Schema less) = No migrations! :)
● JSON (Python {}, JavaScript {})
● Aggregation Framework / Pipelines
It is not a framework, it is a pattern!
Good intentions
your_app.py
flask.ext.*
from flask import Flask
from flask.ext.security import Security
from flask.ext.admin import Admin
from somewhere.db.models import UserDatastore
from somewhere.views import indexpage
def create_app(**config):
app = Flask(“myapp”)
app.config_from_object(config)
Admin(app)
Security(app, UserDatastore)
app.add_url_rule(“/index/<something>”, view_func=indexpage)
return app
if __name__ == “__main__”:
app = create_app(SECRET_KEY=”XYZ”)
app.run()
your_app.py
$ pip install flask, flask-security, flask-admin, xpto-orm
Blueprints
Um Blueprint funciona de forma similar a um objeto Flask, mas na verdade não
é uma aplicação, mas sim um projeto de como construir ou extender uma
aplicação
from somewhere import blog_extension
def create_app(**config):
app = Flask(“myapp”)
...
app.register_blueprint(blog_extension)
return app
from flask import Blueprint, render_template
blog_extension = Blueprint(“my_blog_extension”)
blog_extension.endpoint = “/blog”
blog_extension.templates_folder = “path/to/blog_templates”
blog_extension.static_folder = “path/to/blog_static”
@blog_extension.route(“/index”)
def blog():
return render_template(“blog.html”)
● flask.ext.
○ Security
○ Social-login
○ Rest
○ Mail
○ Admin
○ Gravatar
○ Cache
○ SQLAlchemy
○ MongoEngine
○ RiakAlchemy
○ Assets
○ Script
○ Celery
○ Mobile
○ Testing
○ Babel
○ WTForms
○ ...
Seeufossevocêeuusaria….
● Flask subclass
○ class MyOwnFlask(Flask)
● application factory
○ app = create_app(**config)
○ evita import circular
● Blueprints
○ Mesmo que seja uma one-page-app
● Flask-Admin
○ Modular, insira qualquer view no admin, crud completo, actions, filters
● Flask-Security
○ Login, Logout, Lembrar senha, Register, Access control, permissions
● Flask-script
○ python manage.py faça_me_um_sanduiche
● app.config_from_envvar
○ Settings desacoplado da app
○ export APP_SETTINGS=”/path/to/settings.cfg”
○ app.config_from_envvar(“APP_SETTINGS”)
● Admin customizavel e extensível
● Import/Export
● Controle de acesso
● Scripts para deploy, teste, execução
● Extensível através de módulos
● Multi temas
● Canais e urls amigavéis
● Celery ready!
● Rest API
● Multimedia management (Gallery, Images)
● Configurações flexiveis via admin
● MongoDB
Abra uma issue ou mande um pull request em
http://www.quokkaproject.org
CONTENT ADMIN
CONTENT EDITORS (markdown / html)
MEDIA MANAGEMENT
MODULES
Next step: Quokka as a Framework on top of Flask
$ quokka start_project
$ quokka start_module
$ quokka start_theme
$ quokka register theme
$ quokka install theme
$ quokka register module
$ quokka install module
$ quokka deploy --heroku --user….
Thank you!
www.quokkaproject.org

Mais conteúdo relacionado

PDF
Flask for CMS/App Framework development.
PDF
PyData - Consumindo e publicando web APIs com Python
PDF
Web Offline
PDF
Mean Stack
PPTX
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
PDF
Escrevendo modulos python com rust
PDF
Testando uma aplicação AngularJS utilizando o Karma
PDF
Como fazer boas libs
Flask for CMS/App Framework development.
PyData - Consumindo e publicando web APIs com Python
Web Offline
Mean Stack
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Escrevendo modulos python com rust
Testando uma aplicação AngularJS utilizando o Karma
Como fazer boas libs

Mais procurados (20)

PDF
Guia do F12: Chrome Developer Tools
PPTX
Grails
PPT
Minicurso Play Framework - Tão fácil que nem parece Java
PDF
Zend Framework 1.11
PPTX
Usando PushWoosh com Ionic Framework
PDF
PDF
Ionic workshop
PDF
Angular js
PDF
Criação de aplicações web com python
PDF
firefox-os-front-end
PDF
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
PDF
Mini curso: Ionic Framework
PPTX
Chega de lendas! JavaFX em Android
PDF
Iniciando com Yeoman, Grunt e Bower
PDF
JSF 2.0 e ScrumToys
PDF
React - Biblioteca Javascript para criação de UI
PDF
Começando com Zend Framework 2
PPTX
Docker API Client with PHP and PYTHON
PDF
Introdução à MEAN Stack
PPT
Zk Framework
Guia do F12: Chrome Developer Tools
Grails
Minicurso Play Framework - Tão fácil que nem parece Java
Zend Framework 1.11
Usando PushWoosh com Ionic Framework
Ionic workshop
Angular js
Criação de aplicações web com python
firefox-os-front-end
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
Mini curso: Ionic Framework
Chega de lendas! JavaFX em Android
Iniciando com Yeoman, Grunt e Bower
JSF 2.0 e ScrumToys
React - Biblioteca Javascript para criação de UI
Começando com Zend Framework 2
Docker API Client with PHP and PYTHON
Introdução à MEAN Stack
Zk Framework
Anúncio

Destaque (16)

PDF
Web Crawling Modeling with Scrapy Models #TDC2014
PDF
APIs de Visualização em Python
PDF
Ensaio sobre testes automatizados
PDF
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
PDF
Python, the next Brazilian generation
ODP
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
PDF
Testando Aplicações Django: Quando, Como e Onde?
PDF
TDD com Python
PDF
Scrapy workshop
PPTX
Spider进化论
PPTX
Scrapy.for.dummies
PDF
Python Flask app deployed to OPenShift using Wercker CI
PDF
Downloading the internet with Python + Scrapy
PDF
Python, web scraping and content management: Scrapy and Django
PDF
Scraping the web with python
PDF
Curso de Python e Django
Web Crawling Modeling with Scrapy Models #TDC2014
APIs de Visualização em Python
Ensaio sobre testes automatizados
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Python, the next Brazilian generation
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
Testando Aplicações Django: Quando, Como e Onde?
TDD com Python
Scrapy workshop
Spider进化论
Scrapy.for.dummies
Python Flask app deployed to OPenShift using Wercker CI
Downloading the internet with Python + Scrapy
Python, web scraping and content management: Scrapy and Django
Scraping the web with python
Curso de Python e Django
Anúncio

Semelhante a Quokka CMS - Content Management with Flask and Mongo #tdc2014 (20)

PDF
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
PDF
Search Plugins para Firefox
PDF
Framework web 01 - Aula UTFPR 2018
PDF
PDF
Introdução à Programação Web com Angular
PPTX
Desenvolvimento Ágil com Grails.
PDF
Developing_Browsers_Extensions
PDF
Django para portais de alta visibilidade. tdc 2013
KEY
Django - Desenvolvimento web ágil com Python
KEY
Python 08
PDF
Qualidade em projetos PHP - SoLiSC 2011
PDF
Desenvolvendo com Dojo Toolkit
PDF
Cloudformation
PDF
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
PDF
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
PDF
Desenvolvimento Web com Simfony Framework.
PDF
Site estático + Hospedagem Gratuita.pdf
PDF
Zend Framework: Reuso e extensão de componentes para fácil manutenção
KEY
Python 06
PDF
Palestra sobre CCK Seblod 1.8
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Search Plugins para Firefox
Framework web 01 - Aula UTFPR 2018
Introdução à Programação Web com Angular
Desenvolvimento Ágil com Grails.
Developing_Browsers_Extensions
Django para portais de alta visibilidade. tdc 2013
Django - Desenvolvimento web ágil com Python
Python 08
Qualidade em projetos PHP - SoLiSC 2011
Desenvolvendo com Dojo Toolkit
Cloudformation
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
Desenvolvimento Web com Simfony Framework.
Site estático + Hospedagem Gratuita.pdf
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Python 06
Palestra sobre CCK Seblod 1.8

Mais de Bruno Rocha (11)

PDF
The quality of the python ecosystem - and how we can protect it!
PDF
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
PPTX
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
PDF
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
PDF
Carreira de Programador e Mercado de Trabalho
PDF
What The Flask? and how to use it with some Google APIs
PDF
Desenvolvendo mvp com python
PDF
Guia alimentar de dietas vegetarianas para adultos
ODP
Desmistificando web2py - #TDC2011
PDF
Using web2py's DAL in other projects or frameworks
PPT
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
The quality of the python ecosystem - and how we can protect it!
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
Carreira de Programador e Mercado de Trabalho
What The Flask? and how to use it with some Google APIs
Desenvolvendo mvp com python
Guia alimentar de dietas vegetarianas para adultos
Desmistificando web2py - #TDC2011
Using web2py's DAL in other projects or frameworks
Desenvolvimento web ágil com Python e web2py #qconsp #qcon

Último (9)

PDF
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
PPTX
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
PDF
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
PDF
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
PDF
Certificado de Conclusão Jornada Inteligência Artificial
PPTX
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PPTX
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA
PPTX
TURMA modelo de modelo apresentação 4DE.pptx
PDF
Metodologias ágeis - Slides - aulas 1 a 5.pdf
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
Certificado de Conclusão Jornada Inteligência Artificial
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA
TURMA modelo de modelo apresentação 4DE.pptx
Metodologias ágeis - Slides - aulas 1 a 5.pdf

Quokka CMS - Content Management with Flask and Mongo #tdc2014

  • 4. Features ● Organização de conteúdo ○ Canais, Categorias, Tags, Slugs, Redirects ● Criação e edição de conteúdo ○ Formulários, API, crawlers ● Controle de acesso e permissões ○ RBAC, Multi autores ● Indexação e busca ● Interação social ○ login, comments, share ● Recomendação ● Versionamento ● Multimedia ● Extensões/Plugins ● Instalação automatizada ● Temas!!!
  • 5. Where it hurts? ● Flexibilidade ○ Campos customizados ○ Validadores customizados ● Esquema de banco de dados ○ Schema migrations ● Código único ○ Incluir novas features para sites específicos sem quebrar o source e a modelagem do banco ● Performance ○ Manter a performance sem precisar de engenharia de denormalização Relacional Postgres hstore… maybe...
  • 6. CMS(Produto) + Zope Framework + Zodb = NoSQL Full Stack Framework Micro Framework Baterias incluídas, com “overhead”. (tem muito mais do que o necessário e não é fácil refinar e exige conhecimento de Zope) Faz as escolhas por você ORM, Templates, Organização de arquivos, organização de settings. Mais escolhas = controle Trabalha bem com NoSQL Crescimento gradativo
  • 7. WHY ? ● Leve ● Flexivel (Schema less) = No migrations! :) ● JSON (Python {}, JavaScript {}) ● Aggregation Framework / Pipelines
  • 8. It is not a framework, it is a pattern! Good intentions your_app.py flask.ext.*
  • 9. from flask import Flask from flask.ext.security import Security from flask.ext.admin import Admin from somewhere.db.models import UserDatastore from somewhere.views import indexpage def create_app(**config): app = Flask(“myapp”) app.config_from_object(config) Admin(app) Security(app, UserDatastore) app.add_url_rule(“/index/<something>”, view_func=indexpage) return app if __name__ == “__main__”: app = create_app(SECRET_KEY=”XYZ”) app.run() your_app.py $ pip install flask, flask-security, flask-admin, xpto-orm
  • 10. Blueprints Um Blueprint funciona de forma similar a um objeto Flask, mas na verdade não é uma aplicação, mas sim um projeto de como construir ou extender uma aplicação from somewhere import blog_extension def create_app(**config): app = Flask(“myapp”) ... app.register_blueprint(blog_extension) return app from flask import Blueprint, render_template blog_extension = Blueprint(“my_blog_extension”) blog_extension.endpoint = “/blog” blog_extension.templates_folder = “path/to/blog_templates” blog_extension.static_folder = “path/to/blog_static” @blog_extension.route(“/index”) def blog(): return render_template(“blog.html”)
  • 11. ● flask.ext. ○ Security ○ Social-login ○ Rest ○ Mail ○ Admin ○ Gravatar ○ Cache ○ SQLAlchemy ○ MongoEngine ○ RiakAlchemy ○ Assets ○ Script ○ Celery ○ Mobile ○ Testing ○ Babel ○ WTForms ○ ...
  • 12. Seeufossevocêeuusaria…. ● Flask subclass ○ class MyOwnFlask(Flask) ● application factory ○ app = create_app(**config) ○ evita import circular ● Blueprints ○ Mesmo que seja uma one-page-app ● Flask-Admin ○ Modular, insira qualquer view no admin, crud completo, actions, filters ● Flask-Security ○ Login, Logout, Lembrar senha, Register, Access control, permissions ● Flask-script ○ python manage.py faça_me_um_sanduiche ● app.config_from_envvar ○ Settings desacoplado da app ○ export APP_SETTINGS=”/path/to/settings.cfg” ○ app.config_from_envvar(“APP_SETTINGS”)
  • 13. ● Admin customizavel e extensível ● Import/Export ● Controle de acesso ● Scripts para deploy, teste, execução ● Extensível através de módulos ● Multi temas ● Canais e urls amigavéis ● Celery ready! ● Rest API ● Multimedia management (Gallery, Images) ● Configurações flexiveis via admin ● MongoDB Abra uma issue ou mande um pull request em http://www.quokkaproject.org
  • 18. Next step: Quokka as a Framework on top of Flask $ quokka start_project $ quokka start_module $ quokka start_theme $ quokka register theme $ quokka install theme $ quokka register module $ quokka install module $ quokka deploy --heroku --user….