Feature/user photo storage (#877)

* add default assets for user profile

* add recipe avatar

* change user_id to UUID

* add profile image upload

* setup image cache keys

* cleanup tests and add image tests

* purge user data on delete

* new user repository tests

* add user_id validator for int -> UUID conversion

* delete depreciated route

* force set content type

* refactor tests to use temp directory

* validate parent exists before createing

* set user_id to correct type

* update instruction id

* reset primary key on migration
This commit is contained in:
Hayden
2021-12-18 19:04:36 -09:00
committed by GitHub
parent a2f8f27193
commit ea7c4771ee
64 changed files with 433 additions and 181 deletions

View File

@@ -1,10 +1,10 @@
import datetime
from pathlib import Path
from typing import Any, Optional
from uuid import UUID, uuid4
from uuid import uuid4
from fastapi_camelcase import CamelModel
from pydantic import BaseModel, Field, validator
from pydantic import UUID4, BaseModel, Field, validator
from pydantic.utils import GetterDict
from slugify import slugify
@@ -63,8 +63,8 @@ class CreateRecipe(CamelModel):
class RecipeSummary(CamelModel):
id: Optional[int]
user_id: int = 0
group_id: UUID = Field(default_factory=uuid4)
user_id: UUID4 = Field(default_factory=uuid4)
group_id: UUID4 = Field(default_factory=uuid4)
name: Optional[str]
slug: str = ""
@@ -109,6 +109,12 @@ class RecipeSummary(CamelModel):
return uuid4()
return group_id
@validator("user_id", always=True, pre=True)
def validate_user_id(user_id: list[Any]):
if isinstance(user_id, int):
return uuid4()
return user_id
class Recipe(RecipeSummary):
recipe_ingredient: Optional[list[RecipeIngredient]] = []