403Webshell
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/2025_06_25_02/app/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/data/wwwroot/2025_06_25_02/app/routes.py
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) 

Youez - 2016 - github.com/yon3zu
LinuXploit