yceruto/django-ajax

Cannot import name 'available_attrs' from 'django.utils.decorators' (django 3)

branis97 opened this issue · 5 comments

I installed django-ajax and when i try to migrate it i get this error :
cannot import 'available_attrs' from 'django.utils.decorators'

I have python 3.7.3 , Django 3.0.2

Can you show the full stacktrace of the error? Are you sure this error is related to this library?

Hello, this si full stacktrace of error:

Traceback (most recent call last):
  File "/Users/branislav/Desktop/learningcurvee/manage.py", line 21, in <module>
    main()
  File "/Users/branislav/Desktop/learningcurvee/manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/base.py", line 366, in execute
    self.check()
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/base.py", line 395, in check
    include_deployment_checks=include_deployment_checks,
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 64, in _run_checks
    issues.extend(super()._run_checks(**kwargs))
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/management/base.py", line 382, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    return check_method()
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/urls/resolvers.py", line 407, in check
    for pattern in self.url_patterns:
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/urls/resolvers.py", line 588, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/urls/resolvers.py", line 581, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/branislav/Desktop/learningcurvee/learningcurvee/urls.py", line 14, in <module>
    path('', include('courses.urls')),
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/urls/conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/branislav/Desktop/learningcurvee/courses/urls.py", line 3, in <module>
    from .views import CourseDetailView, CourseUpdateView, CreateSectionView, CreateLessonView, SectionUpdateView, \
  File "/Users/branislav/Desktop/learningcurvee/courses/views.py", line 12, in <module>
    from django_ajax.decorators import ajax
  File "/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django_ajax/decorators.py", line 9, in <module>
    from django.utils.decorators import available_attrs
ImportError: cannot import name 'available_attrs' from 'django.utils.decorators' (/Users/branislav/Desktop/learningcurvee/env/lib/python3.7/site-packages/django/utils/decorators.py)

I can see that this library is using available_attrs from django.utils.decorator. New django removed some API support and I'm afraid that this is one of them.

I see, so it's a compatibility issue with django 3. I will take a look this weekend, thanks for the information

Yes, that is it. Sorry for incomplete information and thank you for your quick response.

I've just released 3.2.0 with django3 support. Thanks for reporting.