flask-note icon indicating copy to clipboard operation
flask-note copied to clipboard

PyConES16 workshop where Evernote is replicated through Flask

  • PyConES16: Flask-note (Clone of Evernote with Flask and Markdown)

** [[http://flask-note.programadorwebvalencia.com/][DEMO]]

#+CAPTION: Flask-note #+NAME: Flask-note [[file:sketching/target.jpg]]

** Install

*** Flask

#+BEGIN_SRC bash mkdir flask-note cd flask-note pip install virtualenv virtualenv ENV source ENV/bin/activate pip install Flask pip install markdown #+END_SRC

*** SQLite

**** OS X #+BEGIN_SRC bash brew install sqlite #+END_SRC

**** Ubuntu #+BEGIN_SRC bash sudo apt-get update sudo apt-get install sqlite3 libsqlite3-dev #+END_SRC

*** Flask_sqlalchemy

#+BEGIN_SRC bash pip install flask_sqlalchemy #+END_SRC

** Create Flask

Create app.py

#+BEGIN_SRC python from flask import Flask from functools import wraps app = Flask(name)

def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): if 'user_id' not in session: session.clear() return redirect(url_for('index')) return f(*args, **kwargs) return decorated_function

@app.route('/') def hello(): return 'Hello PyConES!'

if name == "main": app.run() #+END_SRC

#+BEGIN_SRC bash python app.py #+END_SRC

Open in your browser

http://127.0.0.1:5000/

** Create Database

Create database.py

#+BEGIN_SRC python from flask import Flask from flask_sqlalchemy import SQLAlchemy

app = Flask(name) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.sqlite' db = SQLAlchemy(app)

class User(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(100), unique=True) password = db.Column(db.String(32))

def __init__(self, email, password):
    self.email = email
    self.password = password

def __repr__(self):
    return '<User {email}>'.format(email=self.email)

class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), unique=True) text = db.Column(db.Text()) user_id = db.Column(db.Integer)

def __init__(self, title, text, user_id):
    self.title = title
    self.text = text
    self.user_id = user_id

def __repr__(self):
    return '<Note {title}>'.format(title=self.title)

#+END_SRC

#+BEGIN_SRC bash python from database import db db.create_all() exit() sqlite3 database.sqlite #+END_SRC

#+BEGIN_SRC sql INSERT INTO user VALUES (NULL, '[email protected]', '2016'); .exit #+END_SRC

** Future resource

master.html #+BEGIN_SRC html

Flask-note
{% block contain %} {% endblock %}
#+END_SRC