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 
@@ -159,6 +173,7 @@ def accept_invite():
159173        event  =  Event .query .filter_by (id = role_invite .event_id ).first ()
160174        uer  =  UsersEventsRoles .query .filter_by (user = user ).filter_by (
161175            event = event ).filter_by (role = role ).first ()
176+ 
162177        if  not  uer :
163178            role_invite .status  =  "accepted" 
164179            save_to_db (role_invite , 'Role Invite Accepted' )
@@ -167,6 +182,10 @@ def accept_invite():
167182            if  not  user .is_verified :
168183                user .is_verified  =  True 
169184                save_to_db (user , 'User verified' )
185+             if  role_invite .role_name  ==  'owner' :
186+                 past_owner  =  UsersEventsRoles .query .filter_by (event = event , role = role ).first ()
187+                 if  past_owner :
188+                     delete_previous_uer (past_owner )
170189
171190    return  jsonify ({
172191        "email" : user .email ,
0 commit comments