Skip to content

Commit 4080f88

Browse files
author
zjtang
committed
first commit
0 parents  commit 4080f88

File tree

416 files changed

+69925
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

416 files changed

+69925
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.pyc
2+
*.db

ezBlog.py

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#!/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
from flask import Flask, request, render_template, redirect
5+
from flask_sqlalchemy import SQLAlchemy
6+
from flask_wtf.csrf import CSRFProtect
7+
from flask_login import LoginManager, login_user, logout_user, current_user, login_required
8+
from flask_login import UserMixin
9+
from flask_blogging import SQLAStorage, BloggingEngine
10+
from flask_wtf import FlaskForm
11+
from wtforms import StringField, BooleanField, PasswordField, TextAreaField, SubmitField
12+
from wtforms.validators import DataRequired
13+
14+
app = Flask(__name__)
15+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data/ezBlog.db'
16+
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
17+
app.config["SECRET_KEY"] = "ezBlog" # for WTF-forms and login
18+
app.config["BLOGGING_URL_PREFIX"] = "/blog"
19+
app.config["BLOGGING_SITEURL"] = "http://traceme.space"
20+
app.config["BLOGGING_SITENAME"] = "ezBlog"
21+
app.config["FILEUPLOAD_IMG_FOLDER"] = "data/img"
22+
app.config["FILEUPLOAD_PREFIX"] = "/fileupd"
23+
app.config["FILEUPLOAD_ALLOWED_EXTENSIONS"] = ["png", "jpg", "jpeg", "gif"]
24+
app.config["BLOGGING_ALLOW_FILEUPLOAD"] = True
25+
26+
db = SQLAlchemy(app)
27+
28+
class User(db.Model, UserMixin):
29+
__tablename__ = 'user'
30+
id = db.Column(db.Integer, primary_key=True)
31+
username = db.Column(db.String(32), unique=True)
32+
password = db.Column(db.String(64), unique=True)
33+
#posts = blog_db.relationship(, backref = , lazy = ) ## posts blongs to cur user
34+
def __init__(self, username, password):
35+
self.username = username
36+
self.password = password
37+
38+
def __repr__(self):
39+
return '<User %r>' % self.username
40+
41+
def get_name(self):
42+
return self.username
43+
44+
class LoginForm(FlaskForm):
45+
username = StringField('User Name', validators=[DataRequired()])
46+
password = PasswordField('Password', validators=[DataRequired()])
47+
remember_me = BooleanField('remember me', default=False)
48+
49+
with app.app_context():
50+
51+
blog_sql_storage = SQLAStorage(db=db)
52+
blog_login_manager = LoginManager(app)
53+
blog_login_manager.session_protection = 'strong'
54+
blog_login_manager.login_view = 'login'
55+
blog_login_manager.login_message = 'Please enter your account'
56+
blog_login_manager.init_app(app)
57+
db.create_all()
58+
59+
blog_extns = ['markdown.extensions.extra', 'markdown.extensions.codehilite',
60+
'markdown.extensions.tables','markdown.extensions.toc']
61+
blog_engine = BloggingEngine(app, blog_sql_storage, extensions=blog_extns)
62+
63+
from flask_blogging.sqlastorage import Post, Tag
64+
65+
@blog_login_manager.user_loader
66+
@blog_engine.user_loader
67+
def load_user(user_id):
68+
user = User.query.filter_by(id=user_id).first()
69+
return user
70+
71+
@app.route("/")
72+
def index():
73+
return redirect("/blog/")
74+
75+
@app.route('/login/', methods=['GET', 'POST'])
76+
def login():
77+
if current_user.is_authenticated:
78+
return redirect('/blog/')
79+
form = LoginForm()
80+
if form.validate_on_submit():
81+
input_username = request.form.get('username', None)
82+
input_password = request.form.get('password', None)
83+
remember_me = request.form.get('remember_me', False)
84+
user = User.query.filter_by(username=input_username, password=input_password).first()
85+
next = request.args.get('next')
86+
if user is not None:
87+
login_user(user, remember=remember_me)
88+
if next:
89+
return redirect(next)
90+
else:
91+
return redirect('/blog/')
92+
return render_template('blogging/login.html', form=form)
93+
94+
@app.route("/logout/")
95+
def logout():
96+
logout_user()
97+
return redirect("/blog/")
98+
99+
if __name__ == "__main__":
100+
app.run(debug=True, host='0.0.0.0', port=8000, use_reloader=True)

flask_blogging/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from .engine import BloggingEngine
2+
from .processor import PostProcessor
3+
from .sqlastorage import SQLAStorage
4+
from .storage import Storage
5+
6+
7+
"""
8+
Flask-Blogging is a Flask extension to add blog support to your
9+
web application. This extension uses Markdown to store and then
10+
render the webpage.
11+
12+
Author: Gouthaman Balaraman
13+
14+
Date: June 1, 2015
15+
"""
16+
17+
__author__ = 'Gouthaman Balaraman'
18+
__version__ = '1.0.2'

0 commit comments

Comments
 (0)