142 lines
3.0 KiB
Python
142 lines
3.0 KiB
Python
from rest_framework import serializers
|
|
from rest_framework.reverse import reverse
|
|
|
|
from access.models.tenant import Tenant as Organization
|
|
from access.models.team import Team
|
|
|
|
from django.contrib.auth.models import Permission
|
|
|
|
|
|
|
|
class TeamSerializerBase(serializers.ModelSerializer):
|
|
|
|
url = serializers.SerializerMethodField('get_url')
|
|
|
|
|
|
class Meta:
|
|
model = Team
|
|
fields = (
|
|
'team_name',
|
|
'model_notes',
|
|
'permissions',
|
|
'url',
|
|
)
|
|
|
|
|
|
def get_url(self, obj):
|
|
|
|
request = self.context.get('request')
|
|
|
|
return request.build_absolute_uri(reverse("v1:_api_team", args=[obj.organization.id,obj.pk]))
|
|
|
|
|
|
|
|
class TeamPermissionSerializer(serializers.ModelSerializer):
|
|
|
|
|
|
class Meta:
|
|
model = Permission
|
|
depth = 1
|
|
fields = '__all__'
|
|
|
|
|
|
class TeamSerializer(TeamSerializerBase):
|
|
|
|
permissions_url = serializers.SerializerMethodField('get_url')
|
|
|
|
def get_url(self, obj):
|
|
|
|
request = self.context.get('request')
|
|
|
|
team = Team.objects.get(pk=obj.id)
|
|
|
|
return request.build_absolute_uri(reverse('v1:_api_team_permission', args=[team.organization_id,team.id]))
|
|
|
|
|
|
def validate(self, data):
|
|
"""
|
|
Check that start is before finish.
|
|
"""
|
|
|
|
data['organization_id'] = self._context['view'].kwargs['organization_id']
|
|
|
|
return data
|
|
|
|
|
|
url = serializers.SerializerMethodField('team_url')
|
|
|
|
def team_url(self, obj):
|
|
|
|
request = self.context.get('request')
|
|
|
|
return request.build_absolute_uri(reverse('v1:_api_team', args=[obj.organization_id,obj.id]))
|
|
|
|
|
|
class Meta:
|
|
model = Team
|
|
depth = 2
|
|
fields = (
|
|
"id",
|
|
"team_name",
|
|
'model_notes',
|
|
'permissions',
|
|
'permissions_url',
|
|
'url',
|
|
)
|
|
read_only_fields = [
|
|
'id',
|
|
'organization',
|
|
'permissions_url',
|
|
'url'
|
|
]
|
|
|
|
|
|
|
|
class OrganizationListSerializer(serializers.ModelSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name="v1:_api_organization", format="html"
|
|
)
|
|
|
|
|
|
class Meta:
|
|
model = Organization
|
|
fields = (
|
|
"id",
|
|
"name",
|
|
'url',
|
|
)
|
|
|
|
|
|
|
|
class OrganizationSerializer(serializers.ModelSerializer):
|
|
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name="v1:_api_organization", format="html"
|
|
)
|
|
|
|
team_url = serializers.SerializerMethodField('get_url')
|
|
|
|
def get_url(self, obj):
|
|
|
|
request = self.context.get('request')
|
|
|
|
team = Team.objects.filter(pk=obj.id)
|
|
|
|
return request.build_absolute_uri(reverse('v1:_api_organization_teams', args=[obj.id]))
|
|
|
|
teams = TeamSerializer(source='team_set', many=True, read_only=False)
|
|
|
|
view_name="v1:_api_organization"
|
|
|
|
|
|
class Meta:
|
|
model = Organization
|
|
fields = (
|
|
"id",
|
|
"name",
|
|
'teams',
|
|
'url',
|
|
'team_url',
|
|
)
|