4
4
5
5
from typing import TYPE_CHECKING
6
6
7
+ from apps .core .models .prompt import Prompt
8
+
7
9
if TYPE_CHECKING : # pragma: no cover
8
10
from datetime import date
9
11
@@ -144,7 +146,7 @@ def parse_dates(dates: str, start_date: date) -> date | None:
144
146
return None
145
147
146
148
@staticmethod
147
- def update_data (category , data , * , save : bool = True ) -> Event :
149
+ def update_data (category , data , * , save : bool = True ) -> Event | None :
148
150
"""Update event data.
149
151
150
152
Args:
@@ -162,7 +164,11 @@ def update_data(category, data, *, save: bool = True) -> Event:
162
164
except Event .DoesNotExist :
163
165
event = Event (key = key )
164
166
165
- event .from_dict (category , data )
167
+ try :
168
+ event .from_dict (category , data )
169
+ except KeyError : # No start date.
170
+ return None
171
+
166
172
if save :
167
173
event .save ()
168
174
@@ -179,18 +185,19 @@ def from_dict(self, category: str, data: dict) -> None:
179
185
None
180
186
181
187
"""
188
+ start_date = data ["start-date" ]
182
189
fields = {
183
190
"category" : {
184
191
"AppSec Days" : Event .Category .APPSEC_DAYS ,
185
192
"Global" : Event .Category .GLOBAL ,
186
193
"Partner" : Event .Category .PARTNER ,
187
194
}.get (category , Event .Category .OTHER ),
188
195
"description" : data .get ("optional-text" , "" ),
189
- "end_date" : Event .parse_dates (data .get ("dates" , "" ), data [ "start-date" ] ),
196
+ "end_date" : Event .parse_dates (data .get ("dates" , "" ), start_date ),
190
197
"name" : data ["name" ],
191
- "start_date" : parser .parse (data [ "start-date" ] ).date ()
192
- if isinstance (data [ "start-date" ] , str )
193
- else data [ "start-date" ] ,
198
+ "start_date" : parser .parse (start_date ).date ()
199
+ if isinstance (start_date , str )
200
+ else start_date ,
194
201
"url" : normalize_url (data .get ("url" , "" )) or "" ,
195
202
}
196
203
@@ -213,7 +220,7 @@ def generate_geo_location(self) -> None:
213
220
self .latitude = location .latitude
214
221
self .longitude = location .longitude
215
222
216
- def generate_suggested_location (self , prompt ) -> None :
223
+ def generate_suggested_location (self , prompt = None ) -> None :
217
224
"""Generate a suggested location for the event.
218
225
219
226
Args:
@@ -225,7 +232,9 @@ def generate_suggested_location(self, prompt) -> None:
225
232
"""
226
233
open_ai = OpenAi ()
227
234
open_ai .set_input (self .get_context ())
228
- open_ai .set_max_tokens (100 ).set_prompt (prompt )
235
+ open_ai .set_max_tokens (100 ).set_prompt (
236
+ prompt or Prompt .get_owasp_event_suggested_location ()
237
+ )
229
238
try :
230
239
suggested_location = open_ai .complete ()
231
240
self .suggested_location = (
@@ -234,7 +243,7 @@ def generate_suggested_location(self, prompt) -> None:
234
243
except (ValueError , TypeError ):
235
244
self .suggested_location = ""
236
245
237
- def generate_summary (self , prompt ) -> None :
246
+ def generate_summary (self , prompt = None ) -> None :
238
247
"""Generate a summary for the event.
239
248
240
249
Args:
@@ -246,7 +255,7 @@ def generate_summary(self, prompt) -> None:
246
255
"""
247
256
open_ai = OpenAi ()
248
257
open_ai .set_input (self .get_context (include_dates = True ))
249
- open_ai .set_max_tokens (100 ).set_prompt (prompt )
258
+ open_ai .set_max_tokens (100 ).set_prompt (prompt or Prompt . get_owasp_event_summary () )
250
259
try :
251
260
summary = open_ai .complete ()
252
261
self .summary = summary if summary and summary != "None" else ""
0 commit comments