Skip to content

Commit 5eaa397

Browse files
Merge pull request #5078 from bcgov/4711-bump-django-to-version-6
4711 bump django to version 6.0.8
2 parents 656063e + 4e11d27 commit 5eaa397

12 files changed

Lines changed: 78 additions & 124 deletions

File tree

bc_obps/bc_obps/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
"django.contrib.sessions",
101101
"django.contrib.messages",
102102
"django.contrib.staticfiles",
103+
"django.contrib.postgres",
103104
# Third-party apps
104105
'simple_history',
105106
"corsheaders",

bc_obps/poetry.lock

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

bc_obps/pyproject.toml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ dynamic = ["dependencies"]
99
[tool.poetry]
1010
[tool.poetry.dependencies]
1111
python = "~3.14"
12-
Django = "~5.2.8"
12+
Django = "~6.0.8"
1313
python-dotenv = "^1.2.2"
1414
django-ninja = "~1.6.2"
1515
psycopg = "^3.1.10"
1616
psycopg-binary = "^3.1.10"
17-
django-phonenumber-field = "^7.1.0"
17+
django-phonenumber-field = "^8.5.0"
1818
django-phonenumbers = "^1.0.1"
1919
django-storages = {extras = ["google"], version = "^1.14.6"}
2020
whitenoise = "^6.5.0"
2121
django-cors-headers = "4.9.0"
22-
django-localflavor = "^4.0"
23-
django-simple-history = "^3.4"
22+
django-localflavor = "^5.1"
23+
django-simple-history = "^3.13.0"
2424
gunicorn = "^23.0.0"
25-
sentry-sdk = {extras = ["django"], version = "^2.46.0"}
25+
sentry-sdk = {extras = ["django"], version = "^2.66.1"}
2626
dj-database-url = "^2.1.0"
27-
django-pgtrigger = "^4.13.3"
27+
django-pgtrigger = "^4.17.0"
2828
weasyprint = "^69.0"
2929
jsonschema = "^4.23.0"
3030
types-jsonschema = "^4.23.0.20241208"
@@ -35,18 +35,18 @@ time-machine = "^3.0.0"
3535
[tool.poetry.group.dev.dependencies]
3636
black = "^26.3.1"
3737
pytest = "^9.0.3"
38-
pytest-django = "^4.11.1"
38+
pytest-django = "^4.12.0"
3939
pytest-testmon = "^2.2.0"
4040
pytest-picked = "^0.5.1"
4141
model-bakery = "^1.24.0"
42-
django-extensions = "^3.2.3"
42+
django-extensions = "^4.1"
4343
ipdb = "^0.13.13"
4444
pytest-cov = "^7.1.0"
45-
django-silk = "^5.1.0"
45+
django-silk = "^5.5.0"
4646
pytest-mock = "^3.15.1"
4747
ruff = "^0.16.0"
48-
mypy = "^1.10.0"
49-
django-stubs = {extras = ["compatible-mypy"], version = "^5.0.0"}
48+
mypy = "^1.13"
49+
django-stubs = {extras = ["compatible-mypy"], version = "^6.0.7"}
5050
types-requests = "^2.31.0.20240406"
5151
pytest-xdist = "^3.8.0"
5252
django-querycount = "^0.8.3"

bc_obps/registration/schema/operation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ def serialize_document(doc: Document | None) -> Optional[str]:
1717
# Something similar to dataURL to allow passing metadata along with the filename.
1818
# Required because RJSF expects a string for a file field.
1919
if doc:
20-
name = doc.file.name.split('/')[-1]
20+
# Document.file is non-nullable, so name is always set; django-stubs 6.0 types it as str | None.
21+
name = doc.file.name.split('/')[-1] # type: ignore[union-attr]
2122
return json.dumps({"name": name, "id": doc.id, "status": doc.status})
2223
return None
2324

bc_obps/reporting/service/compliance_service/compliance_service.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,8 @@ def save_compliance_data(cls, report_version_id: int) -> None:
372372
compliance_summary_record_id = ReportComplianceSummary.objects.get(report_version_id=report_version_id).id
373373

374374
compliance_summary_record, _ = ReportComplianceSummary.objects.update_or_create(
375-
id=compliance_summary_record_id,
375+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
376+
id=compliance_summary_record_id, # type: ignore[misc]
376377
report_version=report_version_record,
377378
defaults=compliance_data_to_save.as_record_defaults(),
378379
)
@@ -387,7 +388,8 @@ def save_compliance_data(cls, report_version_id: int) -> None:
387388
product_id=product_data_to_save.product_id,
388389
).id
389390
ReportComplianceSummaryProduct.objects.update_or_create(
390-
id=product_data_id,
391+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
392+
id=product_data_id, # type: ignore[misc]
391393
report_version=report_version_record,
392394
report_compliance_summary=compliance_summary_record,
393395
product=RegulatedProduct.objects.get(id=product_data_to_save.product_id),

bc_obps/reporting/service/report_activity_save_service.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ def save(self, data: dict) -> ReportActivity:
6868

6969
# Only one ReportActivity record per report_version/facility/activity should ever exist
7070
report_activity, _ = ReportActivity.objects.update_or_create(
71-
id=data.get("id"),
71+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
72+
id=data.get("id"), # type: ignore[misc]
7273
report_version=self.report_version,
7374
facility_report=self.facility_report,
7475
activity=self.activity,
@@ -121,7 +122,8 @@ def save_source_type(
121122
raise UserError(f"Source type {source_type_slug} is expecting emission data")
122123

123124
report_source_type, _ = ReportSourceType.objects.update_or_create(
124-
id=source_type_data.get("id"),
125+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
126+
id=source_type_data.get("id"), # type: ignore[misc]
125127
report_version=self.facility_report.report_version,
126128
report_activity=report_activity,
127129
source_type=source_type,
@@ -171,7 +173,7 @@ def save_unit(self, report_source_type: ReportSourceType, unit_data: dict) -> Re
171173

172174
# Update record if id was provided, create otherwise
173175
report_unit, _ = ReportUnit.objects.update_or_create(
174-
id=report_unit_id,
176+
id=report_unit_id, # type: ignore[misc]
175177
create_defaults={
176178
"json_data": json_data,
177179
"report_source_type": report_source_type,
@@ -227,7 +229,7 @@ def save_fuel(
227229
fuel_type = FuelType.objects.get(name=fuel_name)
228230

229231
report_fuel, _ = ReportFuel.objects.update_or_create(
230-
id=report_fuel_id,
232+
id=report_fuel_id, # type: ignore[misc]
231233
create_defaults={
232234
"json_data": json_data,
233235
"report_source_type": report_source_type,
@@ -272,7 +274,7 @@ def save_emission(
272274
raise UserError("Emission is expecting methodology data")
273275

274276
report_emission, _ = ReportEmission.objects.update_or_create(
275-
id=report_emission_id,
277+
id=report_emission_id, # type: ignore[misc]
276278
create_defaults={
277279
"json_data": json_data,
278280
"report_source_type": report_source_type,
@@ -301,7 +303,7 @@ def save_methodology(
301303

302304
report_methodology_id = methodology_data.get("id")
303305
report_methodology, _ = ReportMethodology.objects.update_or_create(
304-
id=report_methodology_id,
306+
id=report_methodology_id, # type: ignore[misc]
305307
create_defaults={
306308
"methodology": methodology,
307309
"json_data": json_data,

bc_obps/reporting/service/report_non_attributable_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ def save_report_non_attributable_emissions(
3939

4040
# Using the object attributes instead of .get()
4141
report_non_attributable, _ = ReportNonAttributableEmissions.objects.update_or_create(
42-
id=activity_data.id,
42+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
43+
id=activity_data.id, # type: ignore[misc]
4344
defaults={
4445
"report_version": report_version,
4546
"facility_report": facility_report,

bc_obps/service/data_access_service/address_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def upsert_address_from_data(
2121
address_id: Optional[int],
2222
) -> Address:
2323
address, _ = Address.objects.update_or_create(
24-
id=address_id,
24+
# A None id is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
25+
id=address_id, # type: ignore[misc]
2526
defaults={**address_data},
2627
)
2728
return address

bc_obps/service/data_access_service/multiple_operator_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ def create_or_update(
1010
cls, multiple_operator_id: int | None, operation: Operation, user_guid: UUID, data: DictStrAny
1111
) -> MultipleOperator:
1212
mo_operator_instance, _ = MultipleOperator.objects.update_or_create(
13-
pk=multiple_operator_id,
13+
# A None pk is the intentional "create" path; django-stubs 6.0 rejects None in lookups.
14+
pk=multiple_operator_id, # type: ignore[misc]
1415
defaults={**data, 'operation': operation},
1516
)
1617

bc_obps/service/data_access_service/operation_designated_operator_timeline_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def get_operation_timeline_for_user(
4848
operation_id=OuterRef('operation'),
4949
operation_id__type=Operation.Types.SFO,
5050
)
51-
.only('facility__pk', 'facility__name')
51+
.only('facility__id', 'facility__name')
5252
.order_by('start_date')
5353
)
5454
if exclude_previously_owned:

0 commit comments

Comments
 (0)