mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-11 02:13:12 -05:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user