Implement basic Group handling (#3)

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#3
This commit is contained in:
2025-06-26 00:18:40 +12:00
parent 844d0708c9
commit bcd9451450
10 changed files with 269 additions and 15 deletions

View File

@ -44,15 +44,22 @@ class UserManager(object):
def get_users():
return []
@staticmethod
def get_user_lp(user_url: str):
uuid = user_url.strip().split('/')[-1]
return get_user_model().objects.get(uuid=uuid)
class GroupManager(object):
@staticmethod
def create_group(owner):
def create_group(current_user, name, description):
g = Group()
g.name = 'enviPath Users'
g.description = 'All enviPath Users'
g.owner = owner
g.name = name
g.description = description
g.owner = current_user
g.save()
g.user_member.add(current_user)
g.save()
return g
@ -78,6 +85,26 @@ class GroupManager(object):
def get_groups(user):
return Group.objects.filter(user_member=user)
@staticmethod
@transaction.atomic
def update_members(caller: User, group: Group, member: Union[User, Group], add_or_remove: str):
if caller != group.owner:
raise ValueError('Only the group Owner is allowed to add members!')
if isinstance(member, Group):
if add_or_remove == 'add':
group.group_member.add(member)
else:
group.group_member.remove(member)
else:
if add_or_remove == 'add':
group.user_member.add(member)
else:
group.user_member.remove(member)
group.save()
class PackageManager(object):
package_pattern = re.compile(r".*/package/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$")