-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodels.py
122 lines (103 loc) · 3.75 KB
/
models.py
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
"""
This file defines the database models
"""
import datetime
from .common import db, Field, auth, T
from pydal.validators import *
def get_user_email():
return auth.current_user.get('email') if auth.current_user else None
def get_user_name():
first_name = auth.current_user.get('first_name') if auth.current_user else None
last_name = auth.current_user.get('last_name') if auth.current_user else None
return first_name + " " + last_name
def get_time():
return datetime.datetime.utcnow()
def get_user():
return auth.current_user.get('id') if auth.current_user else None
### Define your table below
#
# db.define_table('thing', Field('name'))
#
## always commit your models to avoid problems later
# Planned/already Watched
# Movie ID
# User ID
# Watched (Boolean)
# user_name = str(auth.current_user.get('first_name') )+ str(auth.current_user.get('last_name'))
r = db(db.auth_user.email == get_user_email).select().first()
name = r.first_name + " " + r.last_name if r is not None else "Unknown"
db.define_table(
'watch_list',
Field('movie_title', requires=IS_LENGTH(minsize=1)),
Field('watch_list_watched', 'boolean'),
Field('watch_list_date', 'date'),
Field('watch_list_user_email', default=get_user_email),
Field('watch_list_user_name', default=get_user_name),
Field('watch_list_time_stamp', 'datetime', default=get_time),
Field('watch_list_review'),
Field('watch_list_count', 'integer', default=0, requires=IS_INT_IN_RANGE(0, 2**31)),
)
db.define_table('likes',
Field('likes_movie', 'reference watch_list'), # Movie liked
Field('rating', 'integer', default=-1),
Field('likes_liker', 'reference auth_user'), # User doing the like.
Field('likes_name'),
Field('likes_user_email', default=get_user_email),
)
# Reviews Table
# Movie ID
# User ID
# Review
# Rating
db.define_table(
'review_comment',
Field('watch_list_id', 'reference watch_list'),
Field('user_email', default=get_user_email),
Field('user_name', default=get_user_name),
Field('comment', requires=IS_LENGTH(minsize=1))
)
# User Table
# User ID
# Movies/shows watched
# Rating
# Name/Email etc.
# Friends list
# When joined
db.define_table(
'user',
Field('user_name', default=get_user),
Field('user_email', default=get_user_email),
Field('user_id', default = get_user), #auth.user.id for this user
Field('user_thumbnail', default=None)
)
db.define_table(
'following',
Field('following_user_name'),
Field('following_user_email'),
Field('following_thumbnail'),
Field('following_id'), #auth.user.id for this user
Field('reference')
)
db.define_table(
'follower',
Field('follower_user_name'),
Field('follower_user_email'),
Field('follower_thumbnail'),
Field('follower_id'), #auth.user.id for this user
Field('reference')
)
db.define_table(
'notifications',
Field('message'),
Field('user_id', 'reference user')
)
db.watch_list.watch_list_time_stamp.readable = db.watch_list.watch_list_time_stamp.writable = False
db.watch_list.watch_list_user_name.readable = db.watch_list.watch_list_user_name.writable = False
db.watch_list.id.readable = db.watch_list.id.writable = False
db.watch_list.watch_list_user_email.readable = db.watch_list.watch_list_user_email.writable = False
db.review_comment.watch_list_id.readable = db.review_comment.watch_list_id.writable = False
db.review_comment.user_email.readable = db.review_comment.user_email.writable = False
db.review_comment.user_name.readable = db.review_comment.user_name.writable = False
db.watch_list.watch_list_watched.label = T('Seen')
db.watch_list.watch_list_review.label = T('Your Movie Review')
db.commit()