MCPcopy Create free account
hub / github.com/Flagsmith/flagsmith / get_queryset

Method get_queryset

api/features/views.py:179–304  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

177 }.get(self.action, ProjectFeatureSerializer)
178
179 def get_queryset(self): # type: ignore[no-untyped-def] # noqa: C901
180 if getattr(self, "swagger_fake_view", False):
181 return Feature.objects.none()
182
183 accessible_projects = self.request.user.get_permitted_projects(VIEW_PROJECT) # type: ignore[union-attr]
184
185 project = get_object_or_404(accessible_projects, pk=self.kwargs["project_pk"])
186
187 queryset = (
188 project.features.all()
189 .annotate(
190 last_modified_in_any_environment=Max(
191 "feature_states__environment_feature_version__created_at",
192 filter=Q(
193 feature_states__environment_feature_version__published_at__isnull=False
194 ),
195 ),
196 )
197 .prefetch_related(
198 "multivariate_options", "owners", "tags", "group_owners", "metadata"
199 )
200 )
201
202 query_serializer = FeatureQuerySerializer(
203 data=self.request.query_params,
204 context={"project": project},
205 )
206 query_serializer.is_valid(raise_exception=True)
207 query_data = query_serializer.validated_data
208
209 queryset = annotate_feature_queryset_with_code_references_summary(queryset)
210
211 queryset = self._filter_queryset(queryset, query_serializer)
212
213 if environment_id := query_data.get("environment"):
214 queryset = queryset.annotate(
215 last_modified_in_current_environment=Max(
216 "feature_states__environment_feature_version__created_at",
217 filter=Q(
218 feature_states__environment=environment_id,
219 feature_states__environment_feature_version__published_at__isnull=False,
220 ),
221 )
222 )
223
224 if query_data["value_search"] or query_data["is_enabled"] is not None:
225 queryset = self.apply_state_to_queryset(query_data, queryset)
226 sort = "%s%s" % (
227 "-" if query_data["sort_direction"] == "DESC" else "",
228 query_data["sort_field"],
229 )
230 override_ordering: list[str] = []
231 if environment_id and (segment_id := query_data.get("segment")):
232 queryset = queryset.annotate(
233 has_segment_override=Exists(
234 FeatureSegment.objects.filter(
235 feature=OuterRef("pk"),
236 segment_id=segment_id,

Callers 2

get_querysetMethod · 0.45
get_querysetMethod · 0.45

Tested by

no test coverage detected