1
- import re
2
1
from datetime import datetime as dt
3
2
from operator import attrgetter
4
3
from typing import List
13
12
from app .database .models import User
14
13
from app .database .models import UserEvent
15
14
from app .dependencies import templates
16
- from app .internal .event import validate_zoom_link
15
+ from app .internal .event import validate_zoom_link , get_invited_emails , get_uninvited_regular_emails
17
16
from app .internal .utils import create_model
18
17
from app .routers .user import create_user
19
18
20
- VALID_MAIL_REGEX = re .compile (r'^\S+@\S+\.\S+$' )
21
-
22
19
23
20
router = APIRouter (
24
21
prefix = "/event" ,
@@ -49,27 +46,17 @@ async def create_new_event(request: Request, session=Depends(get_db)):
49
46
is_zoom = location_type == 'vc_url'
50
47
location = data ['location' ]
51
48
52
- invitees = []
53
- for invited_mail in data ['invited' ].split (',' ):
54
- invited_mail = invited_mail .strip ()
55
- if VALID_MAIL_REGEX .fullmatch (invited_mail ):
56
- invitees .append (invited_mail )
57
-
58
- regular_invitees = set ()
59
- for record in session .query (Event ).\
60
- with_entities (Event .invitees ).\
61
- filter (Event .owner_id == owner_id , Event .title == title ).all ():
62
- for email in record [0 ].split (',' ):
63
- regular_invitees .add (email )
64
-
65
- uninvited_contacts = regular_invitees .difference (set (invitees ))
49
+ invited_emails = get_invited_emails (data ['invited' ])
50
+ uninvited_contacts = get_uninvited_regular_emails (session , owner_id , title , invited_emails )
66
51
67
52
if is_zoom :
68
53
validate_zoom_link (location )
69
54
70
55
event = create_event (session , title , start , end , owner_id , content ,
71
- location , invitees )
72
- message = f'Forgot to invite { ", " .join (uninvited_contacts )} maybe?'
56
+ location , invited_emails )
57
+ message = ''
58
+ if uninvited_contacts :
59
+ message = f'Forgot to invite { ", " .join (uninvited_contacts )} maybe?'
73
60
return RedirectResponse (f'/event/view/{ event .id } ?message={ message } ' ,
74
61
status_code = HTTP_303_SEE_OTHER )
75
62
@@ -86,10 +73,9 @@ def create_event(db, title, start, end, owner_id, content=None,
86
73
location = None , invitees = None ):
87
74
"""Creates an event and an association."""
88
75
76
+ invitees_concatenated = ''
89
77
if invitees :
90
- invitees_str = ',' .join (invitees )
91
- else :
92
- invitees_str = ''
78
+ invitees_concatenated = ',' .join (invitees )
93
79
94
80
event = create_model (
95
81
db , Event ,
@@ -99,7 +85,7 @@ def create_event(db, title, start, end, owner_id, content=None,
99
85
content = content ,
100
86
owner_id = owner_id ,
101
87
location = location ,
102
- invitees = invitees_str
88
+ invitees = invitees_concatenated
103
89
)
104
90
create_model (
105
91
db , UserEvent ,
0 commit comments