Coverage for application/image_review/vars/routes.py: 27%
22 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-23 02:22 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-23 02:22 +0000
1"""
2VARS-specific image review endpoint.
4/image-review/vars [GET]
5"""
7import requests
8from flask import current_app, request, render_template, session
10from . import vars_image_review_bp
11from application.image_review.vars.vars_annotation_processor import VarsAnnotationProcessor
14# view VARS annotations with images in a specified dive (or dives)
15@vars_image_review_bp.get('')
16def view_images():
17 comments = {}
18 sequences = request.args.getlist('sequence')
19 # get comments from external review db
20 try:
21 for sequence in sequences:
22 with requests.get(
23 url=f'{current_app.config.get("DARC_REVIEW_URL")}/comment/sequence/{sequence}',
24 headers=current_app.config.get('DARC_REVIEW_HEADERS'),
25 ) as res:
26 comments = comments | res.json() # merge dicts
27 if sequence not in session.get('vars_video_sequences', []):
28 return render_template('errors/404.html', err='dive'), 404
29 except requests.exceptions.ConnectionError:
30 print('\nERROR: unable to connect to external review server\n')
31 # get images in sequence
32 image_loader = VarsAnnotationProcessor(
33 sequence_names=sequences,
34 vars_dive_url=current_app.config.get('VARS_DIVE_QUERY_URL'),
35 vars_phylogeny_url=current_app.config.get('VARS_PHYLOGENY_URL'),
36 )
37 image_loader.process_sequences()
38 if len(image_loader.final_records) < 1:
39 return render_template('errors/404.html', err='pics'), 404
40 data = {
41 'annotations': image_loader.final_records,
42 'highest_id_ref': image_loader.highest_id_ref,
43 'title': image_loader.vessel_name,
44 'tab_title': sequences[0] if len(sequences) == 1 else f'{sequences[0]} - {sequences[-1].split(" ")[-1]}',
45 'concepts': session.get('vars_concepts', []),
46 'reviewers': session.get('reviewers', []),
47 'comments': comments,
48 }
49 return render_template('image_review/image-review.html', data=data)