def cancel_event(): current_event_id = request.args.get('id') c = Client(mock=False) event = c.get_event(current_event_id) # The current user should only be able to cancel an event if they # are the host of that event. if str(current_user.id) == str(event['id_host']): c.delete_event(current_user, current_event_id) return redirect(url_for('user_home.render_user_home'))
def leave(): c = Client(mock=False) id_network = request.args.get('id') user_id = current_user.id network = c.get_network(id_network) network_info = gather_network_info(id_network, user_id, c) if request.method == 'GET': if not network_info['user_is_member']: return redirect( url_for('networks.network') + "?id=%s" % str(id_network) ) return render_template( 'network_leave.html', id_network=id_network, network_title=network_info['network_title'], form=NetworkLeaveForm() ) elif request.method == 'POST': if network_info['user_is_member']: # NOTE: the two event deletion steps must happen in this order. # # Future TODO is to make this not a strict dependency. # # Delete all events this user is hosting in this network. events_hosting = c.get_user_events_hosting( user_id, 1000 ) for event in events_hosting: if str(event['id_network']) == str(network['id']): c.delete_event(current_user, str(event['id'])) # Unregister from all events this user is attending in this network. events_attending = c.get_events_attending_in_network( current_user, network['id'], 1000 ) for event in events_attending: c.leave_event(current_user, event['id']) # Leave the network. c.leave_network(current_user, network['id']) return redirect( url_for('user_home.render_user_home_networks') )