We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
menuCreateItem input issue
Why `menuCreateItem` does not require `menu` argument on the schema level, but returns an error if not given? It doesn't look right. 
Besides, do we really need to specify `menu` argument, if `parent` is given? It's not like child could be pinned to different menu than its parent.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `saleor/graphql/menu/mutations.py`
Content:
```
1 import graphene
2 from graphql_jwt.decorators import permission_required
3 
4 from ...menu import models
5 from ..core.mutations import BaseMutation, ModelDeleteMutation, ModelMutation
6 from ..product.types import Category, Collection
7 from ..page.types import Page
8 from .types import Menu
9 
10 
11 class MenuItemInput(graphene.InputObjectType):
12     name = graphene.String(description='Name of the menu item.')
13     url = graphene.String(description='URL of the pointed item.')
14     category = graphene.ID(
15         description='Category to which item points.', name='category')
16     collection = graphene.ID(
17         description='Collection to which item points.', name='collection')
18     page = graphene.ID(
19         description='Page to which item points.', name='page')
20 
21 
22 class MenuItemCreateInput(MenuItemInput):
23     menu = graphene.ID(
24         description='Menu to which item belongs to.', name='menu')
25     parent = graphene.ID(
26         description='''
27         ID of the parent menu. If empty, menu will be top level
28         menu.''',
29         name='parent')
30 
31 
32 class MenuInput(graphene.InputObjectType):
33     name = graphene.String(description='Name of the menu.')
34 
35 
36 class MenuCreateInput(MenuInput):
37     items = graphene.List(
38         MenuItemInput, description='List of menu items.')
39 
40 
41 class MenuCreate(ModelMutation):
42     class Arguments:
43         input = MenuCreateInput(
44             required=True,
45             description='Fields required to create a menu.')
46 
47     class Meta:
48         description = 'Creates a new Menu'
49         model = models.Menu
50 
51     @classmethod
52     def user_is_allowed(cls, user, input):
53         return user.has_perm('menu.manage_menus')
54 
55     @classmethod
56     def clean_input(cls, info, instance, input, errors):
57         cleaned_input = super().clean_input(info, instance, input, errors)
58         items = []
59         for item in cleaned_input.get('items', []):
60             category = item.get('category')
61             collection = item.get('collection')
62             page = item.get('page')
63             url = item.get('url')
64             if len([i for i in [category, collection, page, url] if i]) > 1:
65                 cls.add_error(
66                     errors, 'items', 'More than one item provided.')
67             else:
68                 if category:
69                     category = cls.get_node_or_error(
70                         info, category, errors, 'items', only_type=Category)
71                     item['category'] = category
72                 elif collection:
73                     collection = cls.get_node_or_error(
74                         info, collection, errors, 'items',
75                         only_type=Collection)
76                     item['collection'] = collection
77                 elif page:
78                     page = cls.get_node_or_error(
79                         info, page, errors, 'items', only_type=Page)
80                     item['page'] = page
81                 elif not url:
82                     cls.add_error(errors, 'items', 'No menu item provided.')
83                 items.append(item)
84         cleaned_input['items'] = items
85         return cleaned_input
86 
87     @classmethod
88     def _save_m2m(cls, info, instance, cleaned_data):
89         super()._save_m2m(info, instance, cleaned_data)
90         items = cleaned_data.get('items', [])
91         for item in items:
92             instance.items.create(**item)
93 
94 
95 class MenuUpdate(ModelMutation):
96     class Arguments:
97         id = graphene.ID(
98             required=True, description='ID of a menu to update.')
99         input = MenuInput(
100             required=True,
101             description='Fields required to update a menu.')
102 
103     class Meta:
104         description = 'Updates a menu.'
105         model = models.Menu
106 
107     @classmethod
108     def user_is_allowed(cls, user, input):
109         return user.has_perm('menu.manage_menus')
110 
111 
112 class MenuDelete(ModelDeleteMutation):
113     class Arguments:
114         id = graphene.ID(
115             required=True, description='ID of a menu to delete.')
116 
117     class Meta:
118         description = 'Deletes a menu.'
119         model = models.Menu
120 
121     @classmethod
122     def user_is_allowed(cls, user, input):
123         return user.has_perm('menu.manage_menus')
124 
125 
126 class MenuItemCreate(ModelMutation):
127     class Arguments:
128         input = MenuItemCreateInput(
129             required=True,
130             description="""Fields required to update a menu item.
131             Only one of 'url', 'category', 'page', 'collection' is allowed
132             per item""")
133 
134     class Meta:
135         description = 'Creates a new Menu'
136         model = models.MenuItem
137 
138     @classmethod
139     def user_is_allowed(cls, user, input):
140         return user.has_perm('menu.manage_menus')
141 
142     @classmethod
143     def clean_input(cls, info, instance, input, errors):
144         cleaned_input = super().clean_input(info, instance, input, errors)
145         items = [
146             cleaned_input.get('page'), cleaned_input.get('collection'),
147             cleaned_input.get('url'), cleaned_input.get('category')]
148         items = [item for item in items if item is not None]
149         if len(items) > 1:
150             cls.add_error(
151                 errors=errors,
152                 field='items', message='More than one item provided.')
153         return cleaned_input
154 
155 
156 class MenuItemUpdate(MenuItemCreate):
157     class Arguments:
158         id = graphene.ID(
159             required=True, description='ID of a menu item to update.')
160         input = MenuItemInput(
161             required=True,
162             description="""Fields required to update a menu item.
163             Only one of 'url', 'category', 'page', 'collection' is allowed
164             per item""")
165 
166     class Meta:
167         description = 'Updates a menu item.'
168         model = models.MenuItem
169 
170     @classmethod
171     def user_is_allowed(cls, user, input):
172         return user.has_perm('menu.manage_menus')
173 
174     @classmethod
175     def construct_instance(cls, instance, cleaned_data):
176         # Only one item can be assigned per menu item
177         instance.page = None
178         instance.collection = None
179         instance.category = None
180         instance.url = None
181         return super().construct_instance(instance, cleaned_data)
182 
183 
184 class MenuItemDelete(ModelDeleteMutation):
185     class Arguments:
186         id = graphene.ID(
187             required=True, description='ID of a menu item to delete.')
188 
189     class Meta:
190         description = 'Deletes a menu item.'
191         model = models.MenuItem
192 
193     @classmethod
194     def user_is_allowed(cls, user, input):
195         return user.has_perm('menu.manage_menus')
196 
197 
198 class NavigationType(graphene.Enum):
199     MAIN = 'main'
200     SECONDARY = 'secondary'
201 
202     @property
203     def description(self):
204         if self == NavigationType.MAIN:
205             return 'Main storefront\'s navigation.'
206         return 'Secondary storefront\'s navigation.'
207 
208 
209 class AssignNavigation(BaseMutation):
210     menu = graphene.Field(Menu, description='Assigned navigation menu.')
211 
212     class Arguments:
213         menu = graphene.ID(
214             description='ID of the menu.')
215         navigation_type = NavigationType(
216             description='Type of the navigation bar to assign the menu to.',
217             required=True)
218 
219     class Meta:
220         description = 'Assigns storefront\'s navigation menus.'
221 
222     @classmethod
223     @permission_required(['menu.manage_menus', 'site.manage_settings'])
224     def mutate(cls, root, info, navigation_type, menu=None):
225         errors = []
226         site_settings = info.context.site.settings
227         if menu is not None:
228             menu = cls.get_node_or_error(
229                 info, menu, errors=errors, field='menu')
230         if not errors:
231             if navigation_type == NavigationType.MAIN:
232                 site_settings.top_menu = menu
233                 site_settings.save(update_fields=['top_menu'])
234             elif navigation_type == NavigationType.SECONDARY:
235                 site_settings.bottom_menu = menu
236                 site_settings.save(update_fields=['bottom_menu'])
237             else:
238                 raise AssertionError(
239                     'Unknown navigation type: %s' % navigation_type)
240         return AssignNavigation(menu=menu, errors=errors)
241
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/saleor/graphql/menu/mutations.py b/saleor/graphql/menu/mutations.py
--- a/saleor/graphql/menu/mutations.py
+++ b/saleor/graphql/menu/mutations.py
@@ -21,7 +21,8 @@
 
 class MenuItemCreateInput(MenuItemInput):
     menu = graphene.ID(
-        description='Menu to which item belongs to.', name='menu')
+        description='Menu to which item belongs to.', name='menu',
+        required=True)
     parent = graphene.ID(
         description='''
         ID of the parent menu. If empty, menu will be top level

{"golden_diff": "diff --git a/saleor/graphql/menu/mutations.py b/saleor/graphql/menu/mutations.py\n--- a/saleor/graphql/menu/mutations.py\n+++ b/saleor/graphql/menu/mutations.py\n@@ -21,7 +21,8 @@\n \n class MenuItemCreateInput(MenuItemInput):\n     menu = graphene.ID(\n-        description='Menu to which item belongs to.', name='menu')\n+        description='Menu to which item belongs to.', name='menu',\n+        required=True)\n     parent = graphene.ID(\n         description='''\n         ID of the parent menu. If empty, menu will be top level\n", "issue": "menuCreateItem input issue\nWhy `menuCreateItem` does not require `menu` argument on the schema level, but returns an error if not given? It doesn't look right. \r\nBesides, do we really need to specify `menu` argument, if `parent` is given? It's not like child could be pinned to different menu than its parent.\n", "before_files": [{"content": "import graphene\nfrom graphql_jwt.decorators import permission_required\n\nfrom ...menu import models\nfrom ..core.mutations import BaseMutation, ModelDeleteMutation, ModelMutation\nfrom ..product.types import Category, Collection\nfrom ..page.types import Page\nfrom .types import Menu\n\n\nclass MenuItemInput(graphene.InputObjectType):\n    name = graphene.String(description='Name of the menu item.')\n    url = graphene.String(description='URL of the pointed item.')\n    category = graphene.ID(\n        description='Category to which item points.', name='category')\n    collection = graphene.ID(\n        description='Collection to which item points.', name='collection')\n    page = graphene.ID(\n        description='Page to which item points.', name='page')\n\n\nclass MenuItemCreateInput(MenuItemInput):\n    menu = graphene.ID(\n        description='Menu to which item belongs to.', name='menu')\n    parent = graphene.ID(\n        description='''\n        ID of the parent menu. If empty, menu will be top level\n        menu.''',\n        name='parent')\n\n\nclass MenuInput(graphene.InputObjectType):\n    name = graphene.String(description='Name of the menu.')\n\n\nclass MenuCreateInput(MenuInput):\n    items = graphene.List(\n        MenuItemInput, description='List of menu items.')\n\n\nclass MenuCreate(ModelMutation):\n    class Arguments:\n        input = MenuCreateInput(\n            required=True,\n            description='Fields required to create a menu.')\n\n    class Meta:\n        description = 'Creates a new Menu'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def clean_input(cls, info, instance, input, errors):\n        cleaned_input = super().clean_input(info, instance, input, errors)\n        items = []\n        for item in cleaned_input.get('items', []):\n            category = item.get('category')\n            collection = item.get('collection')\n            page = item.get('page')\n            url = item.get('url')\n            if len([i for i in [category, collection, page, url] if i]) > 1:\n                cls.add_error(\n                    errors, 'items', 'More than one item provided.')\n            else:\n                if category:\n                    category = cls.get_node_or_error(\n                        info, category, errors, 'items', only_type=Category)\n                    item['category'] = category\n                elif collection:\n                    collection = cls.get_node_or_error(\n                        info, collection, errors, 'items',\n                        only_type=Collection)\n                    item['collection'] = collection\n                elif page:\n                    page = cls.get_node_or_error(\n                        info, page, errors, 'items', only_type=Page)\n                    item['page'] = page\n                elif not url:\n                    cls.add_error(errors, 'items', 'No menu item provided.')\n                items.append(item)\n        cleaned_input['items'] = items\n        return cleaned_input\n\n    @classmethod\n    def _save_m2m(cls, info, instance, cleaned_data):\n        super()._save_m2m(info, instance, cleaned_data)\n        items = cleaned_data.get('items', [])\n        for item in items:\n            instance.items.create(**item)\n\n\nclass MenuUpdate(ModelMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu to update.')\n        input = MenuInput(\n            required=True,\n            description='Fields required to update a menu.')\n\n    class Meta:\n        description = 'Updates a menu.'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass MenuDelete(ModelDeleteMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu to delete.')\n\n    class Meta:\n        description = 'Deletes a menu.'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass MenuItemCreate(ModelMutation):\n    class Arguments:\n        input = MenuItemCreateInput(\n            required=True,\n            description=\"\"\"Fields required to update a menu item.\n            Only one of 'url', 'category', 'page', 'collection' is allowed\n            per item\"\"\")\n\n    class Meta:\n        description = 'Creates a new Menu'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def clean_input(cls, info, instance, input, errors):\n        cleaned_input = super().clean_input(info, instance, input, errors)\n        items = [\n            cleaned_input.get('page'), cleaned_input.get('collection'),\n            cleaned_input.get('url'), cleaned_input.get('category')]\n        items = [item for item in items if item is not None]\n        if len(items) > 1:\n            cls.add_error(\n                errors=errors,\n                field='items', message='More than one item provided.')\n        return cleaned_input\n\n\nclass MenuItemUpdate(MenuItemCreate):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu item to update.')\n        input = MenuItemInput(\n            required=True,\n            description=\"\"\"Fields required to update a menu item.\n            Only one of 'url', 'category', 'page', 'collection' is allowed\n            per item\"\"\")\n\n    class Meta:\n        description = 'Updates a menu item.'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def construct_instance(cls, instance, cleaned_data):\n        # Only one item can be assigned per menu item\n        instance.page = None\n        instance.collection = None\n        instance.category = None\n        instance.url = None\n        return super().construct_instance(instance, cleaned_data)\n\n\nclass MenuItemDelete(ModelDeleteMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu item to delete.')\n\n    class Meta:\n        description = 'Deletes a menu item.'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass NavigationType(graphene.Enum):\n    MAIN = 'main'\n    SECONDARY = 'secondary'\n\n    @property\n    def description(self):\n        if self == NavigationType.MAIN:\n            return 'Main storefront\\'s navigation.'\n        return 'Secondary storefront\\'s navigation.'\n\n\nclass AssignNavigation(BaseMutation):\n    menu = graphene.Field(Menu, description='Assigned navigation menu.')\n\n    class Arguments:\n        menu = graphene.ID(\n            description='ID of the menu.')\n        navigation_type = NavigationType(\n            description='Type of the navigation bar to assign the menu to.',\n            required=True)\n\n    class Meta:\n        description = 'Assigns storefront\\'s navigation menus.'\n\n    @classmethod\n    @permission_required(['menu.manage_menus', 'site.manage_settings'])\n    def mutate(cls, root, info, navigation_type, menu=None):\n        errors = []\n        site_settings = info.context.site.settings\n        if menu is not None:\n            menu = cls.get_node_or_error(\n                info, menu, errors=errors, field='menu')\n        if not errors:\n            if navigation_type == NavigationType.MAIN:\n                site_settings.top_menu = menu\n                site_settings.save(update_fields=['top_menu'])\n            elif navigation_type == NavigationType.SECONDARY:\n                site_settings.bottom_menu = menu\n                site_settings.save(update_fields=['bottom_menu'])\n            else:\n                raise AssertionError(\n                    'Unknown navigation type: %s' % navigation_type)\n        return AssignNavigation(menu=menu, errors=errors)\n", "path": "saleor/graphql/menu/mutations.py"}], "after_files": [{"content": "import graphene\nfrom graphql_jwt.decorators import permission_required\n\nfrom ...menu import models\nfrom ..core.mutations import BaseMutation, ModelDeleteMutation, ModelMutation\nfrom ..product.types import Category, Collection\nfrom ..page.types import Page\nfrom .types import Menu\n\n\nclass MenuItemInput(graphene.InputObjectType):\n    name = graphene.String(description='Name of the menu item.')\n    url = graphene.String(description='URL of the pointed item.')\n    category = graphene.ID(\n        description='Category to which item points.', name='category')\n    collection = graphene.ID(\n        description='Collection to which item points.', name='collection')\n    page = graphene.ID(\n        description='Page to which item points.', name='page')\n\n\nclass MenuItemCreateInput(MenuItemInput):\n    menu = graphene.ID(\n        description='Menu to which item belongs to.', name='menu',\n        required=True)\n    parent = graphene.ID(\n        description='''\n        ID of the parent menu. If empty, menu will be top level\n        menu.''',\n        name='parent')\n\n\nclass MenuInput(graphene.InputObjectType):\n    name = graphene.String(description='Name of the menu.')\n\n\nclass MenuCreateInput(MenuInput):\n    items = graphene.List(\n        MenuItemInput, description='List of menu items.')\n\n\nclass MenuCreate(ModelMutation):\n    class Arguments:\n        input = MenuCreateInput(\n            required=True,\n            description='Fields required to create a menu.')\n\n    class Meta:\n        description = 'Creates a new Menu'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def clean_input(cls, info, instance, input, errors):\n        cleaned_input = super().clean_input(info, instance, input, errors)\n        items = []\n        for item in cleaned_input.get('items', []):\n            category = item.get('category')\n            collection = item.get('collection')\n            page = item.get('page')\n            url = item.get('url')\n            if len([i for i in [category, collection, page, url] if i]) > 1:\n                cls.add_error(\n                    errors, 'items', 'More than one item provided.')\n            else:\n                if category:\n                    category = cls.get_node_or_error(\n                        info, category, errors, 'items', only_type=Category)\n                    item['category'] = category\n                elif collection:\n                    collection = cls.get_node_or_error(\n                        info, collection, errors, 'items',\n                        only_type=Collection)\n                    item['collection'] = collection\n                elif page:\n                    page = cls.get_node_or_error(\n                        info, page, errors, 'items', only_type=Page)\n                    item['page'] = page\n                elif not url:\n                    cls.add_error(errors, 'items', 'No menu item provided.')\n                items.append(item)\n        cleaned_input['items'] = items\n        return cleaned_input\n\n    @classmethod\n    def _save_m2m(cls, info, instance, cleaned_data):\n        super()._save_m2m(info, instance, cleaned_data)\n        items = cleaned_data.get('items', [])\n        for item in items:\n            instance.items.create(**item)\n\n\nclass MenuUpdate(ModelMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu to update.')\n        input = MenuInput(\n            required=True,\n            description='Fields required to update a menu.')\n\n    class Meta:\n        description = 'Updates a menu.'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass MenuDelete(ModelDeleteMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu to delete.')\n\n    class Meta:\n        description = 'Deletes a menu.'\n        model = models.Menu\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass MenuItemCreate(ModelMutation):\n    class Arguments:\n        input = MenuItemCreateInput(\n            required=True,\n            description=\"\"\"Fields required to update a menu item.\n            Only one of 'url', 'category', 'page', 'collection' is allowed\n            per item\"\"\")\n\n    class Meta:\n        description = 'Creates a new Menu'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def clean_input(cls, info, instance, input, errors):\n        cleaned_input = super().clean_input(info, instance, input, errors)\n        items = [\n            cleaned_input.get('page'), cleaned_input.get('collection'),\n            cleaned_input.get('url'), cleaned_input.get('category')]\n        items = [item for item in items if item is not None]\n        if len(items) > 1:\n            cls.add_error(\n                errors=errors,\n                field='items', message='More than one item provided.')\n        return cleaned_input\n\n\nclass MenuItemUpdate(MenuItemCreate):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu item to update.')\n        input = MenuItemInput(\n            required=True,\n            description=\"\"\"Fields required to update a menu item.\n            Only one of 'url', 'category', 'page', 'collection' is allowed\n            per item\"\"\")\n\n    class Meta:\n        description = 'Updates a menu item.'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n    @classmethod\n    def construct_instance(cls, instance, cleaned_data):\n        # Only one item can be assigned per menu item\n        instance.page = None\n        instance.collection = None\n        instance.category = None\n        instance.url = None\n        return super().construct_instance(instance, cleaned_data)\n\n\nclass MenuItemDelete(ModelDeleteMutation):\n    class Arguments:\n        id = graphene.ID(\n            required=True, description='ID of a menu item to delete.')\n\n    class Meta:\n        description = 'Deletes a menu item.'\n        model = models.MenuItem\n\n    @classmethod\n    def user_is_allowed(cls, user, input):\n        return user.has_perm('menu.manage_menus')\n\n\nclass NavigationType(graphene.Enum):\n    MAIN = 'main'\n    SECONDARY = 'secondary'\n\n    @property\n    def description(self):\n        if self == NavigationType.MAIN:\n            return 'Main storefront\\'s navigation.'\n        return 'Secondary storefront\\'s navigation.'\n\n\nclass AssignNavigation(BaseMutation):\n    menu = graphene.Field(Menu, description='Assigned navigation menu.')\n\n    class Arguments:\n        menu = graphene.ID(\n            description='ID of the menu.')\n        navigation_type = NavigationType(\n            description='Type of the navigation bar to assign the menu to.',\n            required=True)\n\n    class Meta:\n        description = 'Assigns storefront\\'s navigation menus.'\n\n    @classmethod\n    @permission_required(['menu.manage_menus', 'site.manage_settings'])\n    def mutate(cls, root, info, navigation_type, menu=None):\n        errors = []\n        site_settings = info.context.site.settings\n        if menu is not None:\n            menu = cls.get_node_or_error(\n                info, menu, errors=errors, field='menu')\n        if not errors:\n            if navigation_type == NavigationType.MAIN:\n                site_settings.top_menu = menu\n                site_settings.save(update_fields=['top_menu'])\n            elif navigation_type == NavigationType.SECONDARY:\n                site_settings.bottom_menu = menu\n                site_settings.save(update_fields=['bottom_menu'])\n            else:\n                raise AssertionError(\n                    'Unknown navigation type: %s' % navigation_type)\n        return AssignNavigation(menu=menu, errors=errors)\n", "path": "saleor/graphql/menu/mutations.py"}]}