Skip to content

Commit ae77cb4

Browse files
authored
Merge pull request #573 from Police-Data-Accessibility-Project/mc_update_permissions
Update permissions
2 parents ac527a6 + f380eb5 commit ae77cb4

File tree

17 files changed

+70
-48
lines changed

17 files changed

+70
-48
lines changed

src/api/endpoints/agencies/routes.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
from src.api.endpoints.agencies.root.post.response import AgencyPostResponse
1717
from src.api.shared.models.message_response import MessageResponse
1818
from src.core.core import AsyncCore
19+
from src.security.dtos.access_info import AccessInfo
20+
from src.security.manager import get_admin_access_info
1921

2022
agencies_router = APIRouter(prefix="/agencies", tags=["Agencies"])
2123

@@ -34,7 +36,9 @@ async def get_agencies(
3436
@agencies_router.post("")
3537
async def create_agency(
3638
request: AgencyPostRequest,
39+
access_info: AccessInfo = Depends(get_admin_access_info),
3740
async_core: AsyncCore = Depends(get_async_core),
41+
3842
) -> AgencyPostResponse:
3943
return await async_core.adb_client.run_query_builder(
4044
AddAgencyQueryBuilder(request=request)
@@ -45,6 +49,7 @@ async def delete_agency(
4549
agency_id: int = Path(
4650
description="Agency ID to delete"
4751
),
52+
access_info: AccessInfo = Depends(get_admin_access_info),
4853
async_core: AsyncCore = Depends(get_async_core),
4954
) -> MessageResponse:
5055
await async_core.adb_client.run_query_builder(
@@ -58,6 +63,7 @@ async def update_agency(
5863
agency_id: int = Path(
5964
description="Agency ID to update"
6065
),
66+
access_info: AccessInfo = Depends(get_admin_access_info),
6167
async_core: AsyncCore = Depends(get_async_core),
6268
) -> MessageResponse:
6369
await async_core.adb_client.run_query_builder(
@@ -84,6 +90,7 @@ async def add_location_to_agency(
8490
location_id: int = Path(
8591
description="Location ID to add"
8692
),
93+
access_info: AccessInfo = Depends(get_admin_access_info),
8794
async_core: AsyncCore = Depends(get_async_core),
8895
) -> MessageResponse:
8996
await async_core.adb_client.run_query_builder(
@@ -99,6 +106,7 @@ async def remove_location_from_agency(
99106
location_id: int = Path(
100107
description="Location ID to remove"
101108
),
109+
access_info: AccessInfo = Depends(get_admin_access_info),
102110
async_core: AsyncCore = Depends(get_async_core),
103111
) -> MessageResponse:
104112
await async_core.adb_client.run_query_builder(

src/api/endpoints/annotate/routes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from src.core.core import AsyncCore
1818
from src.db.queries.implementations.anonymous_session import MakeAnonymousSessionQueryBuilder
1919
from src.security.dtos.access_info import AccessInfo
20-
from src.security.manager import get_access_info, get_standard_user_access_info
20+
from src.security.manager import get_admin_access_info, get_standard_user_access_info
2121

2222
annotate_router = APIRouter(
2323
prefix="/annotate",
@@ -136,7 +136,7 @@ async def migrate_annotations_to_user(
136136
async def get_agency_suggestions(
137137
url_id: int,
138138
async_core: AsyncCore = Depends(get_async_core),
139-
access_info: AccessInfo = Depends(get_access_info),
139+
access_info: AccessInfo = Depends(get_admin_access_info),
140140
location_id: int | None = Query(default=None)
141141
) -> AgencyAnnotationResponseOuterInfo:
142142
return await async_core.adb_client.run_query_builder(

src/api/endpoints/batch/routes.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from src.core.core import AsyncCore
1313
from src.db.models.materialized_views.batch_url_status.enums import BatchURLStatusViewEnum
1414
from src.security.dtos.access_info import AccessInfo
15-
from src.security.manager import get_access_info
15+
from src.security.manager import get_admin_access_info
1616

1717
batch_router = APIRouter(
1818
prefix="/batch",
@@ -36,7 +36,7 @@ async def get_batch_status(
3636
default=1
3737
),
3838
core: AsyncCore = Depends(get_async_core),
39-
access_info: AccessInfo = Depends(get_access_info),
39+
access_info: AccessInfo = Depends(get_admin_access_info),
4040
) -> GetBatchSummariesResponse:
4141
"""
4242
Get the status of recent batches
@@ -52,7 +52,7 @@ async def get_batch_status(
5252
async def get_batch_info(
5353
batch_id: int = Path(description="The batch id"),
5454
core: AsyncCore = Depends(get_async_core),
55-
access_info: AccessInfo = Depends(get_access_info),
55+
access_info: AccessInfo = Depends(get_admin_access_info),
5656
) -> BatchSummary:
5757
return await core.get_batch_info(batch_id)
5858

@@ -64,7 +64,7 @@ async def get_urls_by_batch(
6464
default=1
6565
),
6666
core: AsyncCore = Depends(get_async_core),
67-
access_info: AccessInfo = Depends(get_access_info),
67+
access_info: AccessInfo = Depends(get_admin_access_info),
6868
) -> GetURLsByBatchResponse:
6969
return await core.get_urls_by_batch(batch_id, page=page)
7070

@@ -76,15 +76,15 @@ async def get_duplicates_by_batch(
7676
default=1
7777
),
7878
core: AsyncCore = Depends(get_async_core),
79-
access_info: AccessInfo = Depends(get_access_info),
79+
access_info: AccessInfo = Depends(get_admin_access_info),
8080
) -> GetDuplicatesByBatchResponse:
8181
return await core.get_duplicate_urls_by_batch(batch_id, page=page)
8282

8383
@batch_router.get("/{batch_id}/logs")
8484
async def get_batch_logs(
8585
batch_id: int = Path(description="The batch id"),
8686
async_core: AsyncCore = Depends(get_async_core),
87-
access_info: AccessInfo = Depends(get_access_info),
87+
access_info: AccessInfo = Depends(get_admin_access_info),
8888
) -> GetBatchLogsResponse:
8989
"""
9090
Retrieve the logs for a recent batch.
@@ -96,6 +96,6 @@ async def get_batch_logs(
9696
async def abort_batch(
9797
batch_id: int = Path(description="The batch id"),
9898
async_core: AsyncCore = Depends(get_async_core),
99-
access_info: AccessInfo = Depends(get_access_info),
99+
access_info: AccessInfo = Depends(get_admin_access_info),
100100
) -> MessageResponse:
101101
return await async_core.abort_batch(batch_id)

src/api/endpoints/collector/routes.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from src.collectors.impl.example.dtos.input import ExampleInputDTO
1111
from src.collectors.enums import CollectorType
1212
from src.core.core import AsyncCore
13-
from src.security.manager import get_access_info
13+
from src.security.manager import get_admin_access_info
1414
from src.security.dtos.access_info import AccessInfo
1515
from src.collectors.impl.ckan.dtos.input import CKANInputDTO
1616
from src.collectors.impl.muckrock.collectors.all_foia.dto import MuckrockAllFOIARequestsCollectorInputDTO
@@ -27,7 +27,7 @@
2727
async def start_example_collector(
2828
dto: ExampleInputDTO,
2929
core: AsyncCore = Depends(get_async_core),
30-
access_info: AccessInfo = Depends(get_access_info),
30+
access_info: AccessInfo = Depends(get_admin_access_info),
3131
) -> CollectorStartInfo:
3232
"""
3333
Start the example collector
@@ -42,7 +42,7 @@ async def start_example_collector(
4242
async def start_ckan_collector(
4343
dto: CKANInputDTO,
4444
core: AsyncCore = Depends(get_async_core),
45-
access_info: AccessInfo = Depends(get_access_info),
45+
access_info: AccessInfo = Depends(get_admin_access_info),
4646
) -> CollectorStartInfo:
4747
"""
4848
Start the ckan collector
@@ -57,7 +57,7 @@ async def start_ckan_collector(
5757
async def start_common_crawler_collector(
5858
dto: CommonCrawlerInputDTO,
5959
core: AsyncCore = Depends(get_async_core),
60-
access_info: AccessInfo = Depends(get_access_info),
60+
access_info: AccessInfo = Depends(get_admin_access_info),
6161
) -> CollectorStartInfo:
6262
"""
6363
Start the common crawler collector
@@ -72,7 +72,7 @@ async def start_common_crawler_collector(
7272
async def start_auto_googler_collector(
7373
dto: AutoGooglerInputDTO,
7474
core: AsyncCore = Depends(get_async_core),
75-
access_info: AccessInfo = Depends(get_access_info),
75+
access_info: AccessInfo = Depends(get_admin_access_info),
7676
) -> CollectorStartInfo:
7777
"""
7878
Start the auto googler collector
@@ -87,7 +87,7 @@ async def start_auto_googler_collector(
8787
async def start_muckrock_collector(
8888
dto: MuckrockSimpleSearchCollectorInputDTO,
8989
core: AsyncCore = Depends(get_async_core),
90-
access_info: AccessInfo = Depends(get_access_info),
90+
access_info: AccessInfo = Depends(get_admin_access_info),
9191
) -> CollectorStartInfo:
9292
"""
9393
Start the muckrock collector
@@ -102,7 +102,7 @@ async def start_muckrock_collector(
102102
async def start_muckrock_county_collector(
103103
dto: MuckrockCountySearchCollectorInputDTO,
104104
core: AsyncCore = Depends(get_async_core),
105-
access_info: AccessInfo = Depends(get_access_info),
105+
access_info: AccessInfo = Depends(get_admin_access_info),
106106
) -> CollectorStartInfo:
107107
"""
108108
Start the muckrock county level collector
@@ -117,7 +117,7 @@ async def start_muckrock_county_collector(
117117
async def start_muckrock_all_foia_collector(
118118
dto: MuckrockAllFOIARequestsCollectorInputDTO,
119119
core: AsyncCore = Depends(get_async_core),
120-
access_info: AccessInfo = Depends(get_access_info),
120+
access_info: AccessInfo = Depends(get_admin_access_info),
121121
) -> CollectorStartInfo:
122122
"""
123123
Start the muckrock collector for all FOIA requests
@@ -132,7 +132,7 @@ async def start_muckrock_all_foia_collector(
132132
async def upload_manual_collector(
133133
dto: ManualBatchInputDTO,
134134
core: AsyncCore = Depends(get_async_core),
135-
access_info: AccessInfo = Depends(get_access_info),
135+
access_info: AccessInfo = Depends(get_admin_access_info),
136136
) -> ManualBatchResponseDTO:
137137
"""
138138
Uploads a manual "collector" with existing data

src/api/endpoints/data_source/routes.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from src.api.endpoints.data_source.by_id.put.request import DataSourcePutRequest
1414
from src.api.shared.models.message_response import MessageResponse
1515
from src.core.core import AsyncCore
16+
from src.security.dtos.access_info import AccessInfo
17+
from src.security.manager import get_admin_access_info
1618

1719
data_sources_router = APIRouter(
1820
prefix="/data-sources",
@@ -45,6 +47,7 @@ async def get_data_source_by_id(
4547
async def update_data_source(
4648
url_id: int ,
4749
request: DataSourcePutRequest,
50+
access_info: AccessInfo = Depends(get_admin_access_info),
4851
async_core: AsyncCore = Depends(get_async_core),
4952
) -> MessageResponse:
5053
await check_is_data_source_url(url_id=url_id, adb_client=async_core.adb_client)
@@ -70,6 +73,7 @@ async def get_data_source_agencies(
7073
async def add_agency_to_data_source(
7174
url_id: int,
7275
agency_id: int,
76+
access_info: AccessInfo = Depends(get_admin_access_info),
7377
async_core: AsyncCore = Depends(get_async_core),
7478
) -> MessageResponse:
7579
await add_data_source_agency_link(
@@ -83,6 +87,7 @@ async def add_agency_to_data_source(
8387
async def remove_agency_from_data_source(
8488
url_id: int,
8589
agency_id: int,
90+
access_info: AccessInfo = Depends(get_admin_access_info),
8691
async_core: AsyncCore = Depends(get_async_core),
8792
) -> MessageResponse:
8893
await delete_data_source_agency_link(

src/api/endpoints/locations/routes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from src.api.endpoints.locations.post.request import AddLocationRequestModel
66
from src.api.endpoints.locations.post.response import AddLocationResponseModel
77
from src.core.core import AsyncCore
8+
from src.security.dtos.access_info import AccessInfo
9+
from src.security.manager import get_admin_access_info
810

911
location_url_router = APIRouter(
1012
prefix="/locations",
@@ -15,6 +17,7 @@
1517
@location_url_router.post("")
1618
async def create_location(
1719
request: AddLocationRequestModel,
20+
access_info: AccessInfo = Depends(get_admin_access_info),
1821
async_core: AsyncCore = Depends(get_async_core),
1922
) -> AddLocationResponseModel:
2023
return await async_core.adb_client.run_query_builder(

src/api/endpoints/meta_url/routes.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from src.api.endpoints.meta_url.by_id.put.request import UpdateMetaURLRequest
1313
from src.api.shared.models.message_response import MessageResponse
1414
from src.core.core import AsyncCore
15+
from src.security.dtos.access_info import AccessInfo
16+
from src.security.manager import get_admin_access_info
1517

1618
meta_urls_router = APIRouter(
1719
prefix="/meta-urls",
@@ -35,6 +37,7 @@ async def get_meta_urls(
3537
async def update_meta_url(
3638
url_id: int,
3739
request: UpdateMetaURLRequest,
40+
access_info: AccessInfo = Depends(get_admin_access_info),
3841
async_core: AsyncCore = Depends(get_async_core),
3942
) -> MessageResponse:
4043
await check_is_meta_url(url_id=url_id, adb_client=async_core.adb_client)
@@ -61,6 +64,7 @@ async def get_meta_url_agencies(
6164
async def add_agency_to_meta_url(
6265
url_id: int,
6366
agency_id: int,
67+
access_info: AccessInfo = Depends(get_admin_access_info),
6468
async_core: AsyncCore = Depends(get_async_core),
6569
) -> MessageResponse:
6670
await add_meta_url_agency_link(
@@ -74,6 +78,7 @@ async def add_agency_to_meta_url(
7478
async def remove_agency_from_meta_url(
7579
url_id: int,
7680
agency_id: int,
81+
access_info: AccessInfo = Depends(get_admin_access_info),
7782
async_core: AsyncCore = Depends(get_async_core),
7883
) -> MessageResponse:
7984
await delete_meta_url_agency_link(

src/api/endpoints/metrics/routes.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from src.api.endpoints.metrics.dtos.get.urls.breakdown.pending import GetMetricsURLsBreakdownPendingResponseDTO
1111
from src.api.endpoints.metrics.dtos.get.urls.breakdown.submitted import GetMetricsURLsBreakdownSubmittedResponseDTO
1212
from src.core.core import AsyncCore
13-
from src.security.manager import get_access_info
13+
from src.security.manager import get_admin_access_info
1414
from src.security.dtos.access_info import AccessInfo
1515

1616
metrics_router = APIRouter(
@@ -22,14 +22,14 @@
2222
@metrics_router.get("/batches/aggregated")
2323
async def get_batches_aggregated_metrics(
2424
core: AsyncCore = Depends(get_async_core),
25-
access_info: AccessInfo = Depends(get_access_info)
25+
access_info: AccessInfo = Depends(get_admin_access_info)
2626
) -> GetMetricsBatchesAggregatedResponseDTO:
2727
return await core.get_batches_aggregated_metrics()
2828

2929
@metrics_router.get("/batches/breakdown")
3030
async def get_batches_breakdown_metrics(
3131
core: AsyncCore = Depends(get_async_core),
32-
access_info: AccessInfo = Depends(get_access_info),
32+
access_info: AccessInfo = Depends(get_admin_access_info),
3333
page: int = Query(
3434
description="The page number",
3535
default=1
@@ -40,34 +40,34 @@ async def get_batches_breakdown_metrics(
4040
@metrics_router.get("/urls/aggregate")
4141
async def get_urls_aggregated_metrics(
4242
core: AsyncCore = Depends(get_async_core),
43-
access_info: AccessInfo = Depends(get_access_info)
43+
access_info: AccessInfo = Depends(get_admin_access_info)
4444
) -> GetMetricsURLsAggregatedResponseDTO:
4545
return await core.get_urls_aggregated_metrics()
4646

4747
@metrics_router.get("/urls/aggregate/pending")
4848
async def get_urls_aggregated_pending_metrics(
4949
core: AsyncCore = Depends(get_async_core),
50-
access_info: AccessInfo = Depends(get_access_info)
50+
access_info: AccessInfo = Depends(get_admin_access_info)
5151
) -> GetMetricsURLsAggregatedPendingResponseDTO:
5252
return await core.get_urls_aggregated_pending_metrics()
5353

5454
@metrics_router.get("/urls/breakdown/submitted")
5555
async def get_urls_breakdown_submitted_metrics(
5656
core: AsyncCore = Depends(get_async_core),
57-
access_info: AccessInfo = Depends(get_access_info)
57+
access_info: AccessInfo = Depends(get_admin_access_info)
5858
) -> GetMetricsURLsBreakdownSubmittedResponseDTO:
5959
return await core.get_urls_breakdown_submitted_metrics()
6060

6161
@metrics_router.get("/urls/breakdown/pending")
6262
async def get_urls_breakdown_pending_metrics(
6363
core: AsyncCore = Depends(get_async_core),
64-
access_info: AccessInfo = Depends(get_access_info)
64+
access_info: AccessInfo = Depends(get_admin_access_info)
6565
) -> GetMetricsURLsBreakdownPendingResponseDTO:
6666
return await core.get_urls_breakdown_pending_metrics()
6767

6868
@metrics_router.get("/backlog")
6969
async def get_backlog_metrics(
7070
core: AsyncCore = Depends(get_async_core),
71-
access_info: AccessInfo = Depends(get_access_info)
71+
access_info: AccessInfo = Depends(get_admin_access_info)
7272
) -> GetMetricsBacklogResponseDTO:
7373
return await core.get_backlog_metrics()

src/api/endpoints/proposals/routes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
from src.api.shared.models.message_response import MessageResponse
1919
from src.core.core import AsyncCore
2020
from src.security.dtos.access_info import AccessInfo
21-
from src.security.manager import get_access_info
21+
from src.security.manager import get_admin_access_info
2222

2323
proposal_router = APIRouter(prefix="/proposal", tags=["Pending"])
2424

2525
@proposal_router.get("/agencies")
2626
async def get_pending_agencies(
2727
async_core: AsyncCore = Depends(get_async_core),
28-
access_info: AccessInfo = Depends(get_access_info),
28+
access_info: AccessInfo = Depends(get_admin_access_info),
2929
) -> ProposalAgencyGetOuterResponse:
3030
return await async_core.adb_client.run_query_builder(
3131
ProposalAgencyGetQueryBuilder(),
@@ -37,7 +37,7 @@ async def approve_proposed_agency(
3737
proposed_agency_id: int = Path(
3838
description="Proposed agency ID to approve"
3939
),
40-
access_info: AccessInfo = Depends(get_access_info),
40+
access_info: AccessInfo = Depends(get_admin_access_info),
4141
) -> ProposalAgencyApproveResponse:
4242
return await async_core.adb_client.run_query_builder(
4343
ProposalAgencyApproveQueryBuilder(
@@ -53,7 +53,7 @@ async def reject_proposed_agency(
5353
proposed_agency_id: int = Path(
5454
description="Proposed agency ID to reject"
5555
),
56-
access_info: AccessInfo = Depends(get_access_info),
56+
access_info: AccessInfo = Depends(get_admin_access_info),
5757
) -> ProposalAgencyRejectResponse:
5858
return await async_core.adb_client.run_query_builder(
5959
ProposalAgencyRejectQueryBuilder(

0 commit comments

Comments
 (0)