forked from pfibiger/grumblechat
-
Notifications
You must be signed in to change notification settings - Fork 1
/
models.py
executable file
·63 lines (51 loc) · 2.13 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
from google.appengine.ext import db
from google.appengine.ext import blobstore
from datetime import datetime
__all__ = ['Account', 'Room', 'Room_visibility_names', 'Room_visibility_codes', 'RoomList', 'Message_event_names', 'Message_event_codes', 'Message', 'FileInfo']
class Account(db.Model):
user = db.UserProperty(required=True)
nickname = db.StringProperty(required=True)
url = db.StringProperty(default='')
gravatar_tag = db.StringProperty(default='')
Room_visibility_names = {
0: 'public',
1: 'hidden',
2: 'private',
}
Room_visibility_codes = dict([(v, k) for (k, v) in Room_visibility_names.items()])
class Room(db.Model):
name = db.StringProperty(required=True)
topic = db.StringProperty(default='')
visibility = db.IntegerProperty(required=False, choices=Room_visibility_codes.values())
class RoomList(db.Model):
account = db.ReferenceProperty(reference_class=Account, required=True)
room = db.ReferenceProperty(reference_class=Room, required=True)
status = db.StringProperty(default='')
last_seen = db.DateTimeProperty(auto_now_add=True, required=True)
status = db.StringProperty( default = '' )
status_start = db.DateTimeProperty()
def update_presence(self):
self.last_seen = datetime.now()
self.put()
Message_event_names = {
0: 'message',
1: 'topic',
2: 'join',
3: 'part',
4: 'action',
5: 'status',
6: 'upload',
}
Message_event_codes = dict([(v, k) for (k, v) in Message_event_names.items()])
class Message(db.Model):
sender = db.ReferenceProperty(reference_class=Account, required=True)
room = db.ReferenceProperty(reference_class=Room, required=True)
timestamp = db.DateTimeProperty(auto_now_add=True, required=True)
event = db.IntegerProperty(required=True, choices=Message_event_codes.values())
content = db.TextProperty()
extra = db.StringProperty()
class FileInfo(db.Model):
blob = blobstore.BlobReferenceProperty(required=True)
uploaded_by = db.UserProperty(required=True)
uploaded_at = db.DateTimeProperty(required=True, auto_now_add=True)
filename = db.StringProperty(required=True)