MCPcopy
hub / github.com/learnhouse/learnhouse / create_usergroup

Function create_usergroup

apps/api/src/services/users/usergroups.py:106–167  ·  view source on GitHub ↗
(
    request: Request,
    db_session: AsyncSession,
    current_user: PublicUser | AnonymousUser,
    usergroup_create: UserGroupCreate,
)

Source from the content-addressed store, hash-verified

104
105
106async def create_usergroup(
107 request: Request,
108 db_session: AsyncSession,
109 current_user: PublicUser | AnonymousUser,
110 usergroup_create: UserGroupCreate,
111) -> UserGroupRead:
112
113 from src.security.auth import resolve_acting_user_id
114
115 usergroup = UserGroup.model_validate(usergroup_create)
116
117 await require_org_membership(
118 resolve_acting_user_id(current_user), usergroup_create.org_id, db_session
119 )
120
121 # RBAC check
122 await rbac_check(
123 request,
124 usergroup_uuid="usergroup_X",
125 current_user=current_user,
126 action="create",
127 db_session=db_session,
128 )
129
130 # Check if Organization exists
131 statement = select(Organization).where(Organization.id == usergroup_create.org_id)
132 org = (await db_session.execute(statement)).scalars().first()
133
134 if not org or org.id is None:
135 raise HTTPException(
136 status_code=400,
137 detail="Organization does not exist",
138 )
139
140 # Usage check
141 await check_limits_with_usage("courses", org.id, db_session)
142
143 # Complete the object
144 usergroup.usergroup_uuid = f"usergroup_{uuid4()}"
145 usergroup.creation_date = str(datetime.now())
146 usergroup.update_date = str(datetime.now())
147
148 # Save the object
149 db_session.add(usergroup)
150 await db_session.commit()
151 await db_session.refresh(usergroup)
152
153 # Feature usage
154 await increase_feature_usage("usergroups", org.id, db_session)
155
156 await dispatch_webhooks(
157 event_name="usergroup_created",
158 org_id=org.id,
159 data={
160 "usergroup_uuid": usergroup.usergroup_uuid,
161 "name": usergroup.name,
162 },
163 )

Calls 10

require_org_membershipFunction · 0.90
resolve_acting_user_idFunction · 0.90
check_limits_with_usageFunction · 0.90
increase_feature_usageFunction · 0.90
dispatch_webhooksFunction · 0.90
commitMethod · 0.80
rbac_checkFunction · 0.70
firstMethod · 0.45
scalarsMethod · 0.45
executeMethod · 0.45