123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- from fastapi import APIRouter, Form, Depends, HTTPException, File, UploadFile
- from typing import List
- from fastapi.responses import FileResponse
- from random import randint
- from fastapi.security import OAuth2PasswordRequestForm
- from app.models.models import User,Favorite_course,News,Article_list
- from app.api import deps
- from sqlalchemy.orm import Session
- from typing import Any, Dict
- import secrets
- from fastapi_login.exceptions import InvalidCredentialsException
- from fastapi_login import LoginManager
- from datetime import timedelta,datetime
- from jose import jwt
- from emails.template import JinjaTemplate
- from tortoise.queryset import Q
- from fastapi.responses import HTMLResponse
- news = APIRouter()
- IMAGEDIR = "/var/www/html/ntcri/assets/"
- IMAGEDIR_short = "assets/"
- @news.get("/get_news")
- async def search_news(
- news_id : int = None
- ):
- try:
- if news_id :
- news_list = await News.filter(id=news_id).all()
- else:
- news_list = await News.all()
- news_objs = []
- for news_obj in news_list:
- news_tmp = {
- "news_id": news_obj.id,
- "title": news_obj.title,
- "category": news_obj.category,
- "create_time" : news_obj.create_time,
- "click_time" : news_obj.click_time,
- "content" : news_obj.content,
- "files" : news_obj.files,
- "URL" : news_obj.URL,
- "tags" : news_obj.tags
- }
- news_objs.append(news_tmp)
- return {"msg": "success", "code": 200, "news": news_objs}
- except Exception as e:
- return {"msg": str(e), "code": 500}
-
- async def create_upload_files(files: List[UploadFile]):
- return {"filenames": [file.filename for file in files]}
- # files_url = {}
- # if files!='':
- # file_num = 1
- # print(file_num)
- # for file in files:
- # contents = await file.read()
- # #save the file
- # with open(f"{IMAGEDIR}{file.filename}", "wb") as f:
- # f.write(contents)
- # file_name = "file" + str(file_num)
- # print(file_name)
- # files_url[file_name]=f"{IMAGEDIR_short}{file.filename}"
- # i=i+1
- # return files_url
- @news.post("/insert_news")
- async def insert_news(
- title : str = Form(default=''),
- category : str = Form(default=''),
- create_time :str = Form(default=datetime.now()),
- content : str = Form(default=''),
- URL :str = Form(default=''),
- tags : str = Form(default=''),
- files_url = Depends(create_upload_files)
- ):
- try:
- new_news = await News.create(
- title=title,
- category=category,
- create_time=create_time,
- content=content,
- files = str(files_url),
- URL = URL,
- tags = tags
- )
-
- return {"msg": "success", "code": 200, "new_news": new_news.id}
- except Exception as e:
- return {"msg": str(e), "code": 500}
- @news.post("/delete_news")
- async def delete_news(id: int):
- if id:
- await News.filter(id=id).delete()
- return {"msg": "success", "code": 200}
|