Skip to content

Commit a5ff333

Browse files
authored
Merge pull request #530 from Police-Data-Accessibility-Project/mc_527_remove_url_error_status
mc_527_remove_url_error_status
2 parents e63f53c + e10624c commit a5ff333

File tree

15 files changed

+64
-49
lines changed

15 files changed

+64
-49
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""Remove URL Error Status
2+
3+
Revision ID: c4edeb795134
4+
Revises: b8a68f4260a4
5+
Create Date: 2025-11-20 15:30:15.783191
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
from src.util.alembic_helpers import remove_enum_value
14+
15+
# revision identifiers, used by Alembic.
16+
revision: str = 'c4edeb795134'
17+
down_revision: Union[str, None] = 'b8a68f4260a4'
18+
branch_labels: Union[str, Sequence[str], None] = None
19+
depends_on: Union[str, Sequence[str], None] = None
20+
21+
22+
def upgrade() -> None:
23+
remove_enum_value(
24+
enum_name="url_status",
25+
value_to_remove="error",
26+
targets=[
27+
("urls", "status")
28+
]
29+
)
30+
31+
32+
def downgrade() -> None:
33+
pass

src/api/endpoints/metrics/batches/aggregated/query/url_error/query.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
from src.api.endpoints.metrics.batches.aggregated.query.models.strategy_count import CountByBatchStrategyResponse
77
from src.collectors.enums import URLStatus
8+
from src.db.helpers.query import exists_url
89
from src.db.helpers.session import session_helper as sh
910
from src.db.models.impl.batch.sqlalchemy import Batch
1011
from src.db.models.impl.link.batch_url.sqlalchemy import LinkBatchURL
1112
from src.db.models.impl.url.core.sqlalchemy import URL
13+
from src.db.models.impl.url.task_error.sqlalchemy import URLTaskError
1214
from src.db.queries.base.builder import QueryBuilderBase
1315

1416

@@ -23,7 +25,9 @@ async def run(self, session: AsyncSession) -> list[CountByBatchStrategyResponse]
2325
.select_from(Batch)
2426
.join(LinkBatchURL)
2527
.join(URL)
26-
.where(URL.status == URLStatus.ERROR)
28+
.where(
29+
exists_url(URLTaskError)
30+
)
2731
.group_by(Batch.strategy, URL.status)
2832
)
2933

src/api/endpoints/metrics/batches/breakdown/error/cte_.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from sqlalchemy import select, func, CTE, Column
1+
from sqlalchemy import select, func
22

3-
from src.collectors.enums import URLStatus
3+
from src.api.endpoints.metrics.batches.breakdown.templates.cte_ import BatchesBreakdownURLCTE
4+
from src.db.helpers.query import exists_url
45
from src.db.models.impl.batch.sqlalchemy import Batch
56
from src.db.models.impl.link.batch_url.sqlalchemy import LinkBatchURL
6-
from src.api.endpoints.metrics.batches.breakdown.templates.cte_ import BatchesBreakdownURLCTE
77
from src.db.models.impl.url.core.sqlalchemy import URL
8+
from src.db.models.impl.url.task_error.sqlalchemy import URLTaskError
89

910
URL_ERROR_CTE = BatchesBreakdownURLCTE(
1011
select(
@@ -19,7 +20,9 @@
1920
URL,
2021
URL.id == LinkBatchURL.url_id
2122
)
22-
.where(URL.status == URLStatus.ERROR)
23+
.where(
24+
exists_url(URLTaskError)
25+
)
2326
.group_by(Batch.id)
2427
.cte("error")
2528
)

src/db/queries/implementations/core/get/recent_batch_summaries/url_counts/cte/error.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from sqlalchemy import select, func
22

33
from src.collectors.enums import URLStatus
4+
from src.db.helpers.query import exists_url
45
from src.db.models.impl.batch.sqlalchemy import Batch
56
from src.db.models.impl.link.batch_url.sqlalchemy import LinkBatchURL
67
from src.db.models.impl.url.core.sqlalchemy import URL
8+
from src.db.models.impl.url.task_error.sqlalchemy import URLTaskError
79
from src.db.queries.implementations.core.get.recent_batch_summaries.url_counts.cte_container import \
810
URLCountsCTEContainer
911

@@ -21,7 +23,7 @@
2123
URL.id == LinkBatchURL.url_id,
2224
)
2325
.where(
24-
URL.status == URLStatus.ERROR
26+
exists_url(URLTaskError)
2527
)
2628
.group_by(
2729
Batch.id

tests/automated/integration/api/batch/summaries/test_happy_path.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ async def test_get_batch_summaries(api_test_helper):
2929
count=4,
3030
status=URLCreationEnum.NOT_RELEVANT
3131
),
32-
TestURLCreationParameters(
33-
count=3,
34-
status=URLCreationEnum.ERROR
35-
)
3632
]
3733
),
3834
TestBatchCreationParameters(
@@ -78,10 +74,10 @@ async def test_get_batch_summaries(api_test_helper):
7874
result_2 = results[1]
7975
assert result_2.id == batch_2_id
8076
counts_2 = result_2.url_counts
81-
assert counts_2.total == 7
77+
assert counts_2.total == 4
8278
assert counts_2.not_relevant == 4
83-
assert counts_2.errored == 3
84-
assert counts_2.pending == 3
79+
assert counts_2.errored == 0
80+
assert counts_2.pending == 0
8581
assert counts_2.submitted == 0
8682
assert counts_2.duplicate == 0
8783

tests/automated/integration/api/metrics/batches/test_aggregated.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@ async def test_get_batches_aggregated_metrics(
2323
adb_client=adb_client,
2424
strategy=CollectorType.MANUAL,
2525
)
26-
url_mappings_error: list[SimpleURLMapping] = await create_urls(
26+
url_mappings_broken: list[SimpleURLMapping] = await create_urls(
2727
adb_client=adb_client,
28-
status=URLStatus.ERROR,
28+
status=URLStatus.BROKEN,
2929
count=4,
3030
)
3131
url_mappings_ok: list[SimpleURLMapping] = await create_urls(
3232
adb_client=adb_client,
3333
status=URLStatus.OK,
3434
count=11,
3535
)
36-
url_mappings_all: list[SimpleURLMapping] = url_mappings_error + url_mappings_ok
36+
url_mappings_all: list[SimpleURLMapping] = url_mappings_broken + url_mappings_ok
3737
url_ids_all: list[int] = [url_mapping.url_id for url_mapping in url_mappings_all]
3838
await create_batch_url_links(
3939
adb_client=adb_client,
@@ -88,5 +88,5 @@ async def test_get_batches_aggregated_metrics(
8888
assert inner_dto_manual.count_urls_pending == 15
8989
assert inner_dto_manual.count_urls_submitted == 6
9090
assert inner_dto_manual.count_urls_rejected == 9
91-
assert inner_dto_manual.count_urls_errors == 12
91+
assert inner_dto_manual.count_urls_errors == 0 # TODO: Change by adding URL Task Errors
9292
assert inner_dto_manual.count_urls_validated == 30

tests/automated/integration/api/metrics/batches/test_breakdown.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,6 @@ async def test_get_batches_breakdown_metrics(api_test_helper):
4949
strategy=CollectorType.AUTO_GOOGLER,
5050
date_generated=today - timedelta(days=14)
5151
)
52-
error_url_mappings: list[SimpleURLMapping] = await create_urls(
53-
adb_client=adb_client,
54-
status=URLStatus.ERROR,
55-
count=4,
56-
)
57-
error_url_ids: list[int] = [url_mapping.url_id for url_mapping in error_url_mappings]
5852
validated_url_mappings: list[SimpleURLMapping] = await create_urls(
5953
adb_client=adb_client,
6054
count=8,
@@ -73,7 +67,7 @@ async def test_get_batches_breakdown_metrics(api_test_helper):
7367
await create_batch_url_links(
7468
adb_client=adb_client,
7569
batch_id=batch_id_3,
76-
url_ids=error_url_ids + validated_url_ids,
70+
url_ids=validated_url_ids,
7771
)
7872

7973

@@ -107,11 +101,11 @@ async def test_get_batches_breakdown_metrics(api_test_helper):
107101
assert dto_batch_3.batch_id == batch_id_3
108102
assert dto_batch_3.status == BatchStatus.READY_TO_LABEL
109103
assert dto_batch_3.strategy == CollectorType.AUTO_GOOGLER
110-
assert dto_batch_3.count_url_total == 12
111-
assert dto_batch_3.count_url_pending == 5
104+
assert dto_batch_3.count_url_total == 8
105+
assert dto_batch_3.count_url_pending == 1
112106
assert dto_batch_3.count_url_submitted == 0
113107
assert dto_batch_3.count_url_rejected == 3
114-
assert dto_batch_3.count_url_error == 4
108+
assert dto_batch_3.count_url_error == 0
115109
assert dto_batch_3.count_url_validated == 7
116110

117111
dto_2 = await ath.request_validator.get_batches_breakdown_metrics(

tests/automated/integration/api/metrics/test_backlog.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,6 @@ async def test_get_backlog_metrics(api_test_helper):
4646
url_ids=not_relevant_url_ids_2[:4],
4747
validation_type=URLType.NOT_RELEVANT
4848
)
49-
error_url_mappings_2: list[SimpleURLMapping] = await ddc.create_urls(
50-
status=URLStatus.ERROR,
51-
count=2
52-
)
53-
error_url_ids_2: list[int] = [url_mapping.url_id for url_mapping in error_url_mappings_2]
54-
await ddc.create_batch_url_links(url_ids=error_url_ids_2, batch_id=batch_2_id)
5549

5650
await adb_client.populate_backlog_snapshot(
5751
dt=today.subtract(months=2).naive()

tests/automated/integration/api/metrics/urls/aggregated/test_core.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ async def test_get_urls_aggregated_metrics(api_test_helper):
4747
strategy=CollectorType.AUTO_GOOGLER,
4848
)
4949
url_mappings_2_ok: list[SimpleURLMapping] = await ddc.create_urls(batch_id=batch_2, count=4, status=URLStatus.OK)
50-
url_mappings_2_error: list[SimpleURLMapping] = await ddc.create_urls(batch_id=batch_2, count=2, status=URLStatus.ERROR)
5150
url_mappings_2_validated: list[SimpleURLMapping] = await ddc.create_validated_urls(count=1, validation_type=URLType.DATA_SOURCE)
5251
url_mappings_2_not_relevant: list[SimpleURLMapping] = await ddc.create_validated_urls(count=5, validation_type=URLType.NOT_RELEVANT)
5352
url_ids_2_validated: list[int] = [url_mapping.url_id for url_mapping in url_mappings_2_validated]

tests/automated/integration/api/metrics/urls/breakdown/test_pending.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@ async def test_get_urls_breakdown_pending_metrics(api_test_helper):
6464
count=3,
6565
status=URLCreationEnum.SUBMITTED
6666
),
67-
TestURLCreationParameters(
68-
count=4,
69-
status=URLCreationEnum.ERROR
70-
),
7167
TestURLCreationParameters(
7268
count=5,
7369
status=URLCreationEnum.OK,

0 commit comments

Comments
 (0)