Added Shortcut to make Packages Public (#54)

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#54
This commit is contained in:
2025-08-22 07:31:08 +12:00
parent c79a1f2040
commit b95ec98a2f
5 changed files with 64 additions and 5 deletions

View File

@ -183,6 +183,25 @@ class PackageManager(object):
return True
return False
@staticmethod
def administrable(user, package):
if UserPackagePermission.objects.filter(package=package, user=user, permission=Permission.ALL[0]).exists() or \
GroupPackagePermission.objects.filter(package=package, group__in=GroupManager.get_groups(user), permission=Permission.ALL[0]).exists() or \
user.is_superuser:
return True
return False
# @staticmethod
# def get_package_permission(user: 'User', package: Union[str, 'Package']):
# if PackageManager.administrable(user, package):
# return Permission.ALL[0]
# elif PackageManager.writable(user, package):
# return Permission.WRITE[0]
# elif PackageManager.readable(user, package):
# return Permission.READ[0]
# else:
# return None
@staticmethod
def has_package_permission(user: 'User', package: Union[str, 'Package'], permission: str):

View File

@ -745,8 +745,6 @@ def package(request, package_uuid):
context['breadcrumbs'] = breadcrumbs(current_package)
context['package'] = current_package
# context['package_group'] = GroupPackagePermission.objects.filter(package=current_package,
# permission=GroupPackagePermission.ALL)
user_perms = UserPackagePermission.objects.filter(package=current_package)
users = get_user_model().objects.exclude(
@ -765,14 +763,16 @@ def package(request, package_uuid):
elif request.method == 'POST':
if s.DEBUG:
for k, v in request.POST.items():
logger.debug(f"{k}\t{v}")
log_post_params(request)
if hidden := request.POST.get('hidden', None):
if hidden == 'delete':
logger.debug(current_package.delete())
return redirect(s.SERVER_URL + '/package')
elif hidden == 'publish-package':
for g in Group.objects.filter(public=True):
PackageManager.update_permissions(current_user, current_package, g, Permission.READ[0])
return redirect(current_package.url)
else:
return HttpResponseBadRequest()