Files
medihome-dictionary-be/app/src/routers/post_save.py

115 lines
4.4 KiB
Python
Raw Normal View History

2022-08-02 14:25:51 +07:00
from os import access
from urllib import response
from fastapi import (
APIRouter,
Depends,
status,
HTTPException
)
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder
from fastapi.security import OAuth2PasswordRequestForm
from fastapi import File, UploadFile, FastAPI
from ..models.models import (
UserModel,
ShowUserModel,
UpdateUserModel
)
from ..models.save_post import *
from ..dependecies import (
get_current_user,
authenticate_user,
authenticate_user_oauth2,
create_access_token,
get_password_hash
)
2022-08-15 10:53:52 +07:00
from ..settings import *
2022-08-02 14:25:51 +07:00
import json
from typing import List
from datetime import datetime, timedelta
import requests
import re
from pydantic import BaseModel, Field
2022-08-04 14:48:50 +07:00
import pytz
import datetime
tz = pytz.timezone('Asia/Ho_Chi_Minh')
history = APIRouter()
2022-08-02 14:25:51 +07:00
post_save = APIRouter()
# ============= Creating path operations ==============
@post_save.post("/save_post", response_description="save new post", response_model=SavePostModel)
async def create_post(post_save: SavePost):
try:
2022-08-15 10:53:52 +07:00
url = URL_OAUTH2_GET_CHECK_TOKEN
2022-08-02 14:25:51 +07:00
payload = {'token': post_save.token}
headers = {
'Authorization': 'Basic RGljdGlvbmFyeU1lZGlob21lOlJ4aXR6ZnZvaWFmZmNtb2l0ZW0='
}
response = requests.request(
"POST", url, headers=headers, data=payload)
data_output = json.loads(response.text)
data = data_output.get("user_name", None)
if data == None:
return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"})
2022-08-08 10:18:10 +07:00
count = await db["posts"].count_documents({"_id": post_save.post_id})
2022-08-04 14:48:50 +07:00
if count == 0:
2022-08-08 10:18:10 +07:00
return JSONResponse(status_code=status.HTTP_409_CONFLICT, content={"message": "Bài viết không tồn tại"})
2022-08-04 14:48:50 +07:00
post_save.created_at = datetime.datetime.now(tz=tz)
2022-08-02 14:25:51 +07:00
post_save = jsonable_encoder(post_save)
del post_save["token"]
post_save["username"] = data
2022-08-04 14:48:50 +07:00
created_post = await db["post_save"].count_documents({"post_id": post_save["post_id"], "username": data})
if created_post == 1:
2022-08-08 10:18:10 +07:00
return JSONResponse(status_code=status.HTTP_409_CONFLICT, content={"message": "Bài viết đã được lưu trước đó"})
2022-08-02 14:25:51 +07:00
new_post = await db["post_save"].insert_one(post_save)
created_post = await db["post_save"].find_one({"_id": new_post.inserted_id})
return JSONResponse(status_code=status.HTTP_201_CREATED, content=created_post)
except NameError:
return NameError
2022-08-04 14:48:50 +07:00
@post_save.post(
2022-08-02 14:25:51 +07:00
"/list_save_post_by_user", response_description="List save posts", response_model=SavePostModel
)
async def list_post(post_save: SavePost):
2022-08-15 10:53:52 +07:00
url = URL_OAUTH2_GET_CHECK_TOKEN
2022-08-02 14:25:51 +07:00
payload = {'token': post_save.token}
headers = {
'Authorization': 'Basic RGljdGlvbmFyeU1lZGlob21lOlJ4aXR6ZnZvaWFmZmNtb2l0ZW0='
}
response = requests.request(
"POST", url, headers=headers, data=payload)
data_output = json.loads(response.text)
data = data_output.get("user_name", None)
if data == None:
return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"})
2022-08-04 14:48:50 +07:00
posts = await db["post_save"].find({"username": data}).to_list(1000)
return JSONResponse(status_code=status.HTTP_200_OK, content=posts)
@post_save.delete("/delete_save_post", response_description="Delete save post")
2022-08-08 10:18:10 +07:00
async def delete_save_post(post_id: str, token: str):
2022-08-04 14:48:50 +07:00
# delete_result = await db["post_save"].delete_one({"_id": user_id})
try:
2022-08-15 10:53:52 +07:00
url = URL_OAUTH2_GET_CHECK_TOKEN
2022-08-08 10:18:10 +07:00
payload = {'token': token}
2022-08-04 14:48:50 +07:00
headers = {
'Authorization': 'Basic RGljdGlvbmFyeU1lZGlob21lOlJ4aXR6ZnZvaWFmZmNtb2l0ZW0='
}
response = requests.request(
"POST", url, headers=headers, data=payload)
data_output = json.loads(response.text)
data = data_output.get("user_name", None)
if data == None:
return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"})
2022-08-08 10:18:10 +07:00
delete_result = await db["post_save"].delete_one({"post_id": post_id, "username": data})
2022-08-04 14:48:50 +07:00
if delete_result.deleted_count == 1:
return JSONResponse(status_code=status.HTTP_200_OK, content={"message": "Delete post save successful"})
raise HTTPException(
2022-08-08 10:18:10 +07:00
status_code=404, detail=f'Post save {post_id} not found')
2022-08-04 14:48:50 +07:00
except NameError:
return NameError