#!/usr/bin/python # -*- coding: UTF-8 -*- from flask import Blueprint, session, current_app import config from utils.decorator import login_required from utils.template import my_render_template afis_view = Blueprint( "afis", __name__, template_folder = "templates" ) @afis_view.route( "/admin/afis/list" ) def admin_list_folders(): return "ok" @afis_view.route( "/afis/list" ) @login_required def list_folders(): user_id = session.get( "user_id", None ) sql = """ SELECT cnm_assignment.folder_uuid, tmp.* FROM cnm_assignment LEFT JOIN cnm_folder ON cnm_assignment.folder_uuid = cnm_folder.folder_uuid LEFT JOIN ( SELECT DISTINCT ON ( donor_id, pc ) * FROM donor_segments_v ) AS tmp ON cnm_folder.donor_id = tmp.donor_id AND cnm_folder.pc = tmp.pc WHERE cnm_assignment.user_id = %s ORDER BY tmp.donor_id ASC, tmp.pc ASC """ folder_list = config.db.query_fetchall( sql, ( user_id, ) ) return my_render_template( "afis/folder_list.html", folder_list = folder_list ) @afis_view.route( "/afis/" ) def show_folder( uuid ): sql = """ SELECT cnm_assignment.folder_uuid, donor_segments_v.* FROM cnm_assignment LEFT JOIN cnm_folder ON cnm_assignment.folder_uuid = cnm_folder.folder_uuid LEFT JOIN donor_segments_v ON cnm_folder.donor_id = donor_segments_v.donor_id AND cnm_folder.pc = donor_segments_v.pc WHERE cnm_assignment.folder_uuid = %s ORDER BY donor_segments_v.donor_id ASC, donor_segments_v.pc ASC """ segments_list = config.db.query_fetchall( sql, ( uuid, ) ) return my_render_template( "afis/segment.html", segments_list = segments_list ) @afis_view.route( "/admin//target/list" ) def admin_show_target_list( uuid ): sql = """ SELECT DISTINCT ON ( pc ) donor_segments_v.* FROM donor_segments_v LEFT JOIN submissions ON submissions.donor_id = donor_segments_v.donor_id WHERE submissions.uuid = %s """ segments_list = config.db.query_fetchall( sql, ( uuid, ) ) finger_names = [] for laterality in [ "Right", "Left" ]: for finger in [ "thumb", "index", "middle", "ring", "little" ]: finger_names.append( "{} {}".format( laterality, finger ) ) return my_render_template( "admin/folder_list.html", segments_list = segments_list, finger_names = finger_names ) @afis_view.route( "/admin//target/" ) def admin_show_target( uuid, pc ): return "{}, {}". format( uuid, pc )