Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@porterjamesj
Forked from robin-wittler/gist:1643718
Created July 25, 2013 01:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save porterjamesj/6076205 to your computer and use it in GitHub Desktop.
Save porterjamesj/6076205 to your computer and use it in GitHub Desktop.
#!/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