Compare commits

..

10 Commits
1.6.1 ... 1.6.6

3 changed files with 26 additions and 10 deletions

View File

@@ -11,6 +11,8 @@ class Event(BaseModel):
status: int = 0 status: int = 0
latitude: float = 0.0 latitude: float = 0.0
longitude: float = 0.0 longitude: float = 0.0
link: str | None = None
ticket: str | None = None
organizers: list[str] = [] organizers: list[str] = []
tags: list[str] = [] tags: list[str] = []
start_date: datetime | None = None start_date: datetime | None = None
@@ -26,6 +28,8 @@ class EventOut(BaseModel):
place: str place: str
description: str description: str
imgUrl: str | None = None imgUrl: str | None = None
link: str | None = None
ticket: str | None = None
status: int = 0 status: int = 0
start_date: datetime | None = None start_date: datetime | None = None
end_date: datetime | None = None end_date: datetime | None = None
@@ -39,6 +43,8 @@ class EventIn(BaseModel):
status: int = 0 status: int = 0
organizers: list[str] = [] organizers: list[str] = []
tags: list[str] = [] tags: list[str] = []
link: str | None = None
ticket: str | None = None
start_date: datetime | None = None start_date: datetime | None = None
end_date: datetime | None = None end_date: datetime | None = None
latitude: float = 0.0 latitude: float = 0.0

View File

@@ -84,8 +84,7 @@ async def read_events(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.", detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.",
) )
limit = limit + skip skip = limit * skip
# Initialize filters # Initialize filters
filters = [] filters = []
@@ -127,7 +126,7 @@ async def read_events(
# Fetch and return results # Fetch and return results
event_repository = events.EventRepository(database=database.database) event_repository = events.EventRepository(database=database.database)
list_events = [] list_events = []
for event_index in event_repository.find_by(object_search, limit=limit, skip=skip): for event_index in event_repository.find_by(object_search, limit=limit, skip=skip, sort=[("start_date", 1)]):
event = events.EventOut( event = events.EventOut(
id=event_index.id, id=event_index.id,
tags=event_index.tags, tags=event_index.tags,
@@ -138,6 +137,8 @@ async def read_events(
status=event_index.status, status=event_index.status,
start_date=event_index.start_date, start_date=event_index.start_date,
end_date=event_index.end_date, end_date=event_index.end_date,
ticket=event_index.ticket,
link=event_index.link
) )
list_events.append(event) list_events.append(event)
@@ -166,7 +167,7 @@ async def search_events(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.", detail="`skip` should be >= 0 and `limit` should be > 0 and greater than `skip`.",
) )
limit = limit + skip skip = limit * skip
# Initialize filters # Initialize filters
filters = [{"status": {"$eq": status}}] filters = [{"status": {"$eq": status}}]
@@ -201,7 +202,7 @@ async def search_events(
# Fetch and return results # Fetch and return results
event_repository = events.EventRepository(database=database.database) event_repository = events.EventRepository(database=database.database)
list_events = [] list_events = []
for event_index in event_repository.find_by(object_search, limit=limit, skip=skip): for event_index in event_repository.find_by(object_search, limit=limit, skip=skip, sort=[("start_date", 1)]):
event = events.EventOut( event = events.EventOut(
id=event_index.id, id=event_index.id,
tags=event_index.tags, tags=event_index.tags,
@@ -212,6 +213,8 @@ async def search_events(
status=event_index.status, status=event_index.status,
start_date=event_index.start_date, start_date=event_index.start_date,
end_date=event_index.end_date, end_date=event_index.end_date,
link=event_index.link,
ticket=event_index.ticket
) )
list_events.append(event) list_events.append(event)
@@ -225,7 +228,7 @@ async def read_users_me(current_user: Annotated[users.User, Depends(users_token.
listOrganizers = [] listOrganizers = []
for event_index in event_repository.find_by({"organizers":{"$eq": current_user.username}}, limit=limit, skip=skip): for event_index in event_repository.find_by({"organizers":{"$eq": current_user.username}}, limit=limit, skip=skip):
event = events.EventOut(id=event_index.id, name=event_index.name, tags=event_index.tags, imgUrl=event_index.imgUrl, description=event_index.description, place=event_index.place, status=event_index.status, start_date=event_index.start_date, end_date=event_index.end_date) event = events.EventOut(id=event_index.id, name=event_index.name, ticket=event_index.ticket, link=event_index.link, tags=event_index.tags, imgUrl=event_index.imgUrl, description=event_index.description, place=event_index.place, status=event_index.status, start_date=event_index.start_date, end_date=event_index.end_date)
listOrganizers.append(event) listOrganizers.append(event)
content = {"organizers":listOrganizers} content = {"organizers":listOrganizers}
@@ -315,6 +318,8 @@ async def update_events_me(item_id: str, current_user: Annotated[users.User, Dep
event.end_date = eventSingle.end_date event.end_date = eventSingle.end_date
event.latitude = eventSingle.latitude event.latitude = eventSingle.latitude
event.longitude = eventSingle.longitude event.longitude = eventSingle.longitude
event.link = eventSingle.link
event.ticket = eventSingle.ticket
event.updated_at = datetime.today() event.updated_at = datetime.today()
event.imgUrl = eventSingle.imgUrl event.imgUrl = eventSingle.imgUrl
event_repository.save(event) event_repository.save(event)
@@ -350,6 +355,8 @@ async def update_events(authorize: Annotated[bool, Depends(permissions_checker.P
event.latitude = eventSingle.latitude event.latitude = eventSingle.latitude
event.longitude = eventSingle.longitude event.longitude = eventSingle.longitude
event.imgUrl = eventSingle.imgUrl event.imgUrl = eventSingle.imgUrl
event.link = eventSingle.link
event.ticket = eventSingle.ticket
event.tags = eventSingle.tags event.tags = eventSingle.tags
for tag_name in eventSingle.tags: for tag_name in eventSingle.tags:
tag = tags_repository.find_one_by({"name": {'$eq': tag_name}}) tag = tags_repository.find_one_by({"name": {'$eq': tag_name}})
@@ -359,7 +366,7 @@ async def update_events(authorize: Annotated[bool, Depends(permissions_checker.P
event.status = 1 event.status = 1
event.created_at = datetime.today() event.created_at = datetime.today()
event_repository.save(event) event_repository.save(event)
content = {"message": "event is created"} content = {"message": "event created"}
response = JSONResponse(content=content, status_code=status.HTTP_201_CREATED) response = JSONResponse(content=content, status_code=status.HTTP_201_CREATED)
return response return response
@@ -386,6 +393,8 @@ async def update_events_id(item_id: str, authorize: Annotated[bool, Depends(perm
event.start_date = eventSingle.start_date event.start_date = eventSingle.start_date
event.end_date = eventSingle.end_date event.end_date = eventSingle.end_date
event.organizers = eventSingle.organizers event.organizers = eventSingle.organizers
event.link = eventSingle.link
event.ticket = eventSingle.ticket
event.tags = eventSingle.tags event.tags = eventSingle.tags
for tag_name in eventSingle: for tag_name in eventSingle:
tag = tags_repository.find_one_by({"name": {'$eq': tag_name}}) tag = tags_repository.find_one_by({"name": {'$eq': tag_name}})

View File

@@ -1,7 +1,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import Annotated from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException, status, APIRouter from fastapi import Depends, FastAPI, HTTPException, status, APIRouter, Form
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from ..dependencies import users_token, permissions_checker from ..dependencies import users_token, permissions_checker
@@ -13,10 +13,11 @@ ACCESS_TOKEN_EXPIRE_MINUTES = 30
@router.post("/token", tags=["token"]) @router.post("/token", tags=["token"])
async def login_for_access_token( async def login_for_access_token(
form_data: Annotated[OAuth2PasswordRequestForm, Depends()]): form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
remember_me: bool = Form(False)):
user = users_token.authenticate_user(form_data.username, form_data.password) user = users_token.authenticate_user(form_data.username, form_data.password)
expires_access_token_time = ACCESS_TOKEN_EXPIRE_MINUTES expires_access_token_time = ACCESS_TOKEN_EXPIRE_MINUTES
if form_data.remember_me.lower() in ["true", "1", "yes"]: if remember_me:
expires_access_token_time=120 expires_access_token_time=120
if not user: if not user:
raise HTTPException( raise HTTPException(