def contact_agency(request_id): """ This function handles contacting the agency about a request as a requester. :return: """ current_request = Requests.query.filter_by(id=request_id).one() form = ContactAgencyForm(current_request) del form.subject if form.validate_on_submit(): create_contact_record(current_request, flask_request.form['first_name'], flask_request.form['last_name'], flask_request.form['email'], "Inquiry about {}".format(request_id), flask_request.form['message']) flash('Your message has been sent.', category='success') else: flash('There was a problem sending your message. Please try again.', category='danger') return redirect(url_for('request.view', request_id=request_id))
def contact_agency(request_id): """ This function handles contacting the agency about a request as a requester. :return: """ current_request = Requests.query.filter_by(id=request_id).one() form = ContactAgencyForm(current_request) del form.subject if form.validate_on_submit(): create_contact_record( current_request, flask_request.form["first_name"], flask_request.form["last_name"], flask_request.form["email"], "Inquiry about {}".format(request_id), flask_request.form["message"], ) flash("Your message has been sent.", category="success") else: flash( "There was a problem sending your message. Please try again.", category="danger", ) return redirect(url_for("request.view", request_id=request_id))
def view(request_id): """ This function is for testing purposes of the view a request back until backend functionality is implemented. :return: redirect to view request page """ try: current_request = Requests.query.filter_by(id=request_id).one() assert current_request.agency.is_active except NoResultFound: print("Request with id '{}' does not exist.".format(request_id)) sentry.captureException() return abort(404) except AssertionError: print("Request belongs to inactive agency.") sentry.captureException() return abort(404) holidays = sorted( get_holidays_date_list( datetime.utcnow().year, (datetime.utcnow() + rd(years=DEFAULT_YEARS_HOLIDAY_LIST)).year, )) active_users = [] assigned_users = [] if current_user.is_agency: for agency_user in current_request.agency.active_users: if not agency_user in current_request.agency.administrators and ( agency_user != current_user): # populate list of assigned users that can be removed from a request if agency_user in current_request.agency_users: assigned_users.append(agency_user) # append to list of active users that can be added to a request else: active_users.append(agency_user) permissions = { "acknowledge": permission.ACKNOWLEDGE, "deny": permission.DENY, "extend": permission.EXTEND, "close": permission.CLOSE, "re_open": permission.RE_OPEN, "add_file": permission.ADD_FILE, "edit_file_privacy": permission.EDIT_FILE_PRIVACY, "delete_file": permission.DELETE_FILE, "add_note": permission.ADD_NOTE, "edit_note_privacy": permission.EDIT_NOTE_PRIVACY, "delete_note": permission.DELETE_NOTE, "add_link": permission.ADD_LINK, "edit_link_privacy": permission.EDIT_LINK_PRIVACY, "delete_link": permission.DELETE_LINK, "add_instructions": permission.ADD_OFFLINE_INSTRUCTIONS, "edit_instructions_privacy": permission.EDIT_OFFLINE_INSTRUCTIONS_PRIVACY, "delete_instructions": permission.DELETE_OFFLINE_INSTRUCTIONS, "generate_letter": permission.GENERATE_LETTER, "add_user": permission.ADD_USER_TO_REQUEST, "edit_user": permission.EDIT_USER_REQUEST_PERMISSIONS, "remove_user": permission.REMOVE_USER_FROM_REQUEST, "edit_title": permission.EDIT_TITLE, "edit_title_privacy": permission.CHANGE_PRIVACY_TITLE, "edit_agency_request_summary": permission.EDIT_AGENCY_REQUEST_SUMMARY, "edit_agency_request_summary_privacy": permission.CHANGE_PRIVACY_AGENCY_REQUEST_SUMMARY, "edit_requester_info": permission.EDIT_REQUESTER_INFO, } # Build permissions dictionary for checking on the front-end. for key, val in permissions.items(): if (current_user.is_anonymous or not current_request.user_requests.filter_by( user_guid=current_user.guid).first()): permissions[key] = False else: permissions[key] = (is_allowed(current_user, request_id, val) if not current_user.is_anonymous else False) # Build dictionary of current permissions for all assigned users. assigned_user_permissions = {} for u in assigned_users: assigned_user_permissions[u.guid] = (UserRequests.query.filter_by( request_id=request_id, user_guid=u.guid).one().get_permission_choice_indices()) point_of_contact = get_current_point_of_contact(request_id) if point_of_contact: current_point_of_contact = {"user_guid": point_of_contact.user_guid} else: current_point_of_contact = {"user_guid": ""} # Determine if the Agency Request Summary should be shown. show_agency_request_summary = False if (current_user in current_request.agency_users or current_request.agency_request_summary and (current_request.requester == current_user and current_request.status == request_status.CLOSED and not current_request.privacy["agency_request_summary"] or current_request.status == request_status.CLOSED and current_request.agency_request_summary_release_date and current_request.agency_request_summary_release_date < datetime.utcnow() and not current_request.privacy["agency_request_summary"])): show_agency_request_summary = True # Determine if "Generate Letter" functionality is enabled for the agency. if "letters" in current_request.agency.agency_features: generate_letters_enabled = current_request.agency.agency_features[ "letters"]["generate_letters"] else: generate_letters_enabled = False # Determine if custom request forms are enabled if "enabled" in current_request.agency.agency_features[ "custom_request_forms"]: custom_request_forms_enabled = current_request.agency.agency_features[ "custom_request_forms"]["enabled"] else: custom_request_forms_enabled = False # Determine if custom request form panels should be expanded by default if ("expand_by_default" in current_request.agency.agency_features["custom_request_forms"]): expand_by_default = current_request.agency.agency_features[ "custom_request_forms"]["expand_by_default"] else: expand_by_default = False # Determine if request description should be hidden when custom forms are enabled if ("description_hidden_by_default" in current_request.agency.agency_features["custom_request_forms"]): description_hidden_by_default = current_request.agency.agency_features[ "custom_request_forms"]["description_hidden_by_default"] else: description_hidden_by_default = False return render_template( "request/view_request.html", request=current_request, status=request_status, agency_users=current_request.agency_users, edit_requester_form=EditRequesterForm(current_request.requester), contact_agency_form=ContactAgencyForm(current_request), deny_request_form=DenyRequestForm(current_request.agency.ein), close_request_form=CloseRequestForm(current_request.agency.ein), reopen_request_form=ReopenRequestForm(current_request.agency.ein), remove_user_request_form=RemoveUserRequestForm(assigned_users), add_user_request_form=AddUserRequestForm(active_users), edit_user_request_form=EditUserRequestForm(assigned_users), generate_acknowledgment_letter_form=GenerateAcknowledgmentLetterForm( current_request.agency.ein), generate_denial_letter_form=GenerateDenialLetterForm( current_request.agency.ein), generate_closing_letter_form=GenerateClosingLetterForm( current_request.agency.ein), generate_extension_letter_form=GenerateExtensionLetterForm( current_request.agency.ein), generate_envelope_form=GenerateEnvelopeForm(current_request.agency_ein, current_request.requester), generate_response_letter_form=GenerateResponseLetterForm( current_request.agency.ein), assigned_user_permissions=assigned_user_permissions, current_point_of_contact=current_point_of_contact, holidays=holidays, assigned_users=assigned_users, active_users=active_users, permissions=permissions, show_agency_request_summary=show_agency_request_summary, is_requester=(current_request.requester == current_user), permissions_length=len(permission.ALL), generate_letters_enabled=generate_letters_enabled, custom_request_forms_enabled=custom_request_forms_enabled, expand_by_default=expand_by_default, description_hidden_by_default=description_hidden_by_default, )
def view(request_id): """ This function is for testing purposes of the view a request back until backend functionality is implemented. :return: redirect to view request page """ try: current_request = Requests.query.filter_by(id=request_id).one() assert current_request.agency.is_active except NoResultFound: print("Request with id '{}' does not exist.".format(request_id)) return abort(404) except AssertionError: print("Request belongs to inactive agency.") return abort(404) holidays = sorted(get_holidays_date_list( datetime.utcnow().year, (datetime.utcnow() + rd(years=DEFAULT_YEARS_HOLIDAY_LIST)).year) ) active_users = [] assigned_users = [] if current_user.is_agency: for agency_user in current_request.agency.active_users: if not agency_user in current_request.agency.administrators and (agency_user != current_user): # populate list of assigned users that can be removed from a request if agency_user in current_request.agency_users: assigned_users.append(agency_user) # append to list of active users that can be added to a request else: active_users.append(agency_user) permissions = { 'acknowledge': permission.ACKNOWLEDGE, 'deny': permission.DENY, 'extend': permission.EXTEND, 'close': permission.CLOSE, 're_open': permission.RE_OPEN, 'add_file': permission.ADD_FILE, 'edit_file_privacy': permission.EDIT_FILE_PRIVACY, 'delete_file': permission.DELETE_FILE, 'add_note': permission.ADD_NOTE, 'edit_note_privacy': permission.EDIT_NOTE_PRIVACY, 'delete_note': permission.DELETE_NOTE, 'add_link': permission.ADD_LINK, 'edit_link_privacy': permission.EDIT_LINK_PRIVACY, 'delete_link': permission.DELETE_LINK, 'add_instructions': permission.ADD_OFFLINE_INSTRUCTIONS, 'edit_instructions_privacy': permission.EDIT_OFFLINE_INSTRUCTIONS_PRIVACY, 'delete_instructions': permission.DELETE_OFFLINE_INSTRUCTIONS, 'add_user': permission.ADD_USER_TO_REQUEST, 'edit_user': permission.EDIT_USER_REQUEST_PERMISSIONS, 'remove_user': permission.REMOVE_USER_FROM_REQUEST, 'edit_title': permission.EDIT_TITLE, 'edit_title_privacy': permission.CHANGE_PRIVACY_TITLE, 'edit_agency_request_summary': permission.EDIT_AGENCY_REQUEST_SUMMARY, 'edit_agency_request_summary_privacy': permission.CHANGE_PRIVACY_AGENCY_REQUEST_SUMMARY, 'edit_requester_info': permission.EDIT_REQUESTER_INFO } for key, val in permissions.items(): if current_user.is_anonymous or not current_request.user_requests.filter_by( user_guid=current_user.guid, auth_user_type=current_user.auth_user_type).first(): permissions[key] = False else: permissions[key] = is_allowed(current_user, request_id, val) if not current_user.is_anonymous else False assigned_user_permissions = {} for u in assigned_users: assigned_user_permissions[u.guid] = UserRequests.query.filter_by( request_id=request_id, user_guid=u.guid).one().get_permission_choice_indices() show_agency_request_summary = False if ( current_user in current_request.agency_users or (current_request.agency_request_summary and (( current_request.requester == current_user and current_request.status == request_status.CLOSED and not current_request.privacy['agency_request_summary'] ) or ( current_request.status == request_status.CLOSED and current_request.agency_request_summary_release_date and current_request.agency_request_summary_release_date < datetime.utcnow() and not current_request.privacy['agency_request_summary'] ))) ): show_agency_request_summary = True show_title = (current_user in current_request.agency_users or current_request.requester == current_user or not current_request.privacy['title']) return render_template( 'request/view_request.html', request=current_request, status=request_status, agency_users=current_request.agency_users, edit_requester_form=EditRequesterForm(current_request.requester), contact_agency_form=ContactAgencyForm(current_request), deny_request_form=DenyRequestForm(current_request.agency.ein), close_request_form=CloseRequestForm(current_request.agency.ein), remove_user_request_form=RemoveUserRequestForm(assigned_users), add_user_request_form=AddUserRequestForm(active_users), edit_user_request_form=EditUserRequestForm(assigned_users), assigned_user_permissions=assigned_user_permissions, holidays=holidays, assigned_users=assigned_users, active_users=active_users, permissions=permissions, show_agency_request_summary=show_agency_request_summary, show_title=show_title, is_requester=(current_request.requester == current_user), permissions_length=len(permission.ALL) )