11from flask import request
2- from flask_login import current_user
2+ from flask_jwt_extended import current_user
33from flask_rest_jsonapi import ResourceDetail , ResourceList , ResourceRelationship
44from flask_rest_jsonapi .exceptions import ObjectNotFound
55
66from app .api .bootstrap import api
7+ from app .api .helpers .custom_forms import validate_custom_form_constraints_request
78from app .api .helpers .db import get_count , safe_query_kwargs , save_to_db
89from app .api .helpers .errors import ForbiddenError
910from app .api .helpers .permission_manager import has_access
11+ from app .api .helpers .permissions import jwt_required
1012from app .api .helpers .query import event_query
1113from app .api .helpers .speaker import can_edit_after_cfs_ends
1214from app .api .helpers .utilities import require_relationship
@@ -32,14 +34,15 @@ def before_post(self, args, kwargs, data=None):
3234 :param data:
3335 :return:
3436 """
37+ data ['user' ] = current_user .id
3538 require_relationship (['event' , 'user' ], data )
3639
3740 if not has_access ('is_coorganizer' , event_id = data ['event' ]):
3841 event = db .session .query (Event ).filter_by (id = data ['event' ]).one ()
3942 if event .state == "draft" :
4043 raise ObjectNotFound (
4144 {'parameter' : 'event_id' },
42- "Event: {} not found" .format (data ['event_id ' ]),
45+ "Event: {} not found" .format (data ['event ' ]),
4346 )
4447
4548 if (
@@ -88,6 +91,10 @@ def before_post(self, args, kwargs, data=None):
8891 "Session: {} not found" .format (session_id ),
8992 )
9093
94+ data ['complex_field_values' ] = validate_custom_form_constraints_request (
95+ 'speaker' , SpeakerSchema , Speaker (event_id = data ['event' ]), data
96+ )
97+
9198 def after_create_object (self , speaker , data , view_kwargs ):
9299 """
93100 after create method to save resized images for speaker
@@ -101,6 +108,7 @@ def after_create_object(self, speaker, data, view_kwargs):
101108 start_image_resizing_tasks (speaker , data ['photo_url' ])
102109
103110 schema = SpeakerSchema
111+ decorators = (jwt_required ,)
104112 methods = [
105113 'POST' ,
106114 ]
@@ -186,6 +194,10 @@ def before_update_object(self, speaker, data, view_kwargs):
186194 ):
187195 data ['email' ] = current_user .email
188196
197+ data ['complex_field_values' ] = validate_custom_form_constraints_request (
198+ 'speaker' , self .resource .schema , speaker , data
199+ )
200+
189201 def after_patch (self , result ):
190202 """
191203 method to create session speaker link
0 commit comments