You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.2 KiB
32 lines
1.2 KiB
from flask import render_template, Blueprint, request, flash, redirect, url_for, jsonify
|
|
from minibase.blueprints.company.models import Companies
|
|
|
|
database = Blueprint('database', __name__, template_folder='templates')
|
|
|
|
@database.route('/search/<field_name>/<table_name>/<key_name>/<ret_name>', methods=['GET'])
|
|
def search_auto(field_name, table_name, key_name, ret_name):
|
|
keyLike = request.args.get('modalReqArg', '')
|
|
|
|
MODEL_MAP = {
|
|
'Companies': Companies,
|
|
}
|
|
|
|
table = MODEL_MAP.get(table_name)
|
|
if table is None:
|
|
return f"Error: Table '{table_name}' not found.", 400
|
|
|
|
column = getattr(table, key_name.strip(), None)
|
|
|
|
if column is None:
|
|
return f"Error: Column '{key_name}' not found in table '{table_name}'.", 400
|
|
|
|
# Proceed with filtering if the column is found
|
|
results = table.query.filter(column.ilike(f'%{keyLike}%')).all()
|
|
|
|
return render_template('database/search_results.html', field_name=field_name, results=results, returnAttr=ret_name)
|
|
|
|
|
|
@database.route('/select/<field_name>/<int:result_id>/<result_content>', methods=['GET'])
|
|
def select_field(field_name, result_id, result_content):
|
|
return f'<option value="{result_id}" selected>{result_content}</option>'
|