| 27 | return list(map(lambda p: p.replace("_project", ""),perms)) |
| 28 | |
| 29 | class ProjectSerializer(serializers.ModelSerializer): |
| 30 | tasks = TaskIDsSerializer(many=True, read_only=True) |
| 31 | owner = serializers.HiddenField( |
| 32 | default=serializers.CurrentUserDefault() |
| 33 | ) |
| 34 | owned = serializers.SerializerMethodField() |
| 35 | created_at = serializers.ReadOnlyField() |
| 36 | permissions = serializers.SerializerMethodField() |
| 37 | tags = TagsField(required=False) |
| 38 | |
| 39 | def get_permissions(self, obj): |
| 40 | if 'request' in self.context: |
| 41 | return normalized_perm_names(get_perms(self.context['request'].user, obj)) |
| 42 | else: |
| 43 | # Cannot list permissions, no user is associated with request (happens when serializing ui test mocks) |
| 44 | return [] |
| 45 | |
| 46 | def get_owned(self, obj): |
| 47 | if 'request' in self.context: |
| 48 | user = self.context['request'].user |
| 49 | return user.is_superuser or obj.owner.id == user.id |
| 50 | return False |
| 51 | |
| 52 | class Meta: |
| 53 | model = models.Project |
| 54 | exclude = ('deleting', ) |
| 55 | |
| 56 | |
| 57 | class ProjectFilter(filters.FilterSet): |