| Server IP : 156.238.232.47 / Your IP : 216.73.216.150 Web Server : nginx/1.25.3 System : Linux C202504152095410 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : www ( 1000) PHP Version : 8.3.25 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /www/data/wwwroot/docker/app/ |
Upload File : |
from flask import Blueprint, render_template, request, jsonify
from markupsafe import Markup
from .models import db, Term, Sentence
import pandas as pd
import math
main = Blueprint('main', __name__)
@main.route('/')
def index():
try:
return render_template('index.html')
except Exception as e:
print(f"Error loading template: {str(e)}")
return str(e), 500
@main.route('/search')
def search():
keyword = request.args.get('keyword', '')
if not keyword:
return jsonify([])
results = Sentence.query.filter(
Sentence.chinese.like(f'%{keyword}%') |
Sentence.translation.like(f'%{keyword}%')
).all()
return jsonify([result.to_dict() for result in results])
@main.route('/import', methods=['POST'])
def import_data():
if 'file' not in request.files:
return jsonify({'error': 'No file uploaded'}), 400
file = request.files['file']
if file.filename == '':
return jsonify({'error': 'No file selected'}), 400
import_type = request.form.get('type', 'sentence') # Default to sentence if not specified
try:
df = pd.read_excel(file)
for _, row in df.iterrows():
if import_type == 'term':
item = Term(
chinese=row[0],
translation=row[1]
)
else: # sentence
item = Sentence(
chinese=row[0],
translation=row[1]
)
db.session.add(item)
db.session.commit()
return jsonify({'message': f'Import successful for {import_type}s'})
except Exception as e:
return jsonify({'error': str(e)}), 400
@main.route('/import-page')
def import_page():
return render_template('import.html')
def highlight(text, keyword):
if not keyword:
return text
import re
pattern = re.compile(re.escape(keyword), re.IGNORECASE)
return Markup(pattern.sub(lambda m: f'<span class="highlight">{m.group(0)}</span>', text))
@main.app_template_filter('highlight')
def highlight_filter(text, keyword):
return highlight(text, keyword)
@main.route('/term_search')
def term_search():
q = request.args.get('q', '')
page = int(request.args.get('page', 1))
per_page = 10
query = Term.query
if q:
query = query.filter((Term.chinese.contains(q)) | (Term.translation.contains(q)))
total = query.count()
pages = math.ceil(total / per_page)
results = query.offset((page-1)*per_page).limit(per_page).all()
return render_template('term_search.html', results=results, q=q, page=page, pages=pages)
@main.route('/sentence_search')
def sentence_search():
q = request.args.get('q', '')
page = int(request.args.get('page', 1))
per_page = 10
query = Sentence.query
if q:
query = query.filter((Sentence.chinese.contains(q)) | (Sentence.translation.contains(q)))
total = query.count()
pages = math.ceil(total / per_page)
results = query.offset((page-1)*per_page).limit(per_page).all()
return render_template('sentence_search.html', results=results, q=q, page=page, pages=pages)