def validate(self): try: self.lang = lower(self.request['LANG']) except: self.errormsg = 'Cannot find LANG in request.\n' else: if self.lang not in ('vss1','vss2'): self.errormsg += 'Only LANG=VSS1 or LANG=VSS2 is supported.\n' try: self.query = self.request['QUERY'] except: self.errormsg += 'Cannot find QUERY in request.\n' try: self.format=lower(self.request['FORMAT']) except: self.errormsg += 'Cannot find FORMAT in request.\n' try: self.parsedSQL=SQL.parseString(self.query,parseAll=True) except: # if this fails, we're done self.errormsg += 'Could not parse the SQL query string: %s\n'%self.query self.isvalid=False return self.requestables = set() self.where = self.parsedSQL.where if self.parsedSQL.columns not in ('*', 'ALL'): for r in self.parsedSQL.columns: r = r.lower() if r not in REQUESTABLES: self.errormsg += 'Unknown Requestable: %s\n' % r else: self.requestables.add(r) if 'species' in self.requestables: self.requestables.add('atoms') self.requestables.add('molecules') self.requestables.add('particles') self.requestables.add('solids') if 'states' in self.requestables: self.requestables.add('atomstates') self.requestables.add('moleculestates') if 'atomstates' in self.requestables: self.requestables.add('atoms') if 'moleculestates' in self.requestables: self.requestables.add('molecules') if 'moleculequantumnumbers' in self.requestables: self.requestables.add('molecules') self.requestables.add('moleculestates') if 'moleculebasisstates' in self.requestables: self.requestables.add('molecules') self.requestables.add('moleculestates') if 'processes' in self.requestables: self.requestables.add('radiativetransitions') self.requestables.add('nonradiativetransitions') self.requestables.add('collisions') # Always return sources, methods, functions for now. self.requestables.add('sources') self.requestables.add('functions') self.requestables.add('methods') if self.errormsg: self.isvalid=False
def validate(self): try: self.lang = lower(self.request['LANG']) except: log.debug('LANG is empty, assuming VASS2') self.lang = 'vss2' else: if self.lang not in ('vss1', 'vss2'): self.errormsg += 'Only LANG=VSS1 or LANG=VSS2 is supported.\n' try: self.query = self.request['QUERY'] except: self.errormsg += 'Cannot find QUERY in request.\n' if (type(self.query) == list) and (len(self.query) == 1): self.query = self.query[0] try: self.format = lower(self.request['FORMAT']) except: log.debug('FORMAT is empty, assuming XSAMS') self.format = 'xsams' else: if self.format != 'xsams': log.debug( 'Requested FORMAT is not XSAMS, letting it pass anyway.') try: self.parsedSQL = SQL.parseString(self.query, parseAll=True) except: # if this fails, we're done self.errormsg += 'Could not parse the SQL query string: %s\n' % self.query self.isvalid = False return self.requestables = set() self.where = self.parsedSQL.where if self.parsedSQL.columns not in ('*', 'ALL'): for r in self.parsedSQL.columns: r = r.lower() if r not in REQUESTABLES: self.errormsg += 'Unknown Requestable: %s\n' % r else: self.requestables.add(r) if 'species' in self.requestables: self.requestables.add('atoms') self.requestables.add('molecules') self.requestables.add('particles') self.requestables.add('solids') if 'states' in self.requestables: self.requestables.add('atomstates') self.requestables.add('moleculestates') if 'atomstates' in self.requestables: self.requestables.add('atoms') if 'moleculestates' in self.requestables: self.requestables.add('molecules') if 'moleculequantumnumbers' in self.requestables: self.requestables.add('molecules') self.requestables.add('moleculestates') if 'moleculebasisstates' in self.requestables: self.requestables.add('molecules') self.requestables.add('moleculestates') if 'processes' in self.requestables: self.requestables.add('radiativetransitions') self.requestables.add('nonradiativetransitions') self.requestables.add('collisions') # Always return sources, methods, functions for now. self.requestables.add('sources') self.requestables.add('functions') self.requestables.add('methods') if self.errormsg: self.isvalid = False
def parseSQL(self): self.parsedSQL = SQL.parseString(self.query)