diff options
Diffstat (limited to 'halfnarp2.py')
| -rwxr-xr-x | halfnarp2.py | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/halfnarp2.py b/halfnarp2.py index 0cc3906..5ac9405 100755 --- a/halfnarp2.py +++ b/halfnarp2.py | |||
| @@ -121,14 +121,14 @@ def get_preferences(public_uid): | |||
| 121 | def filter_keys_halfnarp(session): | 121 | def filter_keys_halfnarp(session): |
| 122 | abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) | 122 | abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) |
| 123 | abstract_clean_html = Sanitizer().sanitize(abstract_html) | 123 | abstract_clean_html = Sanitizer().sanitize(abstract_html) |
| 124 | slot = session["slot"] | 124 | slot = next(iter(session["slots"]), {}) |
| 125 | 125 | ||
| 126 | return { | 126 | return { |
| 127 | "title": session.get("title", "!!! NO TITLE !!!"), | 127 | "title": session.get("title", "!!! NO TITLE !!!"), |
| 128 | "duration": 60 * session.get("duration", 40), | 128 | "duration": 60 * session.get("duration", 40), |
| 129 | "event_id": session["code"], | 129 | "event_id": session["code"], |
| 130 | "language": session.get("content_locale", "de"), | 130 | "language": session.get("content_locale", "de"), |
| 131 | "track_id": session["track_id"], | 131 | "track_id": session["track"], |
| 132 | "speaker_names": ", ".join( | 132 | "speaker_names": ", ".join( |
| 133 | [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})] | 133 | [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})] |
| 134 | ), | 134 | ), |
| @@ -141,7 +141,7 @@ def filter_keys_halfnarp(session): | |||
| 141 | def filter_keys_fullnarp(session, speakers): | 141 | def filter_keys_fullnarp(session, speakers): |
| 142 | abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) | 142 | abstract_html = markdown.markdown(session["abstract"], enable_attributes=False) |
| 143 | abstract_clean_html = Sanitizer().sanitize(abstract_html) | 143 | abstract_clean_html = Sanitizer().sanitize(abstract_html) |
| 144 | slot = session["slot"] | 144 | slot = next(iter(session["slots"]), {}) |
| 145 | 145 | ||
| 146 | speaker_info = [] | 146 | speaker_info = [] |
| 147 | for speaker in session.get("speakers", {}): | 147 | for speaker in session.get("speakers", {}): |
| @@ -181,7 +181,7 @@ def filter_keys_fullnarp(session, speakers): | |||
| 181 | "duration": 60 * session.get("duration", 40), | 181 | "duration": 60 * session.get("duration", 40), |
| 182 | "event_id": session["code"], | 182 | "event_id": session["code"], |
| 183 | "language": session.get("content_locale", "de"), | 183 | "language": session.get("content_locale", "de"), |
| 184 | "track_id": session["track_id"], | 184 | "track_id": session["track"], |
| 185 | "speakers": speaker_info, | 185 | "speakers": speaker_info, |
| 186 | "speaker_names": ", ".join( | 186 | "speaker_names": ", ".join( |
| 187 | [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})] | 187 | [speaker.get("name", "unnamed") for speaker in session.get("speakers", {})] |
| @@ -194,27 +194,28 @@ def filter_keys_fullnarp(session, speakers): | |||
| 194 | 194 | ||
| 195 | def fetch_talks(config): | 195 | def fetch_talks(config): |
| 196 | sess = requests.Session() | 196 | sess = requests.Session() |
| 197 | 197 | headers = {'Accept': 'application/json', | |
| 198 | response = sess.get( | 198 | 'Authorization': "Token " + config['pretalx-token'], |
| 199 | config["pretalx-api-url"] + "/submissions/?format=json&limit=20000", | 199 | 'Pretalx-Version' : 'v1'} |
| 200 | stream=True, | 200 | |
| 201 | headers={"Authorization": "Token " + config["pretalx-token"]}, | 201 | speakers_result = [] |
| 202 | ) | 202 | url = config['pretalx-api-url'] + '/speakers/?format=json&limit=20000' |
| 203 | # with open('dump.txt', mode='wb') as localfile: | 203 | while url: |
| 204 | # localfile.write(response.content) | 204 | response = sess.get(url, stream=True, headers=headers).json() |
| 205 | talks_json = json.loads(response.text) | 205 | speakers_result.extend(response['results']) |
| 206 | 206 | url = response['next'] | |
| 207 | response = sess.get( | 207 | speakers = { speaker['code']: speaker for speaker in speakers_result } |
| 208 | config["pretalx-api-url"] + "/speakers/?format=json&limit=20000", | 208 | |
| 209 | stream=True, | 209 | session_results = [] |
| 210 | headers={"Authorization": "Token " + config["pretalx-token"]}, | 210 | url = config['pretalx-api-url'] + '/submissions/?expand=speakers,slot,speakers.availabilities&format=json&limit=20000' |
| 211 | ) | 211 | while url: |
| 212 | speakers_json = json.loads(response.text) | 212 | response = sess.get(url, stream=True, headers=headers).json() |
| 213 | speakers = dict((speaker["code"], speaker) for speaker in speakers_json["results"]) | 213 | session_results.extend(response['results']) |
| 214 | url = response['next'] | ||
| 214 | 215 | ||
| 215 | sessions = [ | 216 | sessions = [ |
| 216 | filter_keys_halfnarp(submission) | 217 | filter_keys_halfnarp(submission) |
| 217 | for submission in talks_json["results"] | 218 | for submission in session_results |
| 218 | if submission["state"] == "confirmed" | 219 | if submission["state"] == "confirmed" |
| 219 | and not "non-public" in submission.get("tags", {}) | 220 | and not "non-public" in submission.get("tags", {}) |
| 220 | ] | 221 | ] |
| @@ -223,7 +224,7 @@ def fetch_talks(config): | |||
| 223 | 224 | ||
| 224 | sessions = [ | 225 | sessions = [ |
| 225 | filter_keys_fullnarp(submission, speakers) | 226 | filter_keys_fullnarp(submission, speakers) |
| 226 | for submission in talks_json["results"] | 227 | for submission in session_results |
| 227 | if submission["state"] == "confirmed" or submission["state"] == "accepted" | 228 | if submission["state"] == "confirmed" or submission["state"] == "accepted" |
| 228 | ] | 229 | ] |
| 229 | with open("var/talks_local_fullnarp", mode="w", encoding="utf8") as sessionsfile: | 230 | with open("var/talks_local_fullnarp", mode="w", encoding="utf8") as sessionsfile: |
