#!c:\Program Files\Python39\python.exe # -*- coding: UTF-8 -*- ''' $RCSfile: grouping.py,v $ $Revision$ $Author: markus $ $Date$ The BioCASE querytool ''' import os # ***** include the biocase.lib directory in the python sys path for importing ***** exec(open(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir, 'lib', 'biocase', 'adjustpath.py'))).read()) # exec(compile(open( os.path.abspath( os.path.join( os.path.dirname( __file__ ), os.pardir, os.pardir, 'lib', 'biocase', 'appinit.py' ) ), "rb").read(), os.path.abspath( os.path.join( os.path.dirname( __file__ ), os.pardir, os.pardir, 'lib', 'biocase', 'appinit.py' ) ), 'exec')) # import pydevd; pydevd.settrace(); from biocase.tools.templating import PageMacro from biocase.tools.htmltools import getDropDownOptionHtml, escapeHtml from biocase.querytool.general import dsa, skinDir, wrapper_url, schemaObj, schema, printOverHTTP, createFilter, form, logDiagnostics from biocase.querytool.querydispatcher import QueryDispatcher, WrapperError from biocase.querytool.querygenerator import QueryGenerator import logging log = logging.getLogger("querytool.grouping") tmpl = PageMacro('Content', PageMacro.DELMODE) tmpl.load('Content', os.path.join(skinDir, 'grouping.html')) # build a new filter object from form values filterObj = createFilter(form, schemaObj) log.info("FILTER OBJ: %s" % filterObj) # generate the protocol QG = QueryGenerator() groupConcept = form['groupby'].value protocolXML = QG.getScanProtocol(concept=schemaObj.getConcept(groupConcept).path, NS=schemaObj.NS, filterObj=filterObj) log.info("QUERY PROTOCOL CREATED:\n%s" % escapeHtml(protocolXML)) # update template tmpl['dsa'] = dsa tmpl['schema'] = schema tmpl['limit'] = str(schemaObj.limit) if filterObj is not None: tmpl['filter'] = str(filterObj) tmpl['filter_display'] = escapeHtml(str(filterObj).replace('_', ' ')) tmpl['groupingCon'] = groupConcept tmpl['groupby_options'] = getDropDownOptionHtml(vals=['---None---'] + [c.label for c in schemaObj.concepts], default='---None---') if wrapper_url is not None: tmpl['wrapper_url'] = wrapper_url # query the wrapper QD = QueryDispatcher() try: recStatus = QD.sendQuery(wrapper_url, protocolXML) # wrapper results: valuelist = QD.getScanValues() logDiagnostics(QD.getDiagnostics()) # wrapper results: tmpl['hits'] = str(recStatus.count) valueTemplateList = [{'val': v} for v in valuelist] tmpl.expand('Content', 'grouplist', valueTemplateList) except WrapperError as e: tmpl = PageMacro('Content', PageMacro.DELMODE) tmpl.load('Content', os.path.join(os.path.dirname(__file__), '_error.html')) tmpl['dsa'] = dsa tmpl['ErrorMessage'] = e.msg # print HTML ! printOverHTTP(tmpl)