Add my_homepage attr to projects list
parent
809a90b777
commit
4fa4c02d16
|
@ -113,8 +113,8 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin,
|
||||||
qs = project_utils.attach_notify_policies(qs)
|
qs = project_utils.attach_notify_policies(qs)
|
||||||
qs = project_utils.attach_is_fan(qs, user=self.request.user)
|
qs = project_utils.attach_is_fan(qs, user=self.request.user)
|
||||||
qs = project_utils.attach_my_role_permissions(qs, user=self.request.user)
|
qs = project_utils.attach_my_role_permissions(qs, user=self.request.user)
|
||||||
qs = project_utils.attach_my_role_permissions(qs, user=self.request.user)
|
|
||||||
qs = project_utils.attach_closed_milestones(qs)
|
qs = project_utils.attach_closed_milestones(qs)
|
||||||
|
qs = project_utils.attach_my_homepage(qs, user=self.request.user)
|
||||||
else:
|
else:
|
||||||
qs = project_utils.attach_extra_info(qs, user=self.request.user)
|
qs = project_utils.attach_extra_info(qs, user=self.request.user)
|
||||||
|
|
||||||
|
|
|
@ -290,6 +290,8 @@ class ProjectSerializer(serializers.LightSerializer):
|
||||||
|
|
||||||
is_fan = Field(attr="is_fan_attr")
|
is_fan = Field(attr="is_fan_attr")
|
||||||
|
|
||||||
|
my_homepage = MethodField()
|
||||||
|
|
||||||
def get_members(self, obj):
|
def get_members(self, obj):
|
||||||
assert hasattr(obj, "members_attr"), "instance must have a members_attr attribute"
|
assert hasattr(obj, "members_attr"), "instance must have a members_attr attribute"
|
||||||
if obj.members_attr is None:
|
if obj.members_attr is None:
|
||||||
|
@ -374,6 +376,13 @@ class ProjectSerializer(serializers.LightSerializer):
|
||||||
def get_logo_big_url(self, obj):
|
def get_logo_big_url(self, obj):
|
||||||
return services.get_logo_big_thumbnail_url(obj)
|
return services.get_logo_big_thumbnail_url(obj)
|
||||||
|
|
||||||
|
def get_my_homepage(self, obj):
|
||||||
|
assert hasattr(obj, "my_homepage_attr"), "instance must have a my_homepage_attr attribute"
|
||||||
|
if obj.my_homepage_attr is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return obj.my_homepage_attr
|
||||||
|
|
||||||
|
|
||||||
class ProjectDetailSerializer(ProjectSerializer):
|
class ProjectDetailSerializer(ProjectSerializer):
|
||||||
epic_statuses = Field(attr="epic_statuses_attr")
|
epic_statuses = Field(attr="epic_statuses_attr")
|
||||||
|
|
|
@ -593,6 +593,30 @@ def attach_public_projects_same_owner(queryset, user, as_field="public_projects_
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
|
def attach_my_homepage(queryset, user, as_field="my_homepage_attr"):
|
||||||
|
"""Attach a homepage array to each object of the queryset.
|
||||||
|
|
||||||
|
:param queryset: A Django projects queryset object.
|
||||||
|
:param as_field: Attach the settings homepage as an attribute with this name.
|
||||||
|
|
||||||
|
:return: Queryset object with the additional `as_field` field.
|
||||||
|
"""
|
||||||
|
model = queryset.model
|
||||||
|
if user is None or user.is_anonymous():
|
||||||
|
sql = "SELECT '{}'"
|
||||||
|
else:
|
||||||
|
sql = """
|
||||||
|
SELECT homepage
|
||||||
|
FROM settings_userprojectsettings
|
||||||
|
WHERE settings_userprojectsettings.project_id = {tbl}.id AND
|
||||||
|
settings_userprojectsettings.user_id = {user_id}"""
|
||||||
|
|
||||||
|
sql = sql.format(tbl=model._meta.db_table, user_id=user.id)
|
||||||
|
|
||||||
|
queryset = queryset.extra(select={as_field: sql})
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def attach_extra_info(queryset, user=None):
|
def attach_extra_info(queryset, user=None):
|
||||||
queryset = attach_members(queryset)
|
queryset = attach_members(queryset)
|
||||||
queryset = attach_closed_milestones(queryset)
|
queryset = attach_closed_milestones(queryset)
|
||||||
|
@ -618,5 +642,6 @@ def attach_extra_info(queryset, user=None):
|
||||||
queryset = attach_private_projects_same_owner(queryset, user)
|
queryset = attach_private_projects_same_owner(queryset, user)
|
||||||
queryset = attach_public_projects_same_owner(queryset, user)
|
queryset = attach_public_projects_same_owner(queryset, user)
|
||||||
queryset = attach_milestones(queryset)
|
queryset = attach_milestones(queryset)
|
||||||
|
queryset = attach_my_homepage(queryset, user)
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
Loading…
Reference in New Issue