diff --git a/labelstower/getter.py b/labelstower/getter.py index f6f411c064e8b64d2d3bd3b5df69489bfe4c4348..e42da473139a4598885685366e2220d29ae1f759 100644 --- a/labelstower/getter.py +++ b/labelstower/getter.py @@ -1,7 +1,15 @@ +import os + from typing import Dict, List + from .request_db import send_query_to_db from . import bp +if(os.environ["UserOption"]=="true"): + from .sqlStmtOptUser import queries, FORBIDEN_LABEL_ONLY, ALL_LABEL_TYPE +else: + from .sqlStmt import queries, FORBIDEN_LABEL_ONLY, ALL_LABEL_TYPE + def get_selected_elements(id_mandatory_labels: int, id_forbiden_labels: str, number_of_mandatory_labels: str) -> List[Dict[int, str]] : """ @@ -24,53 +32,9 @@ def get_selected_elements(id_mandatory_labels: int, id_forbiden_labels: str, num """ #query slightly vary if number_of_mandatory_labels > 0 or not if(number_of_mandatory_labels): - query = ''' - SELECT - ELEMENT.* - FROM - ELEMENT - INNER JOIN - ELEMENT_LABEL - ON ELEMENT.id=ELEMENT_LABEL.id_element - WHERE - id_label IN ({}) - AND - id_element NOT IN ( - SELECT - id_element - FROM - ELEMENT - INNER JOIN - ELEMENT_LABEL - ON ELEMENT.id=ELEMENT_LABEL.id_element - WHERE - id_label IN ({})) - GROUP BY id_element - HAVING COUNT(*) = {} - Order BY element_name - '''.format(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels) + query = queries[ALL_LABEL_TYPE].format(id_mandatory_labels, id_forbiden_labels, number_of_mandatory_labels) else: - query = ''' - SELECT - ELEMENT.* - FROM - ELEMENT - INNER JOIN - ELEMENT_LABEL - ON ELEMENT.id = ELEMENT_LABEL.id_element - WHERE - id_element NOT IN ( - SELECT - id_element - FROM - ELEMENT - INNER JOIN - ELEMENT_LABEL - ON ELEMENT.id = ELEMENT_LABEL.id_element - WHERE id_label IN ({}) ) - GROUP BY ELEMENT.id - ORDER BY element_name ASC - '''.format(id_forbiden_labels) + query = queries[FORBIDEN_LABEL_ONLY].format(id_forbiden_labels) selected_elements = send_query_to_db(query) return selected_elements