@@ -24,13 +24,17 @@ def populate(self):
2424 def add_snippet_link_to_admin_menu (self ):
2525 admin_menu = self .toolbar .get_or_create_menu (ADMIN_MENU_IDENTIFIER )
2626
27- url = admin_reverse (" djangocms_snippet_snippet_changelist" )
27+ url = admin_reverse (' djangocms_snippet_snippet_changelist' )
2828
29- admin_menu .add_sideframe_item (
30- _ ("Snippets" ),
31- url = url ,
32- position = self .get_insert_position (admin_menu , self .plural_name ),
33- )
29+ add_perm = self .request .user .has_perm ('djangocms_snippet.add_snippet' )
30+ change_perm = self .request .user .has_perm ('djangocms_snippet.change_snippet' )
31+
32+ if add_perm or change_perm :
33+ admin_menu .add_sideframe_item (
34+ _ ("Snippets" ),
35+ url = url ,
36+ position = self .get_insert_position (admin_menu , self .plural_name ),
37+ )
3438
3539 @classmethod
3640 def get_insert_position (cls , admin_menu , item_name ):
@@ -47,10 +51,10 @@ def get_insert_position(cls, admin_menu, item_name):
4751 start = admin_menu .find_first (Break , identifier = SHORTCUTS_BREAK )
4852 end = admin_menu .find_first (Break , identifier = ADMINISTRATION_BREAK )
4953
50- items = admin_menu .get_items ()[start .index + 1 : end .index ]
54+ items = admin_menu .get_items ()[start .index + 1 : end .index ]
5155 for idx , item in enumerate (items ):
5256 try :
53- if force_str (item_name .lower ()) < force_str (item .name .lower ()):
57+ if force_str (item_name .lower ()) < force_str (item .name .lower ()): # noqa: E501
5458 return idx + start .index + 1
5559 except AttributeError :
5660 # Some item types do not have a 'name' attribute.
0 commit comments