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

@ -1248,6 +1248,8 @@ def user(request, user_uuid):
def groups(request):
current_user = _anonymous_or_real(request)
if request.method == 'GET':
context = get_base_context(request)
context['title'] = f'enviPath - Groups'
@ -1266,13 +1268,7 @@ def groups(request):
group_name = request.POST.get('group-name')
group_description = request.POST.get('group-description', s.DEFAULT_VALUES['description'])
g = Group()
g.name = group_name
g.description = group_description
g.save()
g.user_member.add(request.user)
g.save()
g = GroupManager.create_group(current_user, group_name, group_description)
return redirect(g.url)
@ -1294,8 +1290,39 @@ def group(request, group_uuid):
context['group'] = current_group
# TODO use managers
context['users'] = get_user_model().objects.exclude(id__in=current_group.user_member.all())
context['groups'] = Group.objects.exclude(id__in=current_group.group_member.all()).exclude(id=current_group.pk)
context['packages'] = Package.objects.filter(id__in=GroupPackagePermission.objects.filter(group=current_group).values('package').distinct())
return render(request, 'objects/group.html', context)
elif request.method == 'POST':
if s.DEBUG:
for k, v in request.POST.items():
print(k, v)
if hidden := request.POST.get('hidden', None):
if hidden == 'delete-group':
current_group.delete()
return redirect(s.SERVER_URL + '/group')
else:
return HttpResponseBadRequest()
member_url = request.POST.get('member')
action = request.POST.get('action')
if all([member_url, action]) and action in ['add', 'remove']:
if 'user' in member_url:
member = UserManager.get_user_lp(member_url)
else:
member = GroupManager.get_group_lp(member_url)
GroupManager.update_members(current_user, current_group, member, action)
return redirect(current_group.url)
def settings(request):
current_user = _anonymous_or_real(request)