-
-
Save porterjamesj/6076205 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding: utf-8 -*- | |
from flask import Flask | |
from flaskext.sqlalchemy import SQLAlchemy | |
from werkzeug.security import generate_password_hash | |
from werkzeug.security import check_password_hash | |
from sqlalchemy.orm.exc import NoResultFound | |
app = Flask(__name__) | |
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/testertest.db' | |
db = SQLAlchemy(app) | |
db.session.execute('PRAGMA foreign_keys=ON;') | |
class User(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
username = db.Column(db.String(80), nullable=False, unique=True) | |
password = db.Column(db.String(120), nullable=False) | |
def __init__(self, username, password): | |
self.username = username | |
if not self.isPwHashed(password): | |
self.password = self.hashPassword(password) | |
else: | |
self.password = password | |
def hashPassword(self, password): | |
return generate_password_hash(password) | |
def checkPassword(self, password): | |
if not self.isPwHashed(self.password): | |
raise ValueError('Calling checkPassword but self.password is not hashed') | |
return check_password_hash(self.password, password) | |
def isPwHashed(self, password): | |
try: | |
algo, salt, pw = password.split('$') | |
if not algo.startswith('sha'): | |
raise Exception | |
except: | |
return False | |
else: | |
return True | |
def __repr__(self): | |
return '<User %r>' % self.username | |
def __str__(self): | |
return '%s' %(self.username) | |
class BlogEntry(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(255), unique=True, nullable=False) | |
creation_date = db.Column(db.DateTime, nullable=False) | |
modified_date = db.Column(db.DateTime, nullable=False) | |
topic = db.Column(db.String(80), nullable=False) | |
payload = db.Column(db.Text, nullable=False) | |
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) | |
#user_id = db.Column(db.Integer, nullable=False) | |
def __init__(self, name, creation_date, modified_date, topic, payload, user_id): | |
self.name = name | |
self.creation_date = creation_date | |
self.modified_date = modified_date | |
self.topic = topic | |
self.payload = payload | |
self.user_id = user_id | |
def __repr__(self): | |
return ( | |
'<%s(name="%s", creation_date="%s", modified_date="%s", topic="%s", user_id="%s") object at %s>' | |
%(self.__class__.__name__, self.name, self.creation_date, self.modified_date, self.topic, self.user_id, hex(id(self))) | |
) | |
def __str__(self): | |
return self.payload | |
if __name__ == '__main__': | |
db.create_all() | |
user = User('testuser', 'testpassword') | |
db.session.add(user) | |
db.session.commit() | |
import datetime | |
date = datetime.datetime.now() | |
blog_entry = BlogEntry('test name', date, date, 'test topic', 'test payload', 'lalelu') | |
db.session.add(blog_entry) | |
db.session.commit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment