summaryrefslogtreecommitdiff
path: root/halfnarp2.py
diff options
context:
space:
mode:
Diffstat (limited to 'halfnarp2.py')
-rwxr-xr-xhalfnarp2.py50
1 files changed, 23 insertions, 27 deletions
diff --git a/halfnarp2.py b/halfnarp2.py
index 8d736a0..827055a 100755
--- a/halfnarp2.py
+++ b/halfnarp2.py
@@ -9,11 +9,12 @@ import requests
9import json 9import json
10import uuid 10import uuid
11import markdown 11import markdown
12from datetime import datetime, time, timedelta
12from html_sanitizer import Sanitizer 13from html_sanitizer import Sanitizer
13from hashlib import sha256 14from hashlib import sha256
14 15
15db = SQLAlchemy(app)
16app = Flask(__name__) 16app = Flask(__name__)
17db = SQLAlchemy()
17 18
18 19
19class TalkPreference(db.Model): 20class TalkPreference(db.Model):
@@ -118,21 +119,18 @@ def get_preferences(public_uid):
118 119
119 120
120def filter_keys_halfnarp(session): 121def filter_keys_halfnarp(session):
121 abstract_html = markdown.markdown(submission["abstract"], enable_attributes=False) 122 abstract_html = markdown.markdown(session["abstract"], enable_attributes=False)
122 abstract_clean_html = Sanitizer().sanitize(abstract_html) 123 abstract_clean_html = Sanitizer().sanitize(abstract_html)
123 slot = submission["slot"] 124 slot = session["slot"]
124 125
125 return { 126 return {
126 "title": submission.get("title", "!!! NO TITLE !!!"), 127 "title": session.get("title", "!!! NO TITLE !!!"),
127 "duration": 60 * submission.get("duration", 40), 128 "duration": 60 * session.get("duration", 40),
128 "event_id": submission["code"], 129 "event_id": session["code"],
129 "language": submission.get("content_locale", "de"), 130 "language": session.get("content_locale", "de"),
130 "track_id": submission["track_id"], 131 "track_id": session["track_id"],
131 "speaker_names": ", ".join( 132 "speaker_names": ", ".join(
132 [ 133 [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})]
133 speaker.get("name", "unnamed")
134 for speaker in submission.get("speakers", {})
135 ]
136 ), 134 ),
137 "abstract": abstract_clean_html, 135 "abstract": abstract_clean_html,
138 "room_id": slot.get("room_id", "room_unknown"), 136 "room_id": slot.get("room_id", "room_unknown"),
@@ -143,13 +141,13 @@ def filter_keys_halfnarp(session):
143def filter_keys_fullnarp(session, speakers): 141def filter_keys_fullnarp(session, speakers):
144 abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) 142 abstract_html = markdown.markdown(session["abstract"], enable_attributes=False)
145 abstract_clean_html = Sanitizer().sanitize(abstract_html) 143 abstract_clean_html = Sanitizer().sanitize(abstract_html)
146 slot = submission["slot"] 144 slot = session["slot"]
147 145
148 speaker_info = [] 146 speaker_info = []
149 for speaker in submission.get("speakers", {}): 147 for speaker in session.get("speakers", {}):
150 speaker_info.append(speakers[speaker["code"]]) 148 speaker_info.append(speakers[speaker["code"]])
151 # if len(speakers[speaker['code']]['availabilities']) == 0: 149 # if len(speakers[speaker['code']]['availabilities']) == 0:
152 # print ( "Track " + str(submission['track_id']) + ": Speaker " + speaker.get('name', 'unname') + " on session: " + session.get('title', '!!! NO TITLE !!!') + " without availability. https://cfp.cccv.de/orga/event/38c3/submissions/" + session['code'] ) 150 # print ( "Track " + str(submission['track_id']) + ": Speaker " + speaker.get('name', 'unname') + " on session: " + session.get('title', '!!! NO TITLE !!!') + " without availability. https://cfp.cccv.de/orga/event/38c3/session/" + session['code'] )
153 151
154 """This fixes availabilites ranging to or from exactly midnight to the more likely start of availibility at 8am and end of availibility at 3am""" 152 """This fixes availabilites ranging to or from exactly midnight to the more likely start of availibility at 8am and end of availibility at 3am"""
155 153
@@ -179,19 +177,17 @@ def filter_keys_fullnarp(session, speakers):
179 avail["end"] = str(end_new) 177 avail["end"] = str(end_new)
180 178
181 return { 179 return {
182 "title": submission.get("title", "!!! NO TITLE !!!"), 180 "title": session.get("title", "!!! NO TITLE !!!"),
183 "duration": 60 * submission.get("duration", 40), 181 "duration": 60 * session.get("duration", 40),
184 "event_id": submission["code"], 182 "event_id": session["code"],
185 "language": submission.get("content_locale", "de"), 183 "language": session.get("content_locale", "de"),
186 "track_id": submission["track_id"], 184 "track_id": session["track_id"],
185 "speakers": speaker_info,
187 "speaker_names": ", ".join( 186 "speaker_names": ", ".join(
188 [ 187 [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})]
189 speaker.get("name", "unnamed")
190 for speaker in submission.get("speakers", {})
191 ]
192 ), 188 ),
193 "abstract": abstract_clean_html, 189 "abstract": abstract_clean_html,
194 "room_id": slot.get("room_id", "room_unknown"), 190 "room_id": "room" + str(slot.get("room_id", "_unknown")),
195 "start_time": slot.get("start", "1970-01-01"), 191 "start_time": slot.get("start", "1970-01-01"),
196 } 192 }
197 193
@@ -217,7 +213,7 @@ def fetch_talks(config):
217 speakers = dict((speaker["code"], speaker) for speaker in speakers_json["results"]) 213 speakers = dict((speaker["code"], speaker) for speaker in speakers_json["results"])
218 214
219 sessions = [ 215 sessions = [
220 filter_keys(submission) 216 filter_keys_halfnarp(submission)
221 for submission in talks_json["results"] 217 for submission in talks_json["results"]
222 if submission["state"] == "confirmed" 218 if submission["state"] == "confirmed"
223 and not "non-public" in submission.get("tags", {}) 219 and not "non-public" in submission.get("tags", {})
@@ -278,7 +274,7 @@ if __name__ == "__main__":
278 app.jinja_env.lstrip_blocks = True 274 app.jinja_env.lstrip_blocks = True
279 CORS() 275 CORS()
280 276
281 db.init(app) 277 db.init_app(app)
282 278
283 with app.app_context(): 279 with app.app_context():
284 db.create_all() 280 db.create_all()