Add project extra info to the user story serializer
parent
d307318b90
commit
9a1b422a42
|
@ -16,12 +16,13 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from taiga.base.api import serializers
|
||||
from taiga.base.fields import Field, MethodField
|
||||
from taiga.projects import services
|
||||
from taiga.users.serializers import UserBasicInfoSerializer
|
||||
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
|
||||
class CachedUsersSerializerMixin(serializers.LightSerializer):
|
||||
def to_value(self, instance):
|
||||
|
@ -77,3 +78,27 @@ class StatusExtraInfoSerializerMixin(serializers.LightSerializer):
|
|||
self._serialized_status[obj.status_id] = serialized_status
|
||||
|
||||
return serialized_status
|
||||
|
||||
|
||||
class ProjectExtraInfoSerializerMixin(serializers.LightSerializer):
|
||||
project = Field(attr="project_id")
|
||||
project_extra_info = MethodField()
|
||||
|
||||
def to_value(self, instance):
|
||||
self._serialized_project = {}
|
||||
return super().to_value(instance)
|
||||
|
||||
def get_project_extra_info(self, obj):
|
||||
if obj.project_id is None:
|
||||
return None
|
||||
|
||||
serialized_project = self._serialized_project.get(obj.project_id, None)
|
||||
if serialized_project is None:
|
||||
serialized_project = {
|
||||
"name": obj.project.name,
|
||||
"slug": obj.project.slug,
|
||||
"logo_small_url": services.get_logo_small_thumbnail_url(obj.project)
|
||||
}
|
||||
self._serialized_project[obj.project_id] = serialized_project
|
||||
|
||||
return serialized_project
|
||||
|
|
|
@ -434,8 +434,10 @@ class ProjectDetailSerializer(ProjectSerializer):
|
|||
return len(obj.members_attr)
|
||||
|
||||
def get_is_out_of_owner_limits(self, obj):
|
||||
assert hasattr(obj, "private_projects_same_owner_attr"), "instance must have a private_projects_same_owner_attr attribute"
|
||||
assert hasattr(obj, "public_projects_same_owner_attr"), "instance must have a public_projects_same_owner_attr attribute"
|
||||
assert hasattr(obj, "private_projects_same_owner_attr"), ("instance must have a private_projects_same"
|
||||
"_owner_attr attribute")
|
||||
assert hasattr(obj, "public_projects_same_owner_attr"), ("instance must have a public_projects_same_"
|
||||
"owner_attr attribute")
|
||||
return services.check_if_project_is_out_of_owner_limits(
|
||||
obj,
|
||||
current_memberships=self.get_total_memberships(obj),
|
||||
|
@ -444,8 +446,10 @@ class ProjectDetailSerializer(ProjectSerializer):
|
|||
)
|
||||
|
||||
def get_is_private_extra_info(self, obj):
|
||||
assert hasattr(obj, "private_projects_same_owner_attr"), "instance must have a private_projects_same_owner_attr attribute"
|
||||
assert hasattr(obj, "public_projects_same_owner_attr"), "instance must have a public_projects_same_owner_attr attribute"
|
||||
assert hasattr(obj, "private_projects_same_owner_attr"), ("instance must have a private_projects_same_"
|
||||
"owner_attr attribute")
|
||||
assert hasattr(obj, "public_projects_same_owner_attr"), ("instance must have a public_projects_same"
|
||||
"_owner_attr attribute")
|
||||
return services.check_if_project_privacity_can_be_changed(
|
||||
obj,
|
||||
current_memberships=self.get_total_memberships(obj),
|
||||
|
|
|
@ -22,11 +22,12 @@ from taiga.base.neighbors import NeighborsSerializerMixin
|
|||
|
||||
from taiga.mdrender.service import render as mdrender
|
||||
from taiga.projects.attachments.serializers import BasicAttachmentsInfoSerializerMixin
|
||||
from taiga.projects.tagging.serializers import TaggedInProjectResourceSerializer
|
||||
from taiga.projects.mixins.serializers import OwnerExtraInfoSerializerMixin
|
||||
from taiga.projects.mixins.serializers import AssignedToExtraInfoSerializerMixin
|
||||
from taiga.projects.mixins.serializers import OwnerExtraInfoSerializerMixin
|
||||
from taiga.projects.mixins.serializers import ProjectExtraInfoSerializerMixin
|
||||
from taiga.projects.mixins.serializers import StatusExtraInfoSerializerMixin
|
||||
from taiga.projects.notifications.mixins import WatchedResourceSerializer
|
||||
from taiga.projects.tagging.serializers import TaggedInProjectResourceSerializer
|
||||
from taiga.projects.votes.mixins.serializers import VoteResourceSerializerMixin
|
||||
|
||||
|
||||
|
@ -42,7 +43,7 @@ class OriginIssueSerializer(serializers.LightSerializer):
|
|||
return super().to_value(instance)
|
||||
|
||||
|
||||
class UserStoryListSerializer(
|
||||
class UserStoryListSerializer(ProjectExtraInfoSerializerMixin,
|
||||
VoteResourceSerializerMixin, WatchedResourceSerializer,
|
||||
OwnerExtraInfoSerializerMixin, AssignedToExtraInfoSerializerMixin,
|
||||
StatusExtraInfoSerializerMixin, BasicAttachmentsInfoSerializerMixin,
|
||||
|
|
Loading…
Reference in New Issue