3333 BacklogSnapshot , URLDataSource , URLCheckedForDuplicate , URLProbedFor404
3434from collector_manager .enums import URLStatus , CollectorType
3535from core .DTOs .AllAnnotationPostInfo import AllAnnotationPostInfo
36- from core .DTOs .FinalReviewApprovalInfo import FinalReviewApprovalInfo
36+ from core .DTOs .FinalReviewApprovalInfo import FinalReviewApprovalInfo , RejectionReason
3737from core .DTOs .GetMetricsBacklogResponse import GetMetricsBacklogResponseDTO , GetMetricsBacklogResponseInnerDTO
3838from core .DTOs .GetMetricsBatchesAggregatedResponseDTO import GetMetricsBatchesAggregatedResponseDTO , \
3939 GetMetricsBatchesAggregatedInnerResponseDTO
6565from core .DTOs .task_data_objects .URLDuplicateTDO import URLDuplicateTDO
6666from core .DTOs .task_data_objects .URLMiscellaneousMetadataTDO import URLMiscellaneousMetadataTDO , URLHTMLMetadataInfo
6767from core .EnvVarManager import EnvVarManager
68- from core .enums import BatchStatus , SuggestionType , RecordType
68+ from core .enums import BatchStatus , SuggestionType , RecordType , SuggestedStatus
6969from html_tag_collector .DataClassTags import convert_to_response_html_info
7070
7171# Type Hints
@@ -170,7 +170,7 @@ async def get_next_url_for_user_annotation(
170170 select (UserRelevantSuggestion )
171171 .where (
172172 UserRelevantSuggestion .url_id == URL .id ,
173- UserRelevantSuggestion .relevant == False
173+ UserRelevantSuggestion .suggested_status != SuggestedStatus . RELEVANT . value
174174 )
175175 )
176176 )
@@ -194,7 +194,7 @@ async def add_user_relevant_suggestion(
194194 session : AsyncSession ,
195195 url_id : int ,
196196 user_id : int ,
197- relevant : bool
197+ suggested_status : SuggestedStatus
198198 ):
199199 prior_suggestion = await self .get_user_suggestion (
200200 session ,
@@ -203,13 +203,13 @@ async def add_user_relevant_suggestion(
203203 url_id = url_id
204204 )
205205 if prior_suggestion is not None :
206- prior_suggestion .relevant = relevant
206+ prior_suggestion .suggested_status = suggested_status . value
207207 return
208208
209209 suggestion = UserRelevantSuggestion (
210210 url_id = url_id ,
211211 user_id = user_id ,
212- relevant = relevant
212+ suggested_status = suggested_status . value
213213 )
214214 session .add (suggestion )
215215
@@ -881,7 +881,7 @@ async def get_next_url_agency_for_annotation(
881881 where (
882882 (UserRelevantSuggestion .user_id == user_id ) &
883883 (UserRelevantSuggestion .url_id == URL .id ) &
884- (UserRelevantSuggestion .relevant == False )
884+ (UserRelevantSuggestion .suggested_status != SuggestedStatus . RELEVANT . value )
885885 ).correlate (URL )
886886 )
887887 )
@@ -1288,7 +1288,8 @@ async def reject_url(
12881288 self ,
12891289 session : AsyncSession ,
12901290 url_id : int ,
1291- user_id : int
1291+ user_id : int ,
1292+ rejection_reason : RejectionReason
12921293 ) -> None :
12931294
12941295 query = (
@@ -1299,7 +1300,18 @@ async def reject_url(
12991300 url = await session .execute (query )
13001301 url = url .scalars ().first ()
13011302
1302- url .outcome = URLStatus .REJECTED .value
1303+ match rejection_reason :
1304+ case RejectionReason .INDIVIDUAL_RECORD :
1305+ url .outcome = URLStatus .INDIVIDUAL_RECORD .value
1306+ case RejectionReason .BROKEN_PAGE_404 :
1307+ url .outcome = URLStatus .NOT_FOUND .value
1308+ case RejectionReason .NOT_RELEVANT :
1309+ url .outcome = URLStatus .NOT_RELEVANT .value
1310+ case _:
1311+ raise HTTPException (
1312+ status_code = status .HTTP_400_BAD_REQUEST ,
1313+ detail = "Invalid rejection reason"
1314+ )
13031315
13041316 # Add rejecting user
13051317 rejecting_user_url = ReviewingUserURL (
@@ -1741,12 +1753,12 @@ async def add_all_annotations_to_url(
17411753 relevant_suggestion = UserRelevantSuggestion (
17421754 url_id = url_id ,
17431755 user_id = user_id ,
1744- relevant = post_info .is_relevant
1756+ suggested_status = post_info .suggested_status . value
17451757 )
17461758 session .add (relevant_suggestion )
17471759
17481760 # If not relevant, do nothing else
1749- if not post_info .is_relevant :
1761+ if not post_info .suggested_status == SuggestedStatus . RELEVANT :
17501762 return
17511763
17521764 record_type_suggestion = UserRecordTypeSuggestion (
@@ -1872,7 +1884,7 @@ def url_column(status: URLStatus, label):
18721884 url_column (URLStatus .ERROR , label = "error_count" ),
18731885 url_column (URLStatus .VALIDATED , label = "validated_count" ),
18741886 url_column (URLStatus .SUBMITTED , label = "submitted_count" ),
1875- url_column (URLStatus .REJECTED , label = "rejected_count" ),
1887+ url_column (URLStatus .NOT_RELEVANT , label = "rejected_count" ),
18761888
18771889 ).outerjoin (
18781890 Batch , Batch .id == URL .batch_id
@@ -1957,7 +1969,7 @@ def url_column(status: URLStatus, label):
19571969 sc .count_distinct (URL .id , label = "count_total" ),
19581970 url_column (URLStatus .PENDING , label = "count_pending" ),
19591971 url_column (URLStatus .SUBMITTED , label = "count_submitted" ),
1960- url_column (URLStatus .REJECTED , label = "count_rejected" ),
1972+ url_column (URLStatus .NOT_RELEVANT , label = "count_rejected" ),
19611973 url_column (URLStatus .ERROR , label = "count_error" ),
19621974 url_column (URLStatus .VALIDATED , label = "count_validated" ),
19631975 ).group_by (
@@ -2075,7 +2087,7 @@ def case_column(status: URLStatus, label):
20752087 case_column (URLStatus .PENDING , label = "count_pending" ),
20762088 case_column (URLStatus .SUBMITTED , label = "count_submitted" ),
20772089 case_column (URLStatus .VALIDATED , label = "count_validated" ),
2078- case_column (URLStatus .REJECTED , label = "count_rejected" ),
2090+ case_column (URLStatus .NOT_RELEVANT , label = "count_rejected" ),
20792091 case_column (URLStatus .ERROR , label = "count_error" ),
20802092 )
20812093 raw_results = await session .execute (count_query )
0 commit comments