Geotrek-admin icon indicating copy to clipboard operation
Geotrek-admin copied to clipboard

Error on course after deleting parent site

Open numahell opened this issue 2 years ago • 2 comments

Course has error on display after having deleted parent site :

juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]: ERROR 2022-06-22 09:09:47,845 django.request Internal Server Error: /course/1/
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]: Traceback (most recent call last):
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     response = get_response(request)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/core/handlers/base.py", line 204, in _get_response
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     response = response.render()
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/response.py", line 105, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     self.content = self.rendered_content
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/response.py", line 83, in rendered_content
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return template.render(context, self._request)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.template.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 170, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return compiled_parent._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return compiled_parent._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return compiled_parent._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 988, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     output = self.filter_expression.resolve(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 671, in resolve
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     obj = self.var.resolve(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 796, in resolve
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     value = self._resolve_lookup(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 858, in _resolve_lookup
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     current = current()
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 76, in super
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return mark_safe(self.render(self.context))
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 192, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return template.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 172, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return compiled_parent._render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 162, in _render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     result = block.nodelist.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 938, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     bit = node.render_annotated(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return self.render(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 988, in render
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     output = self.filter_expression.resolve(context)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/django/template/base.py", line 698, in resolve
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     new_obj = func(obj, *arg_vals)
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:   File "/opt/geotrek-admin/lib/python3.6/site-packages/mapentity/templatetags/mapentity_tags.py", line 71, in field_v
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]:     return obj._meta.get_field(field).verbose_name
juin 22 09:09:47 Pnrpaca-Geotrek-Admin gunicorn[10124]: AttributeError: 'NoneType' object has no attribute '_meta'

Parent site could be deleted without warning about children.

numahell avatar Jun 22 '22 07:06 numahell

OK indeed. I am not sure if a course can exist without a parent site... Maybe we should protect it ?

camillemonchicourt avatar Jun 22 '22 07:06 camillemonchicourt

Yes, the solution would be to protect the deletion when there is an existing parent site attached to the course object.

babastienne avatar Jul 05 '22 11:07 babastienne

To get around this problem, you can access directly to edit page, and associate at least a parent site.

Edit page is like /course/edit/{pk}

A course can be a child of 1 or several parent_sites. To fix this problem, we could protect deletion of a site, or fix detail view.

numahell avatar Mar 01 '23 14:03 numahell

Fixed in release 2.100.0. Deletion is protected when there is a child associated to the outdoor site.

babastienne avatar Sep 05 '23 12:09 babastienne