Browse Source

management of Key field creation

Andrej 2 years ago
parent
commit
30653a77e7
1 changed files with 14 additions and 8 deletions
  1. 14 8
      labkeyDatabaseBrowser.py

+ 14 - 8
labkeyDatabaseBrowser.py

@@ -36,24 +36,30 @@ class labkeyDB:
 
    def addQuery(self,project,schemaName,queryName,fields,options={}):
       listDomainDefinition={}
+      fNames=[f['name'] for f in fields]
       if schemaName=='lists':
          listDomainDefinition['kind']='IntList'
-         fields.insert(0,{'name':'Key','rangeURI':'int'})
-         options={}
-         options['keyName']='Key'
-         if queryName.find('enum')==0:
-            options['keyType']='Integer'
-         else:
-            options['keyType']='AutoIncrementInteger'
+         #check if options were set
+         try:
+            x=options['keyName']
+         except KeyError:
+            if 'Key' not in fNames:
+               fields.insert(0,{'name':'Key','rangeURI':'int'})
+            options['keyName']='Key'
+            if queryName.find('enum')==0:
+               options['keyType']='Integer'
+            else:
+               options['keyType']='AutoIncrementInteger'
          listDomainDefinition['options']=options
+      
       if schemaName=='study':
          listDomainDefinition['kind']='StudyDatasetVisit'
+      
       domainDesign={}
       domainDesign['name']=queryName
       domainDesign['description']='Some description'
       domainDesign['fields']=fields
       listDomainDefinition['domainDesign']=domainDesign
-      listDomainDefinition['options']=options
       url=self.net.GetLabkeyUrl()+'/'+project
       url+='/property-createDomain.api'
       response=self.net.post(url,json.dumps(listDomainDefinition))