chore: cleanup python code

This commit is contained in:
swve 2023-05-08 09:39:11 +00:00
parent 05f8539361
commit 7d78d06165
30 changed files with 46 additions and 87 deletions

2
app.py
View file

@ -1,7 +1,5 @@
import asyncio
import logging import logging
from fastapi import FastAPI, Request from fastapi import FastAPI, Request
import re
from config.config import LearnHouseConfig, get_learnhouse_config from config.config import LearnHouseConfig, get_learnhouse_config
from src.core.events.events import shutdown_app, startup_app from src.core.events.events import shutdown_app, startup_app
from src.main import global_router from src.main import global_router

View file

@ -3,8 +3,6 @@ from fastapi import Depends, APIRouter, HTTPException, status, Request
from fastapi.security import OAuth2PasswordRequestForm from fastapi.security import OAuth2PasswordRequestForm
from src.security.auth import * from src.security.auth import *
from src.services.users.users import * from src.services.users.users import *
from datetime import timedelta
from fastapi.responses import JSONResponse
router = APIRouter() router = APIRouter()

View file

@ -1,6 +1,6 @@
from fastapi import APIRouter, Depends, UploadFile, Form, Request from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.security.auth import get_current_user from src.security.auth import get_current_user
from fastapi import HTTPException, status, UploadFile from fastapi import UploadFile
from src.services.blocks.block_types.imageBlock.images import create_image_block, get_image_block from src.services.blocks.block_types.imageBlock.images import create_image_block, get_image_block
from src.services.blocks.block_types.videoBlock.videoBlock import create_video_block, get_video_block from src.services.blocks.block_types.videoBlock.videoBlock import create_video_block, get_video_block
from src.services.blocks.block_types.pdfBlock.pdfBlock import create_pdf_block, get_pdf_block from src.services.blocks.block_types.pdfBlock.pdfBlock import create_pdf_block, get_pdf_block

View file

@ -1,4 +1,4 @@
from fastapi import APIRouter, Depends, Request, UploadFile, Form from fastapi import APIRouter, Depends, Request
from src.services.courses.chapters import CourseChapter, CourseChapterMetaData, create_coursechapter, delete_coursechapter, get_coursechapter, get_coursechapters, get_coursechapters_meta, update_coursechapter, update_coursechapters_meta from src.services.courses.chapters import CourseChapter, CourseChapterMetaData, create_coursechapter, delete_coursechapter, get_coursechapter, get_coursechapters, get_coursechapters_meta, update_coursechapter, update_coursechapters_meta
from src.services.users.users import PublicUser from src.services.users.users import PublicUser

View file

@ -1,6 +1,6 @@
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.users.users import PublicUser, User from src.services.users.users import PublicUser
from src.services.courses.collections import Collection, create_collection, get_collection, get_collections, update_collection, delete_collection from src.services.courses.collections import Collection, create_collection, get_collection, get_collections, update_collection, delete_collection

View file

@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends, Request
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.roles.schemas.roles import Role from src.services.roles.schemas.roles import Role
from src.services.roles.roles import create_role, delete_role, read_role, update_role from src.services.roles.roles import create_role, delete_role, read_role, update_role
from src.services.users.schemas.users import PublicUser, User from src.services.users.schemas.users import PublicUser
router = APIRouter() router = APIRouter()

View file

@ -1,4 +1,3 @@
from typing import Optional
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.trail import Trail, add_activity_to_trail, add_course_to_trail, create_trail, get_user_trail_with_orgslug, get_user_trail, remove_course_from_trail from src.services.trail import Trail, add_activity_to_trail, add_course_to_trail, create_trail, get_user_trail_with_orgslug, get_user_trail, remove_course_from_trail

View file

@ -1,9 +1,7 @@
from fastapi import Depends, FastAPI, APIRouter from fastapi import Depends, APIRouter
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from pydantic import BaseModel
from src.security.auth import * from src.security.auth import *
from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserWithPassword from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserWithPassword
from src.services.users.users import create_user, delete_user, get_profile_metadata, get_user_by_userid, read_user, update_user, update_user_password from src.services.users.users import create_user, delete_user, get_profile_metadata, get_user_by_userid, update_user, update_user_password

View file

@ -1,15 +1,12 @@
from pydantic import BaseModel from pydantic import BaseModel
from fastapi import Depends, FastAPI, APIRouter, HTTPException, status from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm from fastapi.security import OAuth2PasswordBearer
from passlib.context import CryptContext
from jose import JWTError, jwt from jose import JWTError, jwt
from datetime import datetime, timedelta from datetime import datetime, timedelta
from src.services.users.schemas.users import AnonymousUser from src.services.users.schemas.users import AnonymousUser
from src.services.users.users import * from src.services.users.users import *
from fastapi import Cookie, FastAPI
from src.security.security import * from src.security.security import *
from fastapi_jwt_auth import AuthJWT from fastapi_jwt_auth import AuthJWT
from fastapi_jwt_auth.exceptions import AuthJWTException
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/login") oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/login")

View file

@ -1,10 +1,9 @@
from pprint import pprint
from fastapi import HTTPException, status, Request from fastapi import HTTPException, status, Request
from passlib.context import CryptContext from passlib.context import CryptContext
from passlib.hash import pbkdf2_sha256 from passlib.hash import pbkdf2_sha256
from src.services.roles.schemas.roles import RoleInDB from src.services.roles.schemas.roles import RoleInDB
from src.services.users.schemas.users import User, UserInDB from src.services.users.schemas.users import UserInDB
### 🔒 JWT ############################################################## ### 🔒 JWT ##############################################################

View file

@ -1,8 +1,5 @@
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from fastapi.responses import StreamingResponse
import os
from src.services.blocks.schemas.blocks import Block from src.services.blocks.schemas.blocks import Block
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object

View file

@ -1,8 +1,5 @@
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from fastapi.responses import StreamingResponse
import os
from src.services.blocks.schemas.blocks import Block from src.services.blocks.schemas.blocks import Block
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object

View file

@ -1,8 +1,5 @@
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel
import os
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from fastapi.responses import StreamingResponse
from src.services.blocks.schemas.blocks import Block from src.services.blocks.schemas.blocks import Block
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object

View file

@ -1,7 +1,5 @@
from typing import Any, List, Literal from typing import Any, Literal
from uuid import uuid4
from fastapi import Request
from pydantic import BaseModel from pydantic import BaseModel

View file

@ -3,7 +3,6 @@ import uuid
from fastapi import HTTPException, Request, UploadFile, status from fastapi import HTTPException, Request, UploadFile, status
from src.services.blocks.schemas.files import BlockFile from src.services.blocks.schemas.files import BlockFile
from src.services.users.schemas.users import PublicUser
async def upload_file_and_return_file_object(request: Request, file: UploadFile, activity_id: str, block_id: str, list_of_allowed_file_formats: list, type_of_block: str): async def upload_file_and_return_file_object(request: Request, file: UploadFile, activity_id: str, block_id: str, list_of_allowed_file_formats: list, type_of_block: str):

View file

@ -1,7 +1,7 @@
from pydantic import BaseModel from pydantic import BaseModel
from src.security.security import verify_user_rights_with_roles from src.security.security import verify_user_rights_with_roles
from src.services.users.schemas.users import PublicUser, User from src.services.users.schemas.users import PublicUser
from fastapi import FastAPI, HTTPException, status, Request, Response, BackgroundTasks, UploadFile, File from fastapi import HTTPException, status, Request
from uuid import uuid4 from uuid import uuid4
from datetime import datetime from datetime import datetime

View file

@ -1,4 +1,3 @@
from pydantic import BaseModel
from src.security.security import verify_user_rights_with_roles from src.security.security import verify_user_rights_with_roles
from src.services.courses.activities.uploads.pdfs import upload_pdf from src.services.courses.activities.uploads.pdfs import upload_pdf
from src.services.users.users import PublicUser from src.services.users.users import PublicUser

View file

@ -17,7 +17,7 @@ async def upload_pdf(pdf_file, activity_id):
f.write(contents) f.write(contents)
f.close() f.close()
except Exception as e: except Exception:
return {"message": "There was an error uploading the file"} return {"message": "There was an error uploading the file"}
finally: finally:
pdf_file.file.close() pdf_file.file.close()

View file

@ -17,7 +17,7 @@ async def upload_video(video_file, activity_id):
f.write(contents) f.write(contents)
f.close() f.close()
except Exception as e: except Exception:
return {"message": "There was an error uploading the file"} return {"message": "There was an error uploading the file"}
finally: finally:
video_file.file.close() video_file.file.close()

View file

@ -1,4 +1,3 @@
from pydantic import BaseModel
from src.security.security import verify_user_rights_with_roles from src.security.security import verify_user_rights_with_roles
from src.services.courses.activities.uploads.videos import upload_video from src.services.courses.activities.uploads.videos import upload_video
from src.services.users.users import PublicUser from src.services.users.users import PublicUser

View file

@ -1,15 +1,13 @@
from datetime import datetime from datetime import datetime
import json
import pprint
from typing import List from typing import List
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel from pydantic import BaseModel
from src.security.auth import non_public_endpoint from src.security.auth import non_public_endpoint
from src.services.courses.courses import Course, CourseInDB from src.services.courses.courses import Course
from src.services.courses.activities.activities import Activity, ActivityInDB from src.services.courses.activities.activities import ActivityInDB
from src.security.security import verify_user_rights_with_roles from src.security.security import verify_user_rights_with_roles
from src.services.users.users import PublicUser from src.services.users.users import PublicUser
from fastapi import HTTPException, status, Request, Response, BackgroundTasks, UploadFile, File from fastapi import HTTPException, status, Request
class CourseChapter(BaseModel): class CourseChapter(BaseModel):
@ -115,7 +113,7 @@ async def delete_coursechapter(request: Request, coursechapter_id: str, current
await verify_rights(request, course["course_id"], current_user, "delete") await verify_rights(request, course["course_id"], current_user, "delete")
# Remove coursechapter from course # Remove coursechapter from course
res = await courses.update_one({"course_id": course["course_id"]}, { await courses.update_one({"course_id": course["course_id"]}, {
"$pull": {"chapters": coursechapter_id}}) "$pull": {"chapters": coursechapter_id}})
await courses.update_one({"chapters_content.coursechapter_id": coursechapter_id}, { await courses.update_one({"chapters_content.coursechapter_id": coursechapter_id}, {
@ -200,7 +198,7 @@ async def update_coursechapters_meta(request: Request, course_id: str, coursecha
courses = request.app.db["courses"] courses = request.app.db["courses"]
# update chapters in course # update chapters in course
courseInDB = await courses.update_one({"course_id": course_id}, { await courses.update_one({"course_id": course_id}, {
"$set": {"chapters": coursechapters_metadata.chapterOrder}}) "$set": {"chapters": coursechapters_metadata.chapterOrder}})
if coursechapters_metadata.chapters is not None: if coursechapters_metadata.chapters is not None:
@ -230,7 +228,7 @@ async def verify_rights(request: Request, course_id: str, current_user: PublicUs
if not course: if not course:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_409_CONFLICT, detail=f"Course does not exist") status_code=status.HTTP_409_CONFLICT, detail="Course does not exist")
hasRoleRights = await verify_user_rights_with_roles(request, action, current_user.user_id, course_id, course["org_id"]) hasRoleRights = await verify_user_rights_with_roles(request, action, current_user.user_id, course_id, course["org_id"])
isAuthor = current_user.user_id in course["authors"] isAuthor = current_user.user_id in course["authors"]

View file

@ -1,11 +1,9 @@
import json
from typing import List from typing import List
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel from pydantic import BaseModel
from src.services.users.users import PublicUser, User from src.services.users.users import PublicUser
from src.security.security import * from src.security.security import *
from fastapi import FastAPI, HTTPException, status, Request, Response, BackgroundTasks from fastapi import HTTPException, status, Request
from datetime import datetime
#### Classes #################################################### #### Classes ####################################################

View file

@ -271,7 +271,7 @@ async def get_courses_orgslug(request: Request, page: int = 1, limit: int = 10,
if not org: if not org:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_409_CONFLICT, detail=f"Organization does not exist") status_code=status.HTTP_409_CONFLICT, detail="Organization does not exist")
# get all courses from database # get all courses from database
all_courses = courses.find({"org_id": org['org_id']}).sort( all_courses = courses.find({"org_id": org['org_id']}).sort(
@ -288,12 +288,12 @@ async def verify_rights(request: Request, course_id: str, current_user: PublicUs
course = await courses.find_one({"course_id": course_id}) course = await courses.find_one({"course_id": course_id})
if current_user.user_id == "anonymous" and course["public"] == True and action == "read": if current_user.user_id == "anonymous" and course["public"] is True and action == "read":
return True return True
if not course: if not course:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_409_CONFLICT, detail=f"Course/CourseChapter does not exist") status_code=status.HTTP_409_CONFLICT, detail="Course/CourseChapter does not exist")
hasRoleRights = await verify_user_rights_with_roles(request, action, current_user.user_id, course_id, course["org_id"]) hasRoleRights = await verify_user_rights_with_roles(request, action, current_user.user_id, course_id, course["org_id"])
isAuthor = current_user.user_id in course["authors"] isAuthor = current_user.user_id in course["authors"]

View file

@ -11,7 +11,7 @@ async def upload_thumbnail(thumbnail_file, name_in_disk):
f.write(contents) f.write(contents)
f.close() f.close()
except Exception as e: except Exception:
return {"message": "There was an error uploading the file"} return {"message": "There was an error uploading the file"}
finally: finally:
thumbnail_file.file.close() thumbnail_file.file.close()

View file

@ -1,22 +1,17 @@
import os import os
import requests import requests
from datetime import datetime from datetime import datetime
from fileinput import filename
from pprint import pprint from pprint import pprint
from uuid import uuid4 from uuid import uuid4
from fastapi import File, UploadFile, Request from fastapi import Request
from src.security.security import security_hash_password from src.security.security import security_hash_password
from src.services.courses.chapters import CourseChapter, create_coursechapter from src.services.courses.chapters import CourseChapter, create_coursechapter
from src.services.courses.activities.activities import Activity, create_activity from src.services.courses.activities.activities import Activity, create_activity
from src.services.courses.thumbnails import upload_thumbnail from src.services.users.users import PublicUser, UserInDB
from src.services.users.schemas.users import UserRolesInOrganization
from src.services.users.users import PublicUser, User, UserInDB, UserWithPassword
from src.services.orgs import OrganizationInDB, Organization, create_org from src.services.orgs import Organization, create_org
from src.services.roles.schemas.roles import Permission, Elements, RoleInDB from src.services.roles.schemas.roles import Permission, Elements, RoleInDB
from src.services.users.users import create_user from src.services.courses.courses import CourseInDB
from src.services.courses.courses import Course, CourseInDB, create_course
from src.services.roles.roles import Role, create_role
from faker import Faker from faker import Faker
@ -39,12 +34,12 @@ async def create_initial_data(request: Request):
update_date=str(datetime.now()), update_date=str(datetime.now()),
roles= [], roles= [],
orgs=[], orgs=[],
username=f"admin", username="admin",
email=f"admin@admin.admin", email="admin@admin.admin",
password=str(await security_hash_password("admin")), password=str(await security_hash_password("admin")),
) )
db_admin_user = await database_users.insert_one(admin_user.dict()) await database_users.insert_one(admin_user.dict())
# find admin user # find admin user
users = request.app.db["users"] users = request.app.db["users"]
@ -188,9 +183,9 @@ async def create_initial_data(request: Request):
"https://source.unsplash.com/random/800x600/?img=1") "https://source.unsplash.com/random/800x600/?img=1")
# check if folder exists and create it if not # check if folder exists and create it if not
if not os.path.exists(f"content/uploads/img"): if not os.path.exists("content/uploads/img"):
os.makedirs(f"content/uploads/img") os.makedirs("content/uploads/img")
with open(f"content/uploads/img/{name_in_disk}", "wb") as f: with open(f"content/uploads/img/{name_in_disk}", "wb") as f:
f.write(image.content) f.write(image.content)
@ -198,7 +193,7 @@ async def create_initial_data(request: Request):
course.thumbnail = name_in_disk course.thumbnail = name_in_disk
course = CourseInDB(**course.dict()) course = CourseInDB(**course.dict())
course_in_db = await courses.insert_one(course.dict()) await courses.insert_one(course.dict())
# create chapters # create chapters
for i in range(0, 5): for i in range(0, 5):

View file

@ -1,12 +1,10 @@
import json import json
from typing import List
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel from pydantic import BaseModel
from src.services.users.schemas.users import UserOrganization from src.services.users.schemas.users import UserOrganization
from src.services.users.users import PublicUser, User from src.services.users.users import PublicUser
from src.security.security import * from src.security.security import *
from fastapi import FastAPI, HTTPException, status, Request, Response, BackgroundTasks from fastapi import HTTPException, status, Request
from datetime import datetime
#### Classes #################################################### #### Classes ####################################################
@ -109,8 +107,8 @@ async def update_org(request: Request, org_object: Organization, org_id: str, cu
org = await orgs.find_one({"org_id": org_id}) org = await orgs.find_one({"org_id": org_id})
if org: if org:
owners = org["owners"] org["owners"]
admins = org["admins"] org["admins"]
else: else:
raise HTTPException( raise HTTPException(
@ -153,7 +151,7 @@ async def get_orgs_by_user(request: Request, user_id: str, page: int = 1, limit:
orgs = request.app.db["organizations"] orgs = request.app.db["organizations"]
user = request.app.db["users"] user = request.app.db["users"]
if user_id is "anonymous": if user_id == "anonymous":
# raise error # raise error
raise HTTPException( raise HTTPException(

View file

@ -1,9 +1,7 @@
import json from typing import Literal
from typing import List, Literal
from uuid import uuid4 from uuid import uuid4
from pydantic import BaseModel
from src.services.roles.schemas.roles import Role, RoleInDB from src.services.roles.schemas.roles import Role, RoleInDB
from src.services.users.schemas.users import PublicUser, User from src.services.users.schemas.users import PublicUser
from src.security.security import * from src.security.security import *
from fastapi import HTTPException, status, Request from fastapi import HTTPException, status, Request
from datetime import datetime from datetime import datetime
@ -63,7 +61,7 @@ async def delete_role(request: Request, role_id: str, current_user: PublicUser):
#### Security #################################################### #### Security ####################################################
async def verify_user_permissions_on_roles(request: Request, current_user: PublicUser, action: Literal["create", "read", "update", "delete"], role_id: str | None): async def verify_user_permissions_on_roles(request: Request, current_user: PublicUser, action: Literal["create", "read", "update", "delete"], role_id: str | None):
users = request.app.db["users"] request.app.db["users"]
roles = request.app.db["roles"] roles = request.app.db["roles"]
# If current user is not authenticated # If current user is not authenticated

View file

@ -1,4 +1,4 @@
from typing import List, Literal from typing import Literal
from pydantic import BaseModel from pydantic import BaseModel

View file

@ -1,6 +1,4 @@
from cmath import log
from datetime import datetime from datetime import datetime
import json
from typing import List, Literal, Optional from typing import List, Literal, Optional
from uuid import uuid4 from uuid import uuid4
from fastapi import HTTPException, Request, status from fastapi import HTTPException, Request, status

View file

@ -2,7 +2,6 @@ from datetime import datetime
from typing import Literal from typing import Literal
from uuid import uuid4 from uuid import uuid4
from fastapi import HTTPException, Request, status from fastapi import HTTPException, Request, status
from src.services.roles.schemas.roles import Role
from src.security.security import security_hash_password, security_verify_password from src.security.security import security_hash_password, security_verify_password
from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserOrganization, UserRolesInOrganization, UserWithPassword, UserInDB from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserOrganization, UserRolesInOrganization, UserWithPassword, UserInDB
@ -195,7 +194,7 @@ async def get_user_by_userid(request: Request, user_id: str):
async def get_profile_metadata(request: Request, user): async def get_profile_metadata(request: Request, user):
users = request.app.db["users"] users = request.app.db["users"]
roles = request.app.db["roles"] request.app.db["roles"]
user = await users.find_one({"user_id": user['user_id']}) user = await users.find_one({"user_id": user['user_id']})