def delete_cohort(cohort_id): """ Deletes a cohort and all its associated links if it belongs to only current_user Removes the relationship between current_user and this cohort if it belongs to a user other than current_user """ session = db.get_session() try: owner_and_viewers = num_users(session, cohort_id) role = get_role(session, cohort_id) # Owner wants to delete, no other viewers or # Owner wants to delete, have other viewers, delete from other viewer's lists too if owner_and_viewers >= 1 and role == CohortUserRole.OWNER: delete_owner_cohort(session, cohort_id) session.commit() return json_redirect(url_for('cohorts_index')) # Viewer wants to delete cohort from their list, doesn't delete cohort from db;l, elif owner_and_viewers > 1 and role == CohortUserRole.VIEWER: delete_viewer_cohort(session, cohort_id) session.commit() return json_redirect(url_for('cohorts_index')) # None of the other cases fit. else: session.rollback() return json_error('This Cohort can not be deleted.') except DatabaseError as e: session.rollback() return json_error(e.message) finally: session.close()
def delete_cohort(cohort_id): """ Deletes a cohort and all its associated links if it belongs to only current_user Removes the relationship between current_user and this cohort if it belongs to a user other than current_user """ session = db.get_session() try: owner_and_viewers = num_users(session, cohort_id) role = get_role(session, cohort_id) # Owner wants to delete, no other viewers or # Owner wants to delete, have other viewers, delete from other viewer's lists too if owner_and_viewers >= 1 and role == CohortUserRole.OWNER: g.cohort_service.delete_owner_cohort(session, cohort_id) session.commit() return json_redirect(url_for('cohorts_index')) # Viewer wants to delete cohort from their list, doesn't delete cohort from db;l, elif owner_and_viewers > 1 and role == CohortUserRole.VIEWER: g.cohort_service.delete_viewer_cohort(session, current_user.id, cohort_id) session.commit() return json_redirect(url_for('cohorts_index')) # None of the other cases fit. else: session.rollback() return json_error('This Cohort can not be deleted.') except DatabaseError as e: session.rollback() return json_error(e.message)
def reports_request(): """ Renders a page that facilitates kicking off a new report """ if request.method == 'GET': return render_template('report.html') else: desired_responses = json.loads(request.form['responses']) recurrent = json.loads(request.form.get('recurrent', 'false')) for parameters in desired_responses: parameters['recurrent'] = recurrent # NOTE: this is not a mistake. Currently recurrent => public on creation parameters['public'] = recurrent jr = RunReport(parameters, user_id=current_user.id) jr.task.delay(jr) return json_redirect(url_for('reports_index'))
def reports_request(): """ Renders a page that facilitates kicking off a new report """ if request.method == 'GET': return render_template('report.html') else: desired_responses = json.loads(request.form['responses']) recurrent = json.loads(request.form.get('recurrent', 'false')) for parameters in desired_responses: parameters['recurrent'] = recurrent # NOTE: this is not a mistake. Currently recurrent => public on creation parameters['public'] = recurrent # Encode cohort description for the case it contains special characters if ('description' in parameters['cohort'] and parameters['cohort']['description'] is not None): encoded_description = parameters['cohort']['description'].encode('utf-8') parameters['cohort']['description'] = encoded_description jr = RunReport(parameters, user_id=current_user.id) jr.task.delay(jr) return json_redirect(url_for('reports_index'))