-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_methods.py
More file actions
84 lines (59 loc) · 2.31 KB
/
database_methods.py
File metadata and controls
84 lines (59 loc) · 2.31 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
from model import Message, User
from model import connect_to_db, db
from datetime import datetime, timedelta
def get_active_messages():
"""get all active messages in the database"""
current_time = datetime.utcnow()
twenty_four_hours_ago = current_time - timedelta(hours=24)
messages_within_twentyfour_hours = set(Message.query.filter(
Message.created_at > twenty_four_hours_ago).all())
return messages_within_twentyfour_hours
def get_all_liked_messages(user_id):
"""get all messages in the database that have been liked by a user"""
all_liked = set(User.query.get(user_id).likes)
return all_liked
def message_to_feature(message, liked):
"""return single feature object"""
feature = {"type": "Feature",
"properties": {
"id": message.message_id,
"text": message.message_text,
"liked": liked,
"country" : message.country,
"city": message.city,
"state": message.state
},
"geometry": {
"type": "Point",
"coordinates": [message.lng, message.lat]
}
}
return feature
def create_liked_features(messages):
"""create features for liked messages"""
liked_features = []
for message in messages.items:
feature = message_to_feature(message.message, True)
liked_features.append(feature)
return liked_features
def create_geoJson(session):
"""create geojson object"""
liked_messages = set()
if session["logged_in"] == True:
user_id = session["id"]
liked_messages = get_all_liked_messages(user_id)
features = []
messages = get_active_messages()
for message in messages:
liked = message in liked_messages if session["logged_in"] else None
feature = message_to_feature(message, liked)
features.append(feature)
#handle liked messages that have timed out
for liked in liked_messages:
liked_feature = message_to_feature(liked, True)
if liked_feature not in features:
features.append(liked_feature)
geoJson = {"type": "FeatureCollection",
"features": features
}
return geoJson