-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
61 lines (52 loc) · 2.16 KB
/
models.py
File metadata and controls
61 lines (52 loc) · 2.16 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
import datetime
import shortuuid
from app import app, db, oauth
from flask.ext.security import Security, MongoEngineUserDatastore
from flask.ext.security import UserMixin, RoleMixin
class Role(db.Document, RoleMixin):
name = db.StringField(max_length=80, unique=True)
description = db.StringField(max_length=80)
class User(db.Document, UserMixin):
name = db.StringField(max_length=255)
email = db.StringField(max_length=255)
password = db.StringField(max_length=255)
oauth_token = db.StringField(max_length=512)
active = db.BooleanField(default=True)
roles = db.ListField(db.ReferenceField(Role, dbref=False), default=[])
moderating = db.ListField(db.StringField())
subscribed = db.ListField(db.StringField())
def create_slug():
return shortuuid.uuid()[:8]
class Post(db.Document):
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
creator = db.ReferenceField(User, dbref=False, required=True)
slug = db.StringField(default=create_slug, max_length=255, required=True)
body = db.StringField(required=True)
group = db.StringField(required=True)
comments = db.ListField(db.EmbeddedDocumentField('Comment'))
approved = db.BooleanField(default=False)
archived = db.BooleanField(default=False)
def __unicode__(self):
return self.body
meta = {
'allow_inheritance': True,
'indexes': ['-created_at', 'slug'],
'ordering': ['-created_at']
}
class Comment(db.EmbeddedDocument):
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
body = db.StringField(verbose_name="Comment", required=True)
author = db.ReferenceField(User, dbref=False, required=False)
facebook = oauth.remote_app('facebook',
base_url='https://graph.facebook.com/',
request_token_url=None,
access_token_url='/oauth/access_token',
authorize_url='https://www.facebook.com/dialog/oauth',
consumer_key=app.config["FACEBOOK_APP_ID"],
consumer_secret=app.config["FACEBOOK_APP_SECRET"],
request_token_params={'scope': 'email'}
)
# Setup Flask-Security
user_datastore = MongoEngineUserDatastore(db, User, Role)
security = Security(app, user_datastore)
app.extensions['security']._send_mail_task = lambda x: True