-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
101 lines (83 loc) · 2.71 KB
/
Copy pathmodels.py
File metadata and controls
101 lines (83 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import os
import datetime
from flask import jsonify
from flask_bcrypt import generate_password_hash
from flask_login import UserMixin
from peewee import *
from playhouse.db_url import connect
# Heroku connection
# DATABASE = connect(os.environ.get('DATABASE_URL'))
# Sqlite db activate
DATABASE = SqliteDatabase('faith.db')
# Postgres db activate
# DATABASE = PostgresqlDatabase('faith')
class User(UserMixin, Model):
username = CharField(unique=True)
name = CharField()
email = CharField(unique=True)
password = CharField(max_length=100)
class Meta:
database = DATABASE
db_table = 'user'
@classmethod
def create_user(cls, username, name, email, password):
try:
cls.create(
username=username,
name=name,
email=email,
password=generate_password_hash(password))
except IntegrityError:
raise ValueError("create error")
@classmethod
def edit_user(cls, username, email, password, location):
try:
cls.create(
username=username,
email=email,
name=name,
password=generate_password_hash(password))
except IntegrityError:
raise ValueError("create error")
class Post(Model):
title = CharField(max_length=100)
category = CharField(max_length=30)
content = TextField()
timestamp = DateTimeField(default=datetime.datetime.now())
user = ForeignKeyField(User, backref="posts")
class Meta:
database = DATABASE
db_table = 'post'
order_by = ('+timestamp',)
@classmethod
def create_post(cls, title, category, content, user):
try:
cls.create(
title=title,
category=category,
content=content,
user=user)
except IntegrityError:
raise ValueError("Create Post Error! Oh no!")
class Reply(Model):
user = ForeignKeyField(User, backref="user")
post = ForeignKeyField(Post, backref="posts")
content = TextField()
timestamp = DateTimeField(default=datetime.datetime.now())
class Meta:
database = DATABASE
db_table = 'reply'
order_by = ('+timestamp',)
class ReplyThread(Model):
user = ForeignKeyField(User, backref="replies")
reply = ForeignKeyField(Reply, backref="comments")
content = TextField()
timestamp = DateTimeField(default=datetime.datetime.now())
class Meta:
database = DATABASE
db_table = 'reply_thread'
order_by = ('+timestamp',)
def initialize():
DATABASE.connect()
DATABASE.create_tables([User, Post, Reply, ReplyThread], safe=True)
DATABASE.close()