Mercurial > hg > ChinaGisRestApi
comparison RestDbInterface.py @ 33:355b1fa2d78f
added meta permissions check
| author | casties |
|---|---|
| date | Tue, 31 Aug 2010 14:20:24 +0200 |
| parents | c732c2ff61d9 |
| children | c237699c4752 |
comparison
equal
deleted
inserted
replaced
| 32:c732c2ff61d9 | 33:355b1fa2d78f |
|---|---|
| 161 cur.close() | 161 cur.close() |
| 162 return {"fields":fields, "rows":data} | 162 return {"fields":fields, "rows":data} |
| 163 else: | 163 else: |
| 164 cur.close() | 164 cur.close() |
| 165 return None | 165 return None |
| 166 | |
| 167 def checkTableMetaPermission(self,action,schema,table,user=None): | |
| 168 """returns if the requested action on the table is allowed""" | |
| 169 logging.debug("checktablemetapermissions action=%s schema=%s table=%s user=%s"%(action,schema,table,user)) | |
| 170 if user is None: | |
| 171 user = self.REQUEST.get('AUTHENTICATED_USER',None) | |
| 172 logging.debug("user=%s"%user) | |
| 173 # TODO: what now? | |
| 174 return True | |
| 166 | 175 |
| 167 def setTableMetaTypes(self,schema,table,fields): | 176 def setTableMetaTypes(self,schema,table,fields): |
| 168 """sets the GIS meta information for table""" | 177 """sets the GIS meta information for table""" |
| 169 logging.debug("settablemetatypes schema=%s, table=%s, fields=%s"%(schema,table,fields)) | 178 logging.debug("settablemetatypes schema=%s, table=%s, fields=%s"%(schema,table,fields)) |
| 170 # TODO: what now? | 179 # TODO: what now? |
| 421 type = 'text' | 430 type = 'text' |
| 422 sqltype = 'text' | 431 sqltype = 'text' |
| 423 | 432 |
| 424 sqlFields.append({'name':name, 'type':type, 'sqltype':sqltype}) | 433 sqlFields.append({'name':name, 'type':type, 'sqltype':sqltype}) |
| 425 | 434 |
| 426 self.executeSQL('drop table if exists "%s"."%s"'%(schema,table),hasResult=False) | 435 if self.checkTableMetaPermission("create", schema, table): |
| 427 fieldString = ", ".join(['"%s" %s'%(f['name'],f['sqltype']) for f in sqlFields]) | 436 self.executeSQL('drop table if exists "%s"."%s"'%(schema,table),hasResult=False) |
| 428 sqlString = 'create table "%s"."%s" (%s)'%(schema,table,fieldString) | 437 fieldString = ", ".join(['"%s" %s'%(f['name'],f['sqltype']) for f in sqlFields]) |
| 429 logging.debug("createemptytable: SQL=%s"%sqlString) | 438 sqlString = 'create table "%s"."%s" (%s)'%(schema,table,fieldString) |
| 430 self.executeSQL(sqlString,hasResult=False) | 439 logging.debug("createemptytable: SQL=%s"%sqlString) |
| 431 self.setTableMetaTypes(schema,table,sqlFields) | 440 self.executeSQL(sqlString,hasResult=False) |
| 432 return sqlFields | 441 self.setTableMetaTypes(schema,table,sqlFields) |
| 442 return sqlFields | |
| 443 else: | |
| 444 logging.warning("create table not allowed!") | |
| 445 # throw exception? | |
| 446 return None | |
| 433 | 447 |
| 434 def createTableFromXML(self,schema,table,data, fields=None): | 448 def createTableFromXML(self,schema,table,data, fields=None): |
| 435 """create or replace a table with the given XML data""" | 449 """create or replace a table with the given XML data""" |
| 436 logging.debug("createTableFromXML schema=%s table=%s data=%s fields=%s"%(schema,table,data,fields)) | 450 logging.debug("createTableFromXML schema=%s table=%s data=%s fields=%s"%(schema,table,data,fields)) |
| 437 tablename = sqlName(table) | 451 tablename = sqlName(table) |
