mirror of
https://github.com/hay-kot/mealie.git
synced 2025-07-10 15:23:43 -07:00
* add basic pre-commit file * add flake8 * add isort * add pep585-upgrade (typing upgrades) * use namespace for import * add mypy * update ci for backend * flake8 scope * fix version format * update makefile * disable strict option (temporary) * fix mypy issues * upgrade type hints (pre-commit) * add vscode typing check * add types to dev deps * remote container draft * update setup script * update compose version * run setup on create * dev containers update * remove unused pages * update setup tips * expose ports * Update pre-commit to include flask8-print (#1053) * Add in flake8-print to pre-commit * pin version of flake8-print * formatting * update getting strated docs * add mypy to pre-commit * purge .mypy_cache on clean * drop mypy Co-authored-by: zackbcom <zackbcom@users.noreply.github.com>
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import random
|
|
import shutil
|
|
from typing import Optional
|
|
|
|
from mealie.assets import users as users_assets
|
|
from mealie.schema.user.user import PrivateUser, User
|
|
|
|
from .repository_generic import RepositoryGeneric
|
|
|
|
|
|
class RepositoryUsers(RepositoryGeneric[PrivateUser, User]):
|
|
def update_password(self, id, password: str):
|
|
entry = self._query_one(match_value=id)
|
|
entry.update_password(password)
|
|
self.session.commit()
|
|
|
|
return self.schema.from_orm(entry)
|
|
|
|
def create(self, user: PrivateUser | dict):
|
|
new_user = super().create(user)
|
|
|
|
# Select Random Image
|
|
all_images = [
|
|
users_assets.img_random_1,
|
|
users_assets.img_random_2,
|
|
users_assets.img_random_3,
|
|
]
|
|
random_image = random.choice(all_images)
|
|
shutil.copy(random_image, new_user.directory() / "profile.webp")
|
|
|
|
return new_user
|
|
|
|
def delete(self, id: str) -> User:
|
|
entry = super().delete(id)
|
|
# Delete the user's directory
|
|
shutil.rmtree(PrivateUser.get_directory(id))
|
|
return entry
|
|
|
|
def get_by_username(self, username: str, limit=1) -> Optional[User]:
|
|
dbuser = self.session.query(User).filter(User.username == username).one_or_none()
|
|
if dbuser is None:
|
|
return None
|
|
return self.schema.from_orm(dbuser)
|