Skip to content

Permission error

Internal Server Error: /api/action-groups/
Traceback (most recent call last):
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/viewsets.py", line 116, in view
    return self.dispatch(request, *args, **kwargs)
  File "/var/www/djangoldp/djangoldp/views.py", line 136, in dispatch
    response = super(LDPViewSet, self).dispatch(request, *args, **kwargs)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/views.py", line 495, in dispatch
    response = self.handle_exception(exc)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/views.py", line 455, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/views.py", line 492, in dispatch
    response = handler(request, *args, **kwargs)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/mixins.py", line 48, in list
    return Response(serializer.data)
  File "/var/www/djangoldp/djangoldp/serializers.py", line 109, in data
    return ReturnDict(super(ListSerializer, self).data, serializer=self)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/serializers.py", line 262, in data
    self._data = self.to_representation(self.instance)
  File "/var/www/djangoldp/djangoldp/serializers.py", line 38, in to_representation
    'ldp:contains': super().to_representation(value),
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/serializers.py", line 686, in to_representation
    self.child.to_representation(item) for item in iterable
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/serializers.py", line 686, in <listcomp>
    self.child.to_representation(item) for item in iterable
  File "/var/www/djangoldp/djangoldp/serializers.py", line 211, in to_representation
    data = super().to_representation(obj)
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/rest_framework/serializers.py", line 530, in to_representation
    ret[field.field_name] = field.to_representation(attribute)
  File "/var/www/djangoldp/djangoldp/serializers.py", line 39, in to_representation
    'permissions': Model.get_permissions(value.model, self.context['request'].user, ['view', 'add'])
  File "/var/www/djangoldp/djangoldp/models.py", line 109, in get_permissions
    permissions = permission_class().filter_user_perms(user_or_group, obj_or_model, permissions)
  File "/var/www/djangoldp/djangoldp/permissions.py", line 44, in filter_user_perms
    return [perm for perm in permissions if perm in self.user_permissions(user_or_group, obj)]
  File "/var/www/djangoldp/djangoldp/permissions.py", line 44, in <listcomp>
    return [perm for perm in permissions if perm in self.user_permissions(user_or_group, obj)]
  File "/var/www/united4earth/data_manager/permissions.py", line 11, in user_permissions
    if request.user in obj.actiongroup_set.get().members.all():
  File "/var/www/united4earth/venv/lib/python3.6/site-packages/django/utils/functional.py", line 239, in inner
    return func(self._wrapped, *args)
AttributeError: 'User' object has no attribute 'user'
[27/Mar/2019 07:41:52] "GET /api/action-groups/ HTTP/1.1" 500

I get that when trying to access the /api/action-groups/ URL with the last version of the server.

Models :

class ActionGroup(models.Model):
    name = models.CharField(max_length=255, verbose_name=u"Nom du groupe")
    objective = models.CharField(max_length=255, verbose_name=u"Objectif")
    description = models.TextField(blank=True, null=True, verbose_name=u"Description")
    place = models.TextField(blank=True, null=True, verbose_name=u"Lieu")
    frequency = models.TextField(blank=True, null=True, verbose_name=u"Fréquence")
    kind = models.TextField(blank=True, null=True, verbose_name=u"Type d'action")
    image = models.URLField(verbose_name=u"Image", default=settings.SITE_URL + "static/img/action_group_blank.png")
    representatives = models.ManyToManyField(Representative, blank=True, related_name='action_groups')
    members = models.ManyToManyField(User, blank=True)
    actiongroups = models.ManyToManyField("self", blank=True)
    dates = models.ManyToManyField(ActionDate, blank=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='created_groups', blank=True, null=True)
    conversation = models.ManyToManyField(Thread, blank=True)
    loomios = models.ManyToManyField(LoomioTopic, blank=True)
    slug = models.SlugField(blank=True, null=True, unique=True)

    class Meta:
        auto_author = 'author'
        permissions = (
            ('view_actiongroup', 'Read'),
            ('control_actiongroup', 'Control'),
        )

    def nextdate(self):
        nextdate = self.dates.filter(date__gte=datetime.today()).order_by("date").first()
        if nextdate:
            return str(nextdate)
        elif len(self.dates.all()) == 0:
            return 0
        else:
            return "exhausted"

    def __str__(self):
        return self.name

User._meta.serializer_fields = ['username', 'first_name', 'last_name', 'email']

URls :

    url(r'^api/action-groups/', LDPViewSet.urls(
            model=ActionGroup,
            fields = [
                '@id','name', 'author', 'objective', 'description', 'kind',
                'place', 'frequency', 'image', 'representatives', 'members',
                'actiongroups', 'dates', 'loomios', 'conversation', 'nextdate',
                ],
            nested_fields=[
                "author", "representatives", "dates", "loomios",
                "actiongroups", "conversation",
                ],
            permission_classes=(AnonymousReadOnly,),
            # permission_classes=(),
            
        ), name='action_groups_sib'),

This commit introduced the problem : https://git.happy-dev.fr/startinblox/djangoldp-packages/djangoldp/commit/fbf1d1bca9313b6da5b09e8038e970193ea777fa

Edited by Ghost User