@ -97,6 +97,16 @@ class NoteModelSerializer(NoteBaseSerializer):
|
||||
}
|
||||
)
|
||||
|
||||
elif 'project_id' in self._kwargs['context']['view'].kwargs:
|
||||
|
||||
_self = reverse("API:_api_v2_project_notes-detail",
|
||||
request=self._context['view'].request,
|
||||
kwargs={
|
||||
'project_id': self._kwargs['context']['view'].kwargs['project_id'],
|
||||
'pk': item.pk
|
||||
}
|
||||
)
|
||||
|
||||
elif 'software_id' in self._kwargs['context']['view'].kwargs:
|
||||
|
||||
_self = reverse("API:_api_v2_software_notes-detail",
|
||||
|
@ -241,11 +241,11 @@ class Project(ProjectCommonFieldsName):
|
||||
},
|
||||
{
|
||||
"name": "Milestones",
|
||||
"slug": "milestones",
|
||||
"slug": "milestone",
|
||||
"sections": [
|
||||
{
|
||||
"layout": "table",
|
||||
"field": "milestones",
|
||||
"field": "milestone",
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
from rest_framework.reverse import reverse
|
||||
from rest_framework import serializers
|
||||
from rest_framework.fields import empty
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
from access.serializers.organization import OrganizationBaseSerializer
|
||||
|
||||
@ -60,7 +61,7 @@ class ProjectModelSerializer(ProjectBaseSerializer):
|
||||
}
|
||||
),
|
||||
'milestone': reverse("API:_api_v2_project_milestone-list", request=self._context['view'].request, kwargs={'project_id': item.pk}),
|
||||
'notes': reverse("API:_api_v2_cluster_notes-list", request=self._context['view'].request, kwargs={'cluster_id': item.pk}),
|
||||
'notes': reverse("API:_api_v2_project_notes-list", request=self._context['view'].request, kwargs={'project_id': item.pk}),
|
||||
'tickets': 'ToDo'
|
||||
}
|
||||
|
||||
@ -105,6 +106,21 @@ class ProjectModelSerializer(ProjectBaseSerializer):
|
||||
|
||||
|
||||
|
||||
def __init__(self, instance=None, data=empty, **kwargs):
|
||||
|
||||
super().__init__(instance=instance, data=data, **kwargs)
|
||||
|
||||
if 'view' in self.context:
|
||||
|
||||
if not self.context['view'].is_import_user:
|
||||
|
||||
self.Meta.read_only_fields += [
|
||||
'external_ref',
|
||||
'external_system',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class ProjectViewSerializer(ProjectModelSerializer):
|
||||
|
||||
organization = OrganizationBaseSerializer( many = False, read_only = True )
|
||||
|
@ -8,6 +8,8 @@ from project_management.serializers.project import (
|
||||
ProjectViewSerializer
|
||||
)
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
@ -64,6 +66,8 @@ class ViewSet( ModelViewSet ):
|
||||
'state',
|
||||
]
|
||||
|
||||
is_import_user: bool = False
|
||||
|
||||
search_fields = [
|
||||
'name',
|
||||
'description',
|
||||
@ -75,8 +79,16 @@ class ViewSet( ModelViewSet ):
|
||||
|
||||
view_description = 'Physical Devices'
|
||||
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
||||
if self.has_organization_permission(
|
||||
organization = UserSettings.objects.get(user = self.request.user).default_organization.id,
|
||||
permissions_required = ['project_management.import_project']
|
||||
) or self.request.user.is_superuser:
|
||||
|
||||
self.is_import_user = True
|
||||
|
||||
if (
|
||||
self.action == 'list'
|
||||
or self.action == 'retrieve'
|
||||
|
Reference in New Issue
Block a user