archesproject / arches

Arches is a web platform for creating, managing, & visualizing geospatial data. Arches was inspired by the needs of the Cultural Heritage community, particularly the widespread need of organizations to build & manage cultural heritage inventories
GNU Affero General Public License v3.0
212 stars 143 forks source link

Get an exception "Resource has no graph" when trying to create a user in Django admin #9398

Open davidlacey-gty opened 1 year ago

davidlacey-gty commented 1 year ago

We receive the exception "Resource has no graph" when creating a user in the Django administration console. The error also occurs when a user clicks on the account verification link from the email Arches sends to new users. The interesting thing is while adding a user through the Django admin console never works. The self-sign up does work. The user will see the error, but the user's account is created and they can login with the credentials they provided.

Arches Version: 7.3

Here is the stack trace from adding a user through the Django admin console.

Environment:

Request Method: POST
Request URL: https://example.com/admin/auth/user/add/

Django Version: 3.2.15
Python Version: 3.8.16
Installed Applications:
('webpack_loader',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.gis',
 'arches',
 'arches.app.models',
 'arches.management',
 'guardian',
 'captcha',
 'revproxy',
 'corsheaders',
 'oauth2_provider',
 'django_celery_results',
 'compressor',
 'jpc')
Installed Middleware:
['corsheaders.middleware.CorsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'arches.app.utils.middleware.ModifyAuthorizationHeader',
 'oauth2_provider.middleware.OAuth2TokenMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'arches.app.utils.middleware.SetAnonymousUser']

Traceback (most recent call last):
  File "/arches/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/arches/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 616, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 232, in inner
    return view(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/views/decorators/debug.py", line 89, in sensitive_post_parameters_wrapper
    return view(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/auth/admin.py", line 99, in add_view
    return self._add_view(request, form_url, extra_context)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/auth/admin.py", line 126, in _add_view
    return super().add_view(request, form_url, extra_context)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1657, in add_view
    return self.changeform_view(request, None, form_url, extra_context)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1540, in changeform_view
    return self._changeform_view(request, object_id, form_url, extra_context)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1586, in _changeform_view
    self.save_model(request, new_object, form, not add)
  File "/arches/env/lib/python3.8/site-packages/django/contrib/admin/options.py", line 1099, in save_model
    obj.save()
  File "/arches/env/lib/python3.8/site-packages/django/contrib/auth/base_user.py", line 67, in save
    super().save(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/arches/env/lib/python3.8/site-packages/django/db/models/base.py", line 787, in save_base
    post_save.send(
  File "/arches/env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/arches/env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/models.py", line 1334, in create_permissions_for_new_users
    Resource(resource.resourceinstanceid).index()
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/resource.py", line 280, in index
    super(Resource, self).save()
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/models.py", line 931, in save
    self.graph_publication = self.graph.publication
  File "/arches/env/lib/python3.8/site-packages/django/db/models/fields/related_descriptors.py", line 197, in __get__
    raise self.RelatedObjectDoesNotExist(

Exception Type: RelatedObjectDoesNotExist at /admin/auth/user/add/
Exception Value: ResourceInstance has no graph.

This is the stack trace from a user clicking on the email verification link

Environment:

Request Method: GET
Request URL: https://example.com/auth/confirm_signup?link=orvjpg1uIWAg5Afp8Yzil80P%2BIKrJHuokePeNe9Aw3INH0xKM%2F7t0vzL4VluMNb9iJHles0Hss66sD8LnnuivxZrr22XCg4EFD5dcvav5ZXs%2F8iKY%2F5X%2B1Famkru3xZ3NTcBUlims%2F6ZDgIdPrln2684S6OyYvOKeNnZE5l9HmVIwGOy9nPPk4y1t2E8HH6CM2f0Edl9%2BuMYJTAjgyREiTGhvXOQj81qDpefOYBVNCQdP%2BiLs8%2FYKS2cVRudUxTC78FT6

Django Version: 3.2.15
Python Version: 3.8.16
Installed Applications:
('webpack_loader',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.gis',
 'arches',
 'arches.app.models',
 'arches.management',
 'guardian',
 'captcha',
 'revproxy',
 'corsheaders',
 'oauth2_provider',
 'django_celery_results',
 'compressor',
 'jpc')
Installed Middleware:
['corsheaders.middleware.CorsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'arches.app.utils.middleware.ModifyAuthorizationHeader',
 'oauth2_provider.middleware.OAuth2TokenMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'arches.app.utils.middleware.SetAnonymousUser']

Traceback (most recent call last):
  File "/arches/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/arches/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/arches/app/views/auth.py", line 237, in get
    user = form.save()
  File "/arches/env/lib/python3.8/site-packages/django/contrib/auth/forms.py", line 131, in save
    user.save()
  File "/arches/env/lib/python3.8/site-packages/django/contrib/auth/base_user.py", line 67, in save
    super().save(*args, **kwargs)
  File "/arches/env/lib/python3.8/site-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/arches/env/lib/python3.8/site-packages/django/db/models/base.py", line 787, in save_base
    post_save.send(
  File "/arches/env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
    return [
  File "/arches/env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/models.py", line 1334, in create_permissions_for_new_users
    Resource(resource.resourceinstanceid).index()
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/resource.py", line 280, in index
    super(Resource, self).save()
  File "/arches/env/lib/python3.8/site-packages/arches/app/models/models.py", line 931, in save
    self.graph_publication = self.graph.publication
  File "/arches/env/lib/python3.8/site-packages/django/db/models/fields/related_descriptors.py", line 197, in __get__
    raise self.RelatedObjectDoesNotExist(

Exception Type: RelatedObjectDoesNotExist at /auth/confirm_signup
Exception Value: ResourceInstance has no graph.
chiatt commented 1 year ago

May be related to: https://github.com/archesproject/arches/issues/9365