Skip to content

Commit fe0ce30

Browse files
authored
Merge branch 'main' into feature/improve-leaders-presentation
2 parents f4408f0 + 061b1d5 commit fe0ce30

File tree

17 files changed

+1647
-745
lines changed

17 files changed

+1647
-745
lines changed

.github/workflows/run-code-ql.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
3030

3131
- name: Initialize CodeQL
32-
uses: github/codeql-action/init@d6bbdef45e766d081b84a2def353b0055f728d3e
32+
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8
3333
with:
3434
languages: ${{ matrix.language }}
3535

@@ -53,6 +53,6 @@ jobs:
5353
run: pnpm install --frozen-lockfile
5454

5555
- name: Perform CodeQL analysis
56-
uses: github/codeql-action/analyze@d6bbdef45e766d081b84a2def353b0055f728d3e
56+
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8
5757
with:
5858
category: /language:${{ matrix.language }}

.github/workflows/test-schema.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ jobs:
6464
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
6565

6666
- name: Initialize CodeQL
67-
uses: github/codeql-action/init@d6bbdef45e766d081b84a2def353b0055f728d3e
67+
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8
6868
with:
6969
languages: ${{ matrix.language }}
7070

7171
- name: Perform CodeQL analysis
72-
uses: github/codeql-action/analyze@d6bbdef45e766d081b84a2def353b0055f728d3e
72+
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8
7373
with:
7474
category: /language:${{ matrix.language }}
7575

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ repos:
1010
exclude: (.github|pnpm-lock.yaml)
1111

1212
- repo: https://github.com/astral-sh/ruff-pre-commit
13-
rev: v0.12.4
13+
rev: v0.12.5
1414
hooks:
1515
- id: ruff
1616
args:

backend/apps/common/management/commands/purge_data.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""A command to purge OWASP Nest data."""
22

3+
# ruff: noqa: SLF001 https://docs.astral.sh/ruff/rules/private-member-access/
4+
35
from django.apps import apps
46
from django.core.management.base import BaseCommand
57
from django.db import connection

backend/apps/common/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Common app models."""
22

3+
# ruff: noqa: SLF001 https://docs.astral.sh/ruff/rules/private-member-access/
4+
35
from django.db import models
46

57
BATCH_SIZE = 1000

backend/apps/github/models/milestone.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def bulk_save(milestones, fields=None):
8484
BulkSaveModel.bulk_save(Milestone, milestones, fields=fields)
8585

8686
@staticmethod
87-
def update_data(gh_milestone, author=None, repository=None, save=True):
87+
def update_data(gh_milestone, *, author=None, repository=None, save=True):
8888
"""Update Milestone data.
8989
9090
Args:

backend/poetry.lock

Lines changed: 275 additions & 217 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/pyproject.toml

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ django-cors-headers = "^4.7.0"
2929
django-ninja = "^1.4.3"
3030
django-redis = "^5.4.0"
3131
django-storages = { extras = ["s3"], version = "^1.14.4" }
32-
emoji= "^2.14.1"
32+
emoji = "^2.14.1"
3333
geopy = "^2.4.1"
3434
gunicorn = "^23.0.0"
3535
humanize = "^4.11.0"
@@ -39,7 +39,7 @@ langchain-community = "^0.3.26"
3939
lxml = "^5.3.0"
4040
markdown = "^3.7"
4141
openai = "^1.60.1"
42-
pgvector= "^0.4.1"
42+
pgvector = "^0.4.1"
4343
psycopg2-binary = "^2.9.9"
4444
pydantic = "^2.11.1"
4545
pydantic-core = "^2.33.0"
@@ -52,7 +52,7 @@ requests = "^2.32.3"
5252
sentry-sdk = { extras = ["django"], version = "^2.20.0" }
5353
slack-bolt = "^1.22.0"
5454
slack-sdk = "^3.35.0"
55-
strawberry-graphql = {extras = ["django"], version = "^0.270.1"}
55+
strawberry-graphql = { extras = ["django"], version = "^0.270.1" }
5656
strawberry-graphql-django = "^0.59.1"
5757
thefuzz = "^0.22.1"
5858

@@ -123,58 +123,59 @@ target-version = "py313"
123123
[tool.ruff.lint]
124124
extend-select = ["I"]
125125
ignore = [
126-
"ANN", # https://docs.astral.sh/ruff/rules/#flake8-annotations-ann/
127-
"ARG002", # https://docs.astral.sh/ruff/rules/unused-method-argument/
128-
"C901", # https://docs.astral.sh/ruff/rules/complex-structure/
129-
"COM812", # https://docs.astral.sh/ruff/rules/missing-trailing-comma/
130-
"D407", # https://docs.astral.sh/ruff/rules/missing-dashed-underline-after-section/
131-
"DJ012", # https://docs.astral.sh/ruff/rules/django-unordered-body-content-in-model/
132-
"FBT002", # https://docs.astral.sh/ruff/rules/boolean-default-value-positional-argument/
133-
"FIX002", # https://docs.astral.sh/ruff/rules/line-contains-todo/
134-
"PD", # https://docs.astral.sh/ruff/rules/#pandas-vet-pd
135-
"PERF203", # https://docs.astral.sh/ruff/rules/try-except-in-loop/
136-
"PLC0414", # https://docs.astral.sh/ruff/rules/useless-import-alias/
137-
"PLC0415", # https://docs.astral.sh/ruff/rules/import-outside-top-level/
138-
"PLR0912", # https://docs.astral.sh/ruff/rules/too-many-branches/
139-
"PLR0913", # https://docs.astral.sh/ruff/rules/too-many-arguments/
140-
"PLR0915", # https://docs.astral.sh/ruff/rules/too-many-statements/
141-
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
142-
"SLF001", # https://docs.astral.sh/ruff/rules/private-member-access/
143-
"TD003", # https://docs.astral.sh/ruff/rules/missing-todo-link/
126+
"ANN", # https://docs.astral.sh/ruff/rules/#flake8-annotations-ann/
127+
"ARG002", # https://docs.astral.sh/ruff/rules/unused-method-argument/
128+
"C901", # https://docs.astral.sh/ruff/rules/complex-structure/
129+
"COM812", # https://docs.astral.sh/ruff/rules/missing-trailing-comma/
130+
"D407", # https://docs.astral.sh/ruff/rules/missing-dashed-underline-after-section/
131+
"DJ012", # https://docs.astral.sh/ruff/rules/django-unordered-body-content-in-model/
132+
"FIX002", # https://docs.astral.sh/ruff/rules/line-contains-todo/
133+
"PLC0415", # https://docs.astral.sh/ruff/rules/import-outside-top-level/
134+
"PLR0912", # https://docs.astral.sh/ruff/rules/too-many-branches/
135+
"PLR0913", # https://docs.astral.sh/ruff/rules/too-many-arguments/
136+
"PLR0915", # https://docs.astral.sh/ruff/rules/too-many-statements/
137+
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
138+
"TD003", # https://docs.astral.sh/ruff/rules/missing-todo-link/
144139
]
145140
select = ["ALL"]
146141

147142
[tool.ruff.lint.per-file-ignores]
148143
"**/__init__.py" = [
149144
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
150-
"F401" # https://docs.astral.sh/ruff/rules/unused-import/
145+
"F401", # https://docs.astral.sh/ruff/rules/unused-import/
151146
]
152147
"**/management/commands/*.py" = [
153148
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
154149
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
155-
"T201" # https://docs.astral.sh/ruff/rules/print/
150+
"T201", # https://docs.astral.sh/ruff/rules/print/
156151
]
157152
"**/migrations/*.py" = [
158-
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
159-
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
160-
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
161-
"E501" # https://docs.astral.sh/ruff/rules/line-too-long/
153+
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
154+
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
155+
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
156+
"E501", # https://docs.astral.sh/ruff/rules/line-too-long/
157+
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
162158
]
163159
"**/models/*.py" = [
164-
"D106" # https://docs.astral.sh/ruff/rules/undocumented-public-nested-class/
160+
"D106", # https://docs.astral.sh/ruff/rules/undocumented-public-nested-class/
165161
]
166162
"**/rest/v1/*.py" = [
167163
"ARG001", # https://docs.astral.sh/ruff/rules/unused-function-argument/
168164
"B008", # https://docs.astral.sh/ruff/rules/function-call-in-default-argument/
169165
]
166+
"**/settings/*.py" = [
167+
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
168+
]
170169
"**/tests/**/*.py" = [
171170
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
172171
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
173172
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
174173
"D103", # https://docs.astral.sh/ruff/rules/undocumented-public-function/
175174
"D107", # https://docs.astral.sh/ruff/rules/undocumented-public-init/
176175
"PLR2004", # https://docs.astral.sh/ruff/rules/magic-value-comparison/
177-
"S101" # https://docs.astral.sh/ruff/rules/assert/
176+
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
177+
"S101", # https://docs.astral.sh/ruff/rules/assert/
178+
"SLF001", # https://docs.astral.sh/ruff/rules/private-member-access/
178179
]
179180

180181
[build-system]

backend/tests/apps/github/admin/__init__.py

Whitespace-only changes.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from unittest.mock import MagicMock
2+
3+
import pytest
4+
from django.contrib.admin.sites import AdminSite
5+
6+
from apps.github.admin.issue import IssueAdmin
7+
from apps.github.models.issue import Issue
8+
9+
10+
@pytest.fixture
11+
def issue_admin_instance():
12+
return IssueAdmin(model=Issue, admin_site=AdminSite())
13+
14+
15+
class TestIssueAdmin:
16+
"""Test suite for the IssueAdmin class."""
17+
18+
def test_custom_field_github_url(self, issue_admin_instance):
19+
"""Test that custom_field_github_url generates the correct HTML link."""
20+
mock_issue = MagicMock()
21+
mock_issue.url = "https://github.com/mock-org/mock-repo/issues/1"
22+
23+
result = issue_admin_instance.custom_field_github_url(mock_issue)
24+
25+
expected_html = (
26+
"<a href='https://github.com/mock-org/mock-repo/issues/1' target='_blank'>↗️</a>"
27+
)
28+
29+
assert result == expected_html
30+
31+
def test_list_display_contains_custom_field(self, issue_admin_instance):
32+
"""Test that the list_display includes custom fields."""
33+
assert "custom_field_github_url" in issue_admin_instance.list_display

0 commit comments

Comments
 (0)