fix: group creation (#1126)

* fix: unify group creation - closes #1100

* tests: disable password hashing during testing

* tests: fix email config tests
This commit is contained in:
Hayden
2022-04-02 19:33:15 -08:00
committed by GitHub
parent e9bb39c744
commit c988de1921
11 changed files with 113 additions and 33 deletions

View File

@@ -2,7 +2,9 @@ from pydantic import UUID4
from mealie.pkgs.stats import fs_stats
from mealie.repos.repository_factory import AllRepositories
from mealie.schema.group.group_preferences import CreateGroupPreferences
from mealie.schema.group.group_statistics import GroupStatistics, GroupStorage
from mealie.schema.user.user import GroupBase
from mealie.services._base_service import BaseService
ALLOWED_SIZE = 500 * fs_stats.megabyte
@@ -14,6 +16,23 @@ class GroupService(BaseService):
self.repos = repos
super().__init__()
@staticmethod
def create_group(repos: AllRepositories, g_base: GroupBase, prefs: CreateGroupPreferences | None = None):
"""
Creates a new group in the database with the required associated table references to ensure
the group includes required preferences.
"""
new_group = repos.groups.create(g_base)
if prefs is None:
prefs = CreateGroupPreferences(group_id=new_group.id)
else:
prefs.group_id = new_group.id
repos.group_preferences.create(prefs)
return new_group
def calculate_statistics(self, group_id: None | UUID4 = None) -> GroupStatistics:
"""
calculate_statistics calculates the statistics for the group and returns

View File

@@ -1,18 +0,0 @@
from uuid import uuid4
from mealie.repos.repository_factory import AllRepositories
from mealie.schema.group.group_preferences import CreateGroupPreferences
from mealie.schema.user.user import GroupBase, GroupInDB
def create_new_group(db: AllRepositories, g_base: GroupBase, g_preferences: CreateGroupPreferences = None) -> GroupInDB:
created_group = db.groups.create(g_base)
# Assign Temporary ID before group is created
g_preferences = g_preferences or CreateGroupPreferences(group_id=uuid4())
g_preferences.group_id = created_group.id
db.group_preferences.create(g_preferences)
return created_group

View File

@@ -8,7 +8,7 @@ from mealie.repos.repository_factory import AllRepositories
from mealie.schema.group.group_preferences import CreateGroupPreferences
from mealie.schema.user.registration import CreateUserRegistration
from mealie.schema.user.user import GroupBase, GroupInDB, PrivateUser, UserIn
from mealie.services.group_services.group_utils import create_new_group
from mealie.services.group_services.group_service import GroupService
class RegistrationService:
@@ -19,7 +19,7 @@ class RegistrationService:
self.logger = logger
self.repos = db
def _create_new_user(self, group: GroupInDB, new_group=bool) -> PrivateUser:
def _create_new_user(self, group: GroupInDB, new_group: bool) -> PrivateUser:
new_user = UserIn(
email=self.registration.email,
username=self.registration.username,
@@ -49,7 +49,7 @@ class RegistrationService:
recipe_disable_amount=self.registration.advanced,
)
return create_new_group(self.repos, group_data, group_preferences)
return GroupService.create_group(self.repos, group_data, group_preferences)
def register_user(self, registration: CreateUserRegistration) -> PrivateUser:
self.registration = registration