forked from mrlan/EnglishPal
				
			fix: add one way to set article level & rename some functions and vars
							parent
							
								
									b34f260d98
								
							
						
					
					
						commit
						cabf6702a7
					
				| 
						 | 
				
			
			@ -5,8 +5,6 @@ from Yaml import yml
 | 
			
		|||
from Login import md5
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
 | 
			
		||||
# ? from difficulty import text_difficulty_level
 | 
			
		||||
 | 
			
		||||
ADMIN_NAME = "lanhui"  # unique admin name
 | 
			
		||||
_cur_page = 1  # current article page
 | 
			
		||||
_page_size = 5  # article sizes per page
 | 
			
		||||
| 
						 | 
				
			
			@ -25,19 +23,19 @@ def admin():
 | 
			
		|||
    if username != ADMIN_NAME:
 | 
			
		||||
        return "You are not admin!"
 | 
			
		||||
 | 
			
		||||
    article_len = get_articles_len()
 | 
			
		||||
    article_number = get_number_of_articles()
 | 
			
		||||
    try:
 | 
			
		||||
        _page_size = min(int(request.args.get("size", 5)), article_len)
 | 
			
		||||
        _page_size = min(int(request.args.get("size", 5)), article_number)
 | 
			
		||||
        if _page_size <= 0:
 | 
			
		||||
            raise ZeroDivisionError
 | 
			
		||||
        _cur_page = min(int(request.args.get("page", 1)), article_len // _page_size)
 | 
			
		||||
        _cur_page = min(int(request.args.get("page", 1)), article_number // _page_size)
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        return "page parmas must be int!"
 | 
			
		||||
    except ZeroDivisionError:
 | 
			
		||||
        return "page size must bigger than zero"
 | 
			
		||||
 | 
			
		||||
    context = {
 | 
			
		||||
        "text_len": article_len,
 | 
			
		||||
        "article_number": article_number,
 | 
			
		||||
        "page_size": _page_size,
 | 
			
		||||
        "cur_page": _cur_page,
 | 
			
		||||
        "text_list": get_page_articles(_cur_page, _page_size),
 | 
			
		||||
| 
						 | 
				
			
			@ -47,8 +45,8 @@ def admin():
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    def _update_context():
 | 
			
		||||
        article_len = get_articles_len()
 | 
			
		||||
        context["text_len"] = article_len
 | 
			
		||||
        article_len = get_number_of_articles()
 | 
			
		||||
        context["article_number"] = article_len
 | 
			
		||||
        context["text_list"] = get_page_articles(_cur_page, _page_size)
 | 
			
		||||
 | 
			
		||||
    if request.method == "GET":
 | 
			
		||||
| 
						 | 
				
			
			@ -61,8 +59,14 @@ def admin():
 | 
			
		|||
        source = data.get("source", "")
 | 
			
		||||
        question = data.get("question", "")
 | 
			
		||||
        username = data.get("username", "")
 | 
			
		||||
        level = data.get("level", "5")
 | 
			
		||||
        if content:
 | 
			
		||||
            add_article(content, source, question)
 | 
			
		||||
            try:    # check level
 | 
			
		||||
                if not (0 < int(level) <= 5):
 | 
			
		||||
                    raise ValueError
 | 
			
		||||
            except ValueError:
 | 
			
		||||
                return "level must be between 1 and 5"
 | 
			
		||||
            add_article(content, source, level, question)
 | 
			
		||||
            _update_context()
 | 
			
		||||
        if username:
 | 
			
		||||
            update_user_password(username)
 | 
			
		||||
| 
						 | 
				
			
			@ -70,21 +74,16 @@ def admin():
 | 
			
		|||
    return render_template("admin_index.html", **context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def add_article(content, source="manual_input", question="No question"):
 | 
			
		||||
def add_article(content, source="manual_input", level="5", question="No question"):
 | 
			
		||||
    with db_session:
 | 
			
		||||
        # add one atricle to sqlite
 | 
			
		||||
        # add one article to sqlite
 | 
			
		||||
        Article(
 | 
			
		||||
            text=content,
 | 
			
		||||
            source=source,
 | 
			
		||||
            date=datetime.now().strftime("%-d %b %Y"),  # format style of `5 Oct 2022`
 | 
			
		||||
            level="1",
 | 
			
		||||
            level=level,
 | 
			
		||||
            question=question,
 | 
			
		||||
        )
 | 
			
		||||
        # ? There is a question that:
 | 
			
		||||
        # ? How can i get one article level?
 | 
			
		||||
        # ? I try to use the function `text_difficulty_level(content,{"test":1})`
 | 
			
		||||
        # ? However, i lose one dict parma from pickle
 | 
			
		||||
        # ? So I temporarily fixed the level to 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def delete_article(article_id):
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +93,7 @@ def delete_article(article_id):
 | 
			
		|||
            article.first().delete()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_articles_len():
 | 
			
		||||
def get_number_of_articles():
 | 
			
		||||
    with db_session:
 | 
			
		||||
        return len(Article.select()[:])
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,10 +70,10 @@
 | 
			
		|||
                    <label for="exampleInputEmail1" class="form-label">文章内容</label>
 | 
			
		||||
                    <textarea id="content" name="content" class="form-control" placeholder="请输入文章内容"></textarea>
 | 
			
		||||
                    <label for="exampleInputEmail1" class="form-label">文章来源</label>
 | 
			
		||||
 | 
			
		||||
                    <textarea id="source" name="source" class="form-control" placeholder="请输入来源"></textarea>
 | 
			
		||||
                    <label for="exampleInputEmail1" class="form-label">文章等级</label>
 | 
			
		||||
                    <textarea id="level" name="level" class="form-control" placeholder="请输入等级"></textarea>
 | 
			
		||||
                    <label for="exampleInputEmail1" class="form-label">文章问题</label>
 | 
			
		||||
 | 
			
		||||
                    <textarea id="question" name="question" class="form-control" placeholder="请输入问题"></textarea>
 | 
			
		||||
                </div>
 | 
			
		||||
                <input type="submit" value="保存" class="btn btn-outline-primary">
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +103,7 @@
 | 
			
		|||
        <ul class="pagination pagination-sm justify-content-center">
 | 
			
		||||
            <li class="page-item"><a class="page-link" href="/admin?page={{cur_page-1}}&size={{page_size}}">Previous</a>
 | 
			
		||||
            </li>
 | 
			
		||||
            {% for i in range(1, text_len//page_size+1) %}
 | 
			
		||||
            {% for i in range(1, article_number//page_size+1) %}
 | 
			
		||||
            {% if cur_page == i %}
 | 
			
		||||
            <li class="page-item active"><a class="page-link" href="/admin?page={{i}}&size={{page_size}}">{{ i }}</a>
 | 
			
		||||
            </li>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue