Skip to content

Commit 2cdc8b9

Browse files
committed
Merge pull request #17 from JeldorPKU/new-models
Initial version for models.
2 parents 7416068 + fa43ac0 commit 2cdc8b9

File tree

6 files changed

+160
-0
lines changed

6 files changed

+160
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,6 @@ target/
5858

5959
# Custom
6060
config.py
61+
.ropeproject
62+
*/.ropeproject
63+
.idea

app/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
"""
88

99
from flask import Flask
10+
from flask.ext.sqlalchemy import SQLAlchemy
1011

1112
app = Flask(__name__) # pylint: disable=invalid-name
1213
app.config.from_object('config')
1314

1415
# commented as for file structure, should recover later.
1516
# from app import models
1617

18+
db = SQLAlchemy(app)
19+
1720

1821
@app.route('/')
1922
@app.route('/hellworld')

app/models.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,141 @@
55
Author: huxuan <i(at)huxuan.org>
66
Description: Models for app.
77
"""
8+
from app import db
9+
10+
11+
group_user = db.Table(
12+
'group_user',
13+
db.Column('group_id', db.Integer, db.ForeignKey('groups.gid')),
14+
db.Column('user_id', db.Integer, db.ForeignKey('users.uid'))
15+
)
16+
17+
18+
class User(db.Model):
19+
__tablename__ = 'users'
20+
21+
uid = db.Column(db.Integer, primary_key=True)
22+
birthday = db.Column(db.Date)
23+
student_id = db.Column(db.String(16))
24+
name = db.Column(db.String(16))
25+
tel = db.Column(db.String(16))
26+
username = db.Column(db.String(32), unique=True)
27+
password = db.Column(db.String(32), nullable=False)
28+
gender = db.Column(db.Boolean, nullable=False)
29+
avatar = db.Column(db.String(32))
30+
intro = db.Column(db.Text)
31+
sig1 = db.Column(db.Text)
32+
sig2 = db.Column(db.Text)
33+
sig3 = db.Column(db.Text)
34+
hobby = db.Column(db.Text)
35+
qq = db.Column(db.String(16))
36+
mail = db.Column(db.String(64))
37+
wechat = db.Column(db.String(64))
38+
province = db.Column(db.String(8))
39+
registration_date = db.Column(db.Date)
40+
last_login_time = db.Column(db.DateTime)
41+
last_post_time = db.Column(db.DateTime)
42+
star = db.Column(db.Integer, default=1)
43+
num_post = db.Column(db.Integer)
44+
num_reply = db.Column(db.Integer)
45+
num_water = db.Column(db.Integer)
46+
num_sign = db.Column(db.Integer)
47+
current_board = db.Column(db.Integer)
48+
user_agent = db.Column(db.String(128))
49+
50+
posts = db.relationship('Post', backref='author', lazy='dynamic')
51+
threads = db.relationship('Thread', backref='author', lazy='dynamic')
52+
groups = db.relationship(
53+
'Group',
54+
backref=db.backref('users', lazy='dynamic'),
55+
secondary=group_user,
56+
lazy='dynamic'
57+
)
58+
59+
60+
class Group(db.Model):
61+
__tablename__ = 'groups'
62+
63+
gid = db.Column(db.Integer, primary_key=True)
64+
name = db.Column(db.String(32), unique=True)
65+
uid = db.Column(db.Integer)
66+
created_date = db.Column(db.Date)
67+
deleted = db.Column(db.Boolean, default=False)
68+
69+
70+
class Board(db.Model):
71+
__tablename__ = 'boards'
72+
73+
bid = db.Column(db.Integer, primary_key=True)
74+
name = db.Column(db.String(32), unique=True)
75+
invisible = db.Column(db.Boolean, default=False)
76+
77+
78+
class Threads(db.Model):
79+
__tablename__ = 'threads'
80+
81+
tid = db.Column(db.Integer, primary_key=True)
82+
author_uid = db.Column(db.Integer, db.ForeignKey('users.uid'))
83+
bid = db.Column(db.Integer)
84+
title = db.Column(db.String(64))
85+
content = db.Column(db.Text)
86+
replyer_uid = db.Column(db.Integer)
87+
num_click = db.Column(db.Integer, default=0)
88+
num_reply = db.Column(db.Integer, default=0)
89+
good = db.Column(db.Boolean, default=False)
90+
sticky = db.Column(db.Boolean, default=False)
91+
created_at = db.Column(db.DateTime)
92+
replied_at = db.Column(db.DateTime)
93+
94+
95+
class Post(db.Model):
96+
__tablename__ = 'posts'
97+
98+
pid = db.Column(db.Integer, primary_key=True)
99+
uid = db.Column(db.Integer, db.ForeignKey('users.uid'))
100+
bid = db.Column(db.Integer)
101+
tid = db.Column(db.Integer)
102+
title = db.Column(db.String(32))
103+
content = db.Column(db.Text)
104+
created_at = db.Column(db.DateTime)
105+
updated_at = db.Column(db.DateTime)
106+
signature = db.Column(db.Text)
107+
user_agent = db.Column(db.String(128))
108+
ip = db.Column(db.String(64))
109+
110+
111+
class Comment(db.Model):
112+
__tablename__ = 'comments'
113+
114+
cid = db.Column(db.Integer, primary_key=True)
115+
pid = db.Column(db.Integer)
116+
uid = db.Column(db.Integer)
117+
content = db.Column(db.Text)
118+
time = db.Column(db.DateTime)
119+
deleted = db.Column(db.Boolean, default=False)
120+
121+
122+
class Message(db.Model):
123+
__tablename__ = 'messages'
124+
125+
mid = db.Column(db.Integer, primary_key=True)
126+
sender_uid = db.Column(db.Integer)
127+
receiver_uid = db.Column(db.Integer)
128+
content = db.Column(db.Text)
129+
time = db.Column(db.DateTime)
130+
is_read = db.Column(db.Boolean, default=False)
131+
sender_deleted = db.Column(db.Boolean, default=False)
132+
receiver_deleted = db.Column(db.Boolean, default=False)
133+
134+
135+
class Notification(db.Model):
136+
__tablename__ = 'notifications'
137+
138+
nid = db.Column(db.Integer, primary_key=True)
139+
uid = db.Column(db.Integer)
140+
time = db.Column(db.DateTime)
141+
ntype = db.Column(db.Integer)
142+
# Type of the notification: reply, at or quote
143+
pid = db.Column(db.Integer)
144+
cid = db.Column(db.Integer)
145+
is_read = db.Column(db.Boolean, default=False)

db_create.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
"""
4+
File: db_create.py
5+
Author: huxuan
6+
Email: i(at)huxuan.org
7+
Description: Script to create database.
8+
"""
9+
from app import db
10+
11+
db.create_all()

db_schema.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CREATE DATABASE IF NOT EXISTS capuhome
2+
DEFAULT CHARACTER SET utf8
3+
DEFAULT COLLATE utf8_general_ci;

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
flask
2+
flask-sqlalchemy
3+
mysql-python
24
pep8
35
pyflakes
46
pylint

0 commit comments

Comments
 (0)