From b95ec98a2fcd41d60b543a12177fd72c1dda5e9a Mon Sep 17 00:00:00 2001 From: jebus Date: Fri, 22 Aug 2025 07:31:08 +1200 Subject: [PATCH] Added Shortcut to make Packages Public (#54) Co-authored-by: Tim Lorsbach Reviewed-on: https://git.envipath.com/enviPath/enviPy/pulls/54 --- epdb/logic.py | 19 ++++++++++ epdb/views.py | 10 +++--- templates/actions/objects/package.html | 4 +++ .../modals/objects/publish_package_modal.html | 35 +++++++++++++++++++ templates/objects/package.html | 1 + 5 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 templates/modals/objects/publish_package_modal.html diff --git a/epdb/logic.py b/epdb/logic.py index 7d0fce9d..2efec048 100644 --- a/epdb/logic.py +++ b/epdb/logic.py @@ -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): diff --git a/epdb/views.py b/epdb/views.py index d9279ed7..e1ffd681 100644 --- a/epdb/views.py +++ b/epdb/views.py @@ -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() diff --git a/templates/actions/objects/package.html b/templates/actions/objects/package.html index d0aa5394..9fd7adf2 100644 --- a/templates/actions/objects/package.html +++ b/templates/actions/objects/package.html @@ -7,6 +7,10 @@ Edit Permissions +
  • + + Publish Package +
  • License diff --git a/templates/modals/objects/publish_package_modal.html b/templates/modals/objects/publish_package_modal.html new file mode 100644 index 00000000..2e22822c --- /dev/null +++ b/templates/modals/objects/publish_package_modal.html @@ -0,0 +1,35 @@ +{% load static %} + + + diff --git a/templates/objects/package.html b/templates/objects/package.html index 90d1eb02..48668d8f 100644 --- a/templates/objects/package.html +++ b/templates/objects/package.html @@ -5,6 +5,7 @@ {% block action_modals %} {% include "modals/objects/edit_package_modal.html" %} {% include "modals/objects/edit_package_permissions_modal.html" %} + {% include "modals/objects/publish_package_modal.html" %} {% include "modals/objects/set_license_modal.html" %} {% include "modals/objects/generic_delete_modal.html" %} {% endblock action_modals %}