django - Assiging permissions with guardian's shortcut assign_perm results in 'NoneType' object has no attribute 'objects' -


i have 2 applications in django project, let's assume it's appa , appb. applications installed external packages via pip install. both of them have additional permissions in models:

appa has got:

  class meta:                                                                         permissions = (            ('clone_poll', 'can clone poll'),                                               ('close_poll', 'can close poll'),                       ('viewresults_poll', 'can view poll results'),                          )   

appb has got:

  class meta:                                                                         permissions = (            ('viewresults_meeting', 'can view meeting results'),                          )   

i installed both applications in project , tried create instances of models have. works fine(object created , saved db) until permission assign step, following error occurred:

traceback (most recent call last):   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response     response = wrapped_callback(request, *callback_args, **callback_kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view     return view_func(request, *args, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/polls/views.py", line 529, in clone_poll     initial_dict=initial)(request, kwargs=kwa)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view     return self.dispatch(request, *args, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py", line 236, in dispatch     response = super(wizardview, self).dispatch(request, *args, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/views/generic/base.py", line 87, in dispatch     return handler(request, *args, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py", line 297, in post     return self.render_done(form, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py", line 350, in render_done     done_response = self.done(final_form_list, **kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/polls/views.py", line 203, in done     assign_perm('polls.change_poll', self.request.user, poll_obj)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/guardian/shortcuts.py", line 91, in assign_perm     return model.objects.assign_perm(perm, user, obj)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/guardian/managers.py", line 41, in assign_perm     obj_perm, created = self.get_or_create(**kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/db/models/manager.py", line 154, in get_or_create     return self.get_queryset().get_or_create(**kwargs)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/django/db/models/query.py", line 380, in get_or_create     obj.save(force_insert=true, using=self.db)   file "/home/polls/pythonpolls/lib/python2.7/site-packages/guardian/models.py", line 44, in save     content_type = contenttype.objects.get_for_model(self.content_object) attributeerror: 'nonetype' object has no attribute 'objects' 

i inspected exact place of occurring error, in django-guardian internal. seems garbage collector cleaned local context, setting imports none:

'userobjectpermissionmanager': none,  '__file__': none,  'user_model_label': none,  '__name__': none,  'groupobjectpermissionmanager': none,  'contenttype': none, 'settings': none,  'permission': none,  'groupobjectpermissionbase': none,  'baseobjectpermission': none,   'userobjectpermissionbase': none 

what more, when remove 1 of applications e.g. appa installed_apps, other works fine i.e. permissions set.

i have no idea origin of problem, if it's in apps, in guardian or in other application?

after few days of struggling problem found solution, , real origin of problem. first of i've been using django 1.6.10. in both applications have registered handlers user_logged_in signals. put proper functions , bindings(user_logged_in.connect(handler)) file called signals.py in both apps. signals.py imported in __init__.py, make signals connection work. there dependance on models.py in 1 of files, imported signals.py- done in 1 of apps. getting point, problem circular imports in 1 of app. solution found work move signals.py contents models.py, remove signals imports __init__.py.


Comments