@@ -181,10 +181,113 @@ class OpenPGPKeyringViewSet(RepositoryViewSet, ModifyRepositoryActionMixin, Role
181181 }
182182
183183
184- class OpenPGPDistributionViewSet (DistributionViewSet ):
184+ class OpenPGPKeyringVersionViewSet (RepositoryVersionViewSet ):
185+ parent_viewset = OpenPGPKeyringViewSet
186+
187+ DEFAULT_ACCESS_POLICY = {
188+ "statements" : [
189+ {
190+ "action" : ["list" , "retrieve" ],
191+ "principal" : "authenticated" ,
192+ "effect" : "allow" ,
193+ "condition" : "has_repository_model_or_domain_or_obj_perms:core.view_openpgpkeyring" ,
194+ },
195+ {
196+ "action" : ["destroy" ],
197+ "principal" : "authenticated" ,
198+ "effect" : "allow" ,
199+ "condition" : [
200+ "has_repository_model_or_domain_or_obj_perms:core.delete_openpgpkeyring" ,
201+ "has_repository_model_or_domain_or_obj_perms:core.view_openpgpkeyring" ,
202+ ],
203+ },
204+ {
205+ "action" : ["repair" ],
206+ "principal" : "authenticated" ,
207+ "effect" : "allow" ,
208+ "condition" : [
209+ "has_repository_model_or_domain_or_obj_perms:core.repair_openpgpkeyring" ,
210+ "has_repository_model_or_domain_or_obj_perms:core.view_openpgpkeyring" ,
211+ ],
212+ },
213+ ],
214+ }
215+
216+
217+ class OpenPGPDistributionViewSet (DistributionViewSet , RolesMixin ):
185218 endpoint_name = "openpgp"
186219 queryset = models .OpenPGPDistribution .objects .all ()
187220 serializer_class = OpenPGPDistributionSerializer
188221 filterset_class = OpenPGPDistributionFilter
222+ queryset_filtering_required_permission = "core.view_openpgpdistribution"
189223
190- # DEFAULT_ACCESS_POLICY
224+ DEFAULT_ACCESS_POLICY = {
225+ "statements" : [
226+ {
227+ "action" : ["list" , "my_permissions" ],
228+ "principal" : "authenticated" ,
229+ "effect" : "allow" ,
230+ },
231+ {
232+ "action" : ["retrieve" ],
233+ "principal" : "authenticated" ,
234+ "effect" : "allow" ,
235+ "condition" : "has_model_or_domain_or_obj_perms:core.view_openpgpdistribution" ,
236+ },
237+ {
238+ "action" : ["create" ],
239+ "principal" : "authenticated" ,
240+ "effect" : "allow" ,
241+ "condition" : [
242+ "has_model_or_domain_perms:core.add_openpgpdistribution" ,
243+ "has_repo_or_repo_ver_param_model_or_domain_or_obj_perms:"
244+ "core.view_openpgpkeyring" ,
245+ ],
246+ },
247+ {
248+ "action" : ["update" , "partial_update" , "set_label" , "unset_label" ],
249+ "principal" : "authenticated" ,
250+ "effect" : "allow" ,
251+ "condition" : [
252+ "has_model_or_domain_or_obj_perms:core.change_openpgpdistribution" ,
253+ "has_model_or_domain_or_obj_perms:core.view_openpgpdistribution" ,
254+ "has_repo_or_repo_ver_param_model_or_domain_or_obj_perms:"
255+ "core.view_openpgpkeyring" ,
256+ ],
257+ },
258+ {
259+ "action" : ["destroy" ],
260+ "principal" : "authenticated" ,
261+ "effect" : "allow" ,
262+ "condition" : [
263+ "has_model_or_domain_or_obj_perms:core.delete_openpgpdistribution" ,
264+ "has_model_or_domain_or_obj_perms:core.view_openpgpdistribution" ,
265+ ],
266+ },
267+ {
268+ "action" : ["list_roles" , "add_role" , "remove_role" ],
269+ "principal" : "authenticated" ,
270+ "effect" : "allow" ,
271+ "condition" : [
272+ "has_model_or_domain_or_obj_perms:core.manage_roles_openpgpdistribution" ,
273+ ],
274+ },
275+ ],
276+ "creation_hooks" : [
277+ {
278+ "function" : "add_roles_for_object_creator" ,
279+ "parameters" : {"roles" : "core.openpgpdistribution_owner" },
280+ },
281+ ],
282+ "queryset_scoping" : {"function" : "scope_queryset" },
283+ }
284+ LOCKED_ROLES = {
285+ "core.openpgpdistribution_creator" : ["core.add_openpgpdistribution" ],
286+ "core.openpgpdistribution_owner" : [
287+ "core.view_openpgpdistribution" ,
288+ "core.change_openpgpdistribution" ,
289+ "core.delete_openpgpdistribution" ,
290+ "core.manage_roles_openpgpdistribution" ,
291+ ],
292+ "core.openpgpdistribution_viewer" : ["core.view_openpgpdistribution" ],
293+ }
0 commit comments