forked from enviPath/enviPy
Implement basic Group handling (#3)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#3
This commit is contained in:
@ -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}$")
|
||||
|
||||
Reference in New Issue
Block a user