1111from  app .api .helpers .notification  import  send_notif_event_role 
1212from  app .api .helpers .permission_manager  import  has_access 
1313from  app .api .helpers .query  import  event_query 
14+ from  app .api .helpers .role_invite  import  delete_previous_uer 
1415from  app .api .helpers .utilities  import  require_relationship 
1516from  app .api .schema .role_invites  import  RoleInviteSchema 
1617from  app .models  import  db 
@@ -41,6 +42,16 @@ def before_post(self, args, kwargs, data):
4142        if  not  has_access ('is_organizer' , event_id = data ['event' ]):
4243            raise  ForbiddenException ({'source' : '' }, 'Organizer access is required.' )
4344
45+     def  before_create_object (self , data , view_kwargs ):
46+         """ 
47+         before create object method for RoleInviteListPost Class 
48+         :param data: 
49+         :param view_kwargs: 
50+         :return: 
51+         """ 
52+         if  data ['role_name' ] ==  'owner'  and  not  has_access ('is_owner' , event_id = data ['event' ]):
53+             raise  ForbiddenException ({'source' : '' }, 'Owner access is required.' )
54+ 
4455    def  after_create_object (self , role_invite , data , view_kwargs ):
4556        """ 
4657        after create object method for role invite links 
@@ -67,6 +78,7 @@ def after_create_object(self, role_invite, data, view_kwargs):
6778    data_layer  =  {'session' : db .session ,
6879                  'model' : RoleInvite ,
6980                  'methods' : {
81+                       'before_create_object' : before_create_object ,
7082                      'after_create_object' : after_create_object 
7183                  }}
7284
@@ -116,6 +128,8 @@ def before_update_object(self, role_invite, data, view_kwargs):
116128                                                                                                user_id = user .id ):
117129                raise  UnprocessableEntity ({'source' : '' },
118130                                          "Status can be updated only by event organizer or user hiself" )
131+         if  'role_name'  in  data  and  data ['role_name' ] ==  'owner'  and  not  has_access ('is_owner' , event_id = data ['event' ]):
132+             raise  ForbiddenException ({'source' : '' }, 'Owner access is required.' )
119133        if  not  user  and  not  has_access ('is_organizer' , event_id = role_invite .event_id ):
120134            raise  UnprocessableEntity ({'source' : '' }, "User not registered" )
121135        if  not  has_access ('is_organizer' , event_id = role_invite .event_id ) and  (len (list (data .keys ())) >  1  or 
@@ -160,13 +174,24 @@ def accept_invite():
160174        uer  =  UsersEventsRoles .query .filter_by (user = user ).filter_by (
161175            event = event ).filter_by (role = role ).first ()
162176        if  not  uer :
177+             if  not  user .is_verified :
178+                 user .is_verified  =  True 
179+                 save_to_db (user , 'User verified' )
180+             if  role_invite .role_name  ==  'owner' :
181+                 # to delete past owner from users_events_roles table 
182+                 past_owner  =  UsersEventsRoles .query .filter_by (event = event , role = role ).first ()
183+                 if  past_owner :
184+                     delete_previous_uer (past_owner )
185+                 # to delete any previous role of the current user (going to be owner) 
186+                 previous_uer  =  UsersEventsRoles .query .filter_by (event = event , user_id = user .id ).first ()
187+                 if  previous_uer :
188+                     delete_previous_uer (previous_uer )
189+ 
163190            role_invite .status  =  "accepted" 
164191            save_to_db (role_invite , 'Role Invite Accepted' )
165192            uer  =  UsersEventsRoles (user , event , role )
166193            save_to_db (uer , 'User Event Role Created' )
167-             if  not  user .is_verified :
168-                 user .is_verified  =  True 
169-                 save_to_db (user , 'User verified' )
194+                 
170195
171196    return  jsonify ({
172197        "email" : user .email ,
0 commit comments