def build_name(test_name, generate_id_seq=True): name = NameDAO() if generate_id_seq: seq = db.Sequence('names_id_seq') name_id = db.engine.execute(seq) name.id = test_name.get('id', name_id) name.choice = 1 name.name = test_name.get('name', '') name.designation = test_name.get('designation', '') name.name_type_cd = test_name.get('name_type_cd', '') name.consent_words = test_name.get('consent_words', '') name.conflict1 = test_name.get('conflict1', '') name.conflict1_num = test_name.get('conflict1_num', '') name.corpNum = test_name.get('corpNum', None) return name
def _map_submitted_name_conflicts(submitted_name: Name, request_name: dict): """ Used internally by map_submitted_name. :param submitted_name: Name :param request_name: dict :return: """ try: # Only capturing one conflict if request_name.get('conflict1_num'): submitted_name.conflict1_num = request_name.get('conflict1_num') if request_name.get('conflict1'): submitted_name.conflict1 = request_name.get('conflict1') # Conflict text same as Namex submitted_name.decision_text = 'Consent is required from ' + request_name.get( 'conflict1') + '\n' + '\n' except Exception as err: raise MapRequestNamesError(err, 'Error on reserved conflict info.') return submitted_name
def post(*args, **kwargs): app_config = current_app.config.get('SOLR_SYNONYMS_API_URL', None) if not app_config: current_app.logger.error('ENV is not set') return None, 'Internal server error', 500 test_env = 'prod' if test_env in app_config: current_app.logger.info( 'Someone is trying to post a new request. Not available.') return jsonify( {'message': 'Not Implemented in the current environment'}), 501 json_data = request.get_json() if not json_data: current_app.logger.error("Error when getting json input") return jsonify({'message': 'No input data provided'}), 400 try: restricted = VirtualWordConditionService() except Exception as error: current_app.logger.error( "'Error initializing VirtualWordCondition Service: Error:{0}". format(error)) return jsonify({"message": "Virtual Word Condition Service error"}), 404 try: user = User.find_by_username('name_request_service_account') user_id = user.id except Exception as error: current_app.logger.error( "Error getting user id: Error:{0}".format(error)) return jsonify({"message": "Get User Error"}), 404 try: name_request = Request() except Exception as error: current_app.logger.error( "Error initializing name_request object Error:{0}".format( error)) return jsonify({"message": "Name Request object error"}), 404 try: nr_num = generate_nr() nr_id = get_request_sequence() except Exception as error: current_app.logger.error( "Error getting nr number. Error:{0}".format(error)) return jsonify({"message": "Error getting nr number"}), 404 #set the request attributes try: name_request.id = nr_id name_request.submittedDate = datetime.utcnow() name_request.requestTypeCd = set_request_type( json_data['entity_type'], json_data['request_action']) name_request.nrNum = nr_num except Exception as error: current_app.logger.error( "Error setting request header attributes. Error:{0}".format( error)) return jsonify( {"message": "Error setting request header attributes"}), 404 try: if (json_data['stateCd'] == 'COND-RESERVE'): name_request.consentFlag = 'Y' if json_data['stateCd'] in [State.RESERVED, State.COND_RESERVE]: name_request.expirationDate = create_expiry_date( start=name_request.submittedDate, expires_in_days=56, tz=timezone('UTC')) name_request.stateCd = json_data['stateCd'] name_request.entity_type_cd = json_data['entity_type'] name_request.request_action_cd = json_data['request_action'] except Exception as error: current_app.logger.error( "Error setting reserve state and expiration date. Error:{0}". format(error)) return jsonify( {"message": "Error setting reserve state and expiration date"}), 404 #set this to name_request_service_account name_request.userId = user_id try: lang_comment = add_language_comment(json_data['english'], user_id, nr_id) name_request.comments.append(lang_comment) except Exception as error: current_app.logger.error( "Error setting language comment. Error:{0}".format(error)) return jsonify({"message": "Error setting language comment."}), 404 try: if json_data['nameFlag'] == True: name_comment = add_name_comment(user_id, nr_id) name_request.comments.append(name_comment) except Exception as error: current_app.logger.error( "Error setting person name comment. Error:{0}".format(error)) return jsonify({"message": "Error setting person name comment."}), 404 try: if json_data['submit_count'] is None: name_request.submitCount = 1 else: name_request.submitCount = +1 except Exception as error: current_app.logger.error( "Error setting submit count. Error:{0}".format(error)) return jsonify({"message": "Error setting submit count."}), 404 try: if json_data['stateCd'] == State.DRAFT: # set request header attributes name_request = set_draft_attributes(name_request, json_data, user_id) name_request.save_to_db() nrd = Request.find_by_nr(name_request.nrNum) try: # set applicant attributes nrd_app = set_applicant_attributes(json_data, nr_id) nrd.applicants.append(nrd_app) except Exception as error: current_app.logger.error( "Error setting applicant. Error:{0}".format(error)) return jsonify({"message": "Error setting applicant."}), 404 except Exception as error: current_app.logger.error( "Error setting DRAFT attributes. Error:{0}".format(error)) return jsonify({"message": "Error setting DRAFT attributes."}), 404 try: if json_data['stateCd'] in [ State.RESERVED, State.COND_RESERVE, State.DRAFT ]: name_request.save_to_db() nrd = Request.find_by_nr(name_request.nrNum) except Exception as error: current_app.logger.error( "Error saving reservation to db. Error:{0}".format(error)) return jsonify({"message": "Error saving reservation to db."}), 404 try: nrd = Request.find_by_nr(name_request.nrNum) except Exception as error: current_app.logger.error( "Error retrieving the New NR from the db. Error:{0}".format( error)) return jsonify( {"message": "Error retrieving the New NR from the db."}), 404 try: for name in json_data.get('names', None): try: submitted_name = Name() name_id = get_name_sequence() submitted_name.id = name_id except Exception as error: current_app.logger.error( "Error on submitted Name object. Error:{0}".format( error)) return jsonify( {"message": "Error on submitted_name and sequence."}), 404 #common name attributes try: submitted_name.choice = name['choice'] submitted_name.name = name['name'] if (name['name_type_cd']): submitted_name.name_type_cd = name['name_type_cd'] else: submitted_name.name_type_cd = 'CO' if (json_data['stateCd'] == State.DRAFT): submitted_name.state = 'NE' else: submitted_name.state = json_data['stateCd'] if name['designation']: submitted_name.designation = name['designation'] submitted_name.nrId = nr_id except Exception as error: current_app.logger.error( "Error on common name attributes. Error:{0}".format( error)) return jsonify( {"message": "Error on common name attributes."}), 404 decision_text = None if json_data['stateCd'] in [ State.RESERVED, State.COND_RESERVE ]: try: # only capturing one conflict if (name['conflict1_num']): submitted_name.conflict1_num = name[ 'conflict1_num'] if name['conflict1']: submitted_name.conflict1 = name['conflict1'] #conflict text same as Namex decision_text = 'Consent is required from ' + name[ 'conflict1'] + '\n' + '\n' except Exception as error: current_app.logger.error( "Error on reserved conflict info. Error:{0}". format(error)) return jsonify( {"message": "Error on reserved conflict info."}), 404 else: try: submitted_name.conflict1_num = None submitted_name.conflict1 = None except Exception as error: current_app.logger.error( "Error on draft empty conflict info. Error:{0}". format(error)) return jsonify( {"message": "Error on draft empty conflict info."}), 404 consent_list = name['consent_words'] if len(consent_list) > 0: for consent in consent_list: try: cnd_instructions = None if consent != "" or len(consent) > 0: cnd_instructions = restricted.get_word_condition_instructions( consent) except Exception as error: current_app.logger.error( "Error on get consent word. Consent Word[0], Error:{1}" .format(consent, error)) return jsonify( {"message": "Error on get consent words."}), 404 try: if (decision_text is None): decision_text = cnd_instructions + '\n' else: decision_text += consent + '- ' + cnd_instructions + '\n' submitted_name.decision_text = decision_text except Exception as error: current_app.logger.error( "Error on adding consent words to decision. Error:{0}" .format(error)) return jsonify({ "message": "Error on adding consent words to decision text" }), 404 try: nrd.names.append(submitted_name) except Exception as error: current_app.logger.error( "Error appending names. Error:{0}".format(error)) return jsonify({"message": "Error appending names"}), 404 try: #save names nrd.save_to_db() except Exception as error: current_app.logger.error( "Error saving the whole nr and names. Error:{0}".format( error)) return jsonify({"message": "Error saving names to the db"}), 404 except Exception as error: current_app.logger.error( "Error setting name. Error:{0}".format(error)) return jsonify({"message": "Error setting name."}), 404 #TODO: Need to add verification that the save was successful. #update solr for reservation try: if (json_data['stateCd'] in ['RESERVED', 'COND-RESERVE']): solr_name = nrd.names[0].name solr_docs = [] nr_doc = { "id": name_request.nrNum, "name": solr_name, "source": "NR", "start_date": name_request.submittedDate.strftime("%Y-%m-%dT%H:%M:00Z") } solr_docs.append(nr_doc) update_solr('possible.conflicts', solr_docs) except Exception as error: current_app.logger.error( "Error updating solr for reservation. Error:{0}".format(error)) return jsonify({"message": "Error updating solr for reservation."}), 404 current_app.logger.debug(name_request.json()) return jsonify(name_request.json()), 200