1616 WorkspaceUserProperties ,
1717 WorkspaceUserLink ,
1818 UserRecentVisit ,
19- Issue ,
20- Page ,
19+ Issue ,
20+ Page ,
2121 Project ,
22- ProjectMember
22+ ProjectMember ,
23+ WorkspaceHomePreference ,
2324)
2425from plane .utils .constants import RESTRICTED_WORKSPACE_SLUGS
2526
2627# Django imports
2728from django .core .validators import URLValidator
2829from django .core .exceptions import ValidationError
2930
31+
3032class WorkSpaceSerializer (DynamicBaseSerializer ):
3133 owner = UserLiteSerializer (read_only = True )
3234 total_members = serializers .IntegerField (read_only = True )
@@ -119,6 +121,7 @@ class Meta:
119121 fields = "__all__"
120122 read_only_fields = ["workspace" , "user" ]
121123
124+
122125class WorkspaceUserLinkSerializer (BaseSerializer ):
123126 class Meta :
124127 model = WorkspaceUserLink
@@ -129,7 +132,7 @@ def to_internal_value(self, data):
129132 url = data .get ("url" , "" )
130133 if url and not url .startswith (("http://" , "https://" )):
131134 data ["url" ] = "http://" + url
132-
135+
133136 return super ().to_internal_value (data )
134137
135138 def validate_url (self , value ):
@@ -141,74 +144,96 @@ def validate_url(self, value):
141144
142145 return value
143146
147+
144148class IssueRecentVisitSerializer (serializers .ModelSerializer ):
145149 project_identifier = serializers .SerializerMethodField ()
146150
147151 class Meta :
148152 model = Issue
149- fields = ["name" , "state" , "priority" , "assignees" , "type" , "sequence_id" , "project_id" , "project_identifier" ]
153+ fields = [
154+ "name" ,
155+ "state" ,
156+ "priority" ,
157+ "assignees" ,
158+ "type" ,
159+ "sequence_id" ,
160+ "project_id" ,
161+ "project_identifier" ,
162+ ]
150163
151164 def get_project_identifier (self , obj ):
152165 project = obj .project
153166
154167 return project .identifier if project else None
155168
169+
156170class ProjectMemberSerializer (BaseSerializer ):
157171 member = UserLiteSerializer (read_only = True )
158172
159173 class Meta :
160174 model = ProjectMember
161175 fields = ["member" ]
162176
177+
163178class ProjectRecentVisitSerializer (serializers .ModelSerializer ):
164- project_members = serializers .SerializerMethodField ()
165-
179+ project_members = serializers .SerializerMethodField ()
180+
166181 class Meta :
167182 model = Project
168183 fields = ["id" , "name" , "logo_props" , "project_members" , "identifier" ]
169184
170185 def get_project_members (self , obj ):
171- members = ProjectMember .objects .filter (project_id = obj .id ).select_related ('member' )
186+ members = ProjectMember .objects .filter (project_id = obj .id ).select_related (
187+ "member"
188+ )
172189
173190 serializer = ProjectMemberSerializer (members , many = True )
174191 return serializer .data
175-
192+
193+
176194class PageRecentVisitSerializer (serializers .ModelSerializer ):
177195 project_id = serializers .SerializerMethodField ()
178196 project_identifier = serializers .SerializerMethodField ()
179197
180198 class Meta :
181199 model = Page
182- fields = ["id" , "name" , "logo_props" , "project_id" , "owned_by" , "project_identifier" ]
200+ fields = [
201+ "id" ,
202+ "name" ,
203+ "logo_props" ,
204+ "project_id" ,
205+ "owned_by" ,
206+ "project_identifier" ,
207+ ]
183208
184209 def get_project_id (self , obj ):
185- return obj .project_id if hasattr (obj , 'project_id' ) else obj .projects .values_list ('id' , flat = True ).first ()
186-
210+ return (
211+ obj .project_id
212+ if hasattr (obj , "project_id" )
213+ else obj .projects .values_list ("id" , flat = True ).first ()
214+ )
215+
187216 def get_project_identifier (self , obj ):
188217 project = obj .projects .first ()
189218
190219 return project .identifier if project else None
191220
221+
192222def get_entity_model_and_serializer (entity_type ):
193223 entity_map = {
194224 "issue" : (Issue , IssueRecentVisitSerializer ),
195225 "page" : (Page , PageRecentVisitSerializer ),
196- "project" : (Project , ProjectRecentVisitSerializer )
226+ "project" : (Project , ProjectRecentVisitSerializer ),
197227 }
198228 return entity_map .get (entity_type , (None , None ))
199229
230+
200231class WorkspaceRecentVisitSerializer (BaseSerializer ):
201232 entity_data = serializers .SerializerMethodField ()
202233
203234 class Meta :
204235 model = UserRecentVisit
205- fields = [
206- "id" ,
207- "entity_name" ,
208- "entity_identifier" ,
209- "entity_data" ,
210- "visited_at"
211- ]
236+ fields = ["id" , "entity_name" , "entity_identifier" , "entity_data" , "visited_at" ]
212237 read_only_fields = ["workspace" , "owner" , "created_by" , "updated_by" ]
213238
214239 def get_entity_data (self , obj ):
@@ -225,3 +250,10 @@ def get_entity_data(self, obj):
225250 except entity_model .DoesNotExist :
226251 return None
227252 return None
253+
254+
255+ class WorkspaceHomePreferenceSerializer (BaseSerializer ):
256+ class Meta :
257+ model = WorkspaceHomePreference
258+ fields = ["key" , "is_enabled" , "sort_order" ]
259+ read_only_fields = ["worspace" , "created_by" , "update_by" ]
0 commit comments