-
Notifications
You must be signed in to change notification settings - Fork 327
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: target frameworks filtered to the supported ones only when applying a mapping #1523
fix: target frameworks filtered to the supported ones only when applying a mapping #1523
Conversation
WalkthroughThe pull request introduces three main changes. In the backend, a new attribute ( Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant FrameworkViewSet
participant FrameworkFilter
participant DB
User->>FrameworkViewSet: GET /framework?baseline=value
FrameworkViewSet->>FrameworkFilter: Apply filter_framework(queryset, name, value)
FrameworkFilter->>DB: Query frameworks using baseline filter
DB-->>FrameworkFilter: Return filtered frameworks
FrameworkFilter-->>FrameworkViewSet: Return filtered queryset
FrameworkViewSet-->>User: Respond with frameworks list
Possibly related PRs
Poem
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
backend/core/views.py (1)
3116-3138
: Optimize database queries and improve documentation.The filter implementation is good but could be enhanced:
- Consider prefetching related fields to optimize database queries.
- Add docstring to explain the filter's purpose and behavior.
Apply this diff to improve the implementation:
class FrameworkFilter(df.FilterSet): + """Filter for Framework objects based on baseline compliance assessment. + + Allows filtering frameworks that are either the selected baseline framework + or related to it through requirement mapping sets. + """ baseline = df.ModelChoiceFilter( queryset=ComplianceAssessment.objects.all(), method="filter_framework", label="Baseline", ) def filter_framework(self, queryset, name, value): + """Filter frameworks based on baseline compliance assessment. + + Args: + queryset: The base queryset of Framework objects. + name: The name of the filter field. + value: The ComplianceAssessment object to use as baseline. + + Returns: + QuerySet: Filtered queryset containing the baseline framework and + frameworks related through requirement mapping sets. + """ if not value: return queryset source_framework = value.framework - target_framework_ids = list( - RequirementMappingSet.objects.filter( - source_framework=source_framework - ).values_list("target_framework__id", flat=True) - ) + # Optimize by using select_related to prefetch source_framework + target_framework_ids = RequirementMappingSet.objects.filter( + source_framework=source_framework + ).select_related('source_framework').values_list( + "target_framework__id", flat=True + ) target_framework_ids.append(source_framework.id) return queryset.filter(id__in=target_framework_ids)🧰 Tools
🪛 Ruff (0.8.2)
3136-3136:
Framework
may be undefined, or defined from star imports(F405)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
backend/core/models.py
(1 hunks)backend/core/views.py
(1 hunks)frontend/src/lib/components/Forms/ModelForm/ComplianceAssessmentForm.svelte
(1 hunks)
🧰 Additional context used
🪛 Ruff (0.8.2)
backend/core/views.py
3136-3136: Framework
may be undefined, or defined from star imports
(F405)
3145-3145: Framework
may be undefined, or defined from star imports
(F405)
⏰ Context from checks skipped due to timeout of 90000ms (11)
- GitHub Check: startup-functional-test (3.12)
- GitHub Check: startup-docker-compose-test
- GitHub Check: enterprise-startup-functional-test (3.12)
- GitHub Check: functional-tests (3.12, chromium)
- GitHub Check: enterprise-functional-tests (3.12, chromium)
- GitHub Check: ruff (3.12)
- GitHub Check: test (3.12)
- GitHub Check: enterprise-startup-docker-compose-test
- GitHub Check: build (3.12)
- GitHub Check: Analyze (python)
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (3)
frontend/src/lib/components/Forms/ModelForm/ComplianceAssessmentForm.svelte (1)
72-72
: LGTM! Good enhancement to framework filtering.The addition of
optionsDetailedUrlParameters
to pass the baseline value enables server-side filtering of frameworks, which is more efficient than client-side filtering.backend/core/models.py (1)
2850-2850
: LGTM! Good addition for data validation.The
fields_to_check
attribute specifies which fields should be validated for consistency or uniqueness, helping maintain data integrity for compliance assessments.backend/core/views.py (1)
3140-3147
: LGTM! Good use of custom filter class.The change from
filterset_fields
tofilterset_class = FrameworkFilter
is a good improvement that enables more complex filtering capabilities.🧰 Tools
🪛 Ruff (0.8.2)
3145-3145:
Framework
may be undefined, or defined from star imports(F405)
Summary by CodeRabbit