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

1""" 

2VARS-specific image review endpoint. 

3 

4/image-review/vars [GET] 

5""" 

6 

7import requests 

8from flask import current_app, request, render_template, session 

9 

10from . import vars_image_review_bp 

11from application.image_review.vars.vars_annotation_processor import VarsAnnotationProcessor 

12 

13 

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)