def hisGet(object_name, action, datetime_from=None, datetime_to=None, format_lastdate=None): u"""Получить историю действий по объекту и действию за период: Принимает: object_name - имя объекта (таблицы или виртуального объекта) action - код действия: 'i' - insert, 'u' - update, 'd' - delete, None - без фильтра datetime_from - дата/время начала запрашиваемого периода (None - бесконечное прошлое) в cтроковом формате '%d.%m.%Y %H:%M:%S' или '%Y-%m-%d %H:%M:%S' или в mxDateTime datetime_to - дата/время конца запрашиваемого периода (None - бесконечное будущее) format_lastdate - формат поля LASTDATE (None - поле не форматируется в строку, а возвращается типа mxDateTime) Возвращает: Cписок записей в истории, отсортированный по LASTDATE, содержащий словари вида: {'ID_HISTORY': ID_HISTORY, 'ACTION_OUT': ACTION_OUT, 'DATA': DATA, 'LASTDATE': LASTDATE}, где ID_HISTORY - ID записи таблицы истории, ACTION_OUT - код действия: 'i' - insert, 'u' - update, 'd' - delete. Если action не None, то совпадает с ним. DATA - строка в json-формате '{"olds": {"FIELD1": val1, "FIELD2": val2, ...}, "news": {"FIELD1": val1, "FIELD2": val2, ...}}', где "olds" - старые значения полей (применимо для a in ('d','u')), "news" - новые значения полей (применимо для a in ('i','u')) LASTDATE - дата/время записи в истории """ res = db.dbExec(sql='select * from HIS_GET(?,?,?,?)', params=[object_name, action, datetime_from, datetime_to], fetch='all', id_system=-1) if format_lastdate: return pu.kbToPy(res, formats={'LASTDATE': format_lastdate}) else: return pu.kbToPy(res)
def hisInsert(object_name, action, data=None): u"""Сохранить данные в истории действий по объекту и действию. Принимает: object_name - имя объекта (таблицы или виртуального объекта) action - код действия: 'i' - insert, 'u' - update, 'd' - delete data - сохраняемый сериализуемый объект. Для возможности однотипной обработки рекомендуется придерживаться формата словаря: {"olds": {"FIELD1": val1, "FIELD2": val2, ...}, "news": {"FIELD1": val1, "FIELD2": val2, ...}}, где словарик "olds" - старые значения полей (применимо для a in ('d','u')), "news" - новые значения полей (применимо для a in ('i','u')) Возвращает словарь вида: {'ID_HISTORY': ID_HISTORY, 'LASTDATE': LASTDATE}, где ID_HISTORY - ID записи в таблице истории, LASTDATE - дата/время добавленной записи """ res = db.dbExec(sql='execute procedure HIS_INSERT(?,?,?)', params=[ object_name, action, pu.decodeUStr(json.dumps(data, encoding="cp1251")) ], fetch='none', id_system=-1) return pu.kbToPy(res)
def getupdatenews(self, dbeg, dend): res = pu.kbToPy( db.dbExec(sql="select ud.id_update, ud.upload_stamp, eu.fio \ from upd_updates ud \ left join engine_users eu on ud.devel_id=eu.id_user \ where ud.upload_stamp >= ? and ud.upload_stamp < (? + 1)", params=(dbeg, dend), fetch='all', id_system=-1)) t = db.Trans(id_system=-1) for item in res: systems = pu.kbToPy( t.dbExec( sql= "select wn.id_system, es.show_name, wn.description, wn.redmine_url from \ upd_whatsnew wn \ left join engine_systems es on wn.id_system=es.id_system \ where wn.id_update=?", params=(item['ID_UPDATE'], ), fetch='all')) item['sysinfo'] = systems t.commit() return self.pyDumps(res, formats={'UPLOAD_STAMP': '%d.%m.%Y %H:%M:%S'})
def getTaskInfo(self,taskid): try: ext_data = self.listCaptions(taskid) data = self.dbExec(sql="select * from K_WH_TMVIEW_TASKINFO(?)",params=[taskid],fetch='one') except FBExc, exc: return self.pyDumps(data = {'errMes':exc[1]}) return self.pyDumps(data=data,ext_data=py_utils.kbToPy(ext_data))
def getTaskWares(self,taskid): try: ext_data = self.listCaptions(taskid) data = self.dbExec(sql="SELECT * from K_DOCMANAG_LISTTASKWARES(?)",params=[taskid],fetch='all') except FBExc, exc: return self.pyDumps(data = {'errMes':exc[1]}) return self.pyDumps(data=data,ext_data=py_utils.kbToPy(ext_data))
return self.pyDumps(data=data, ext_data={ 'bdate': bdate, 'edate': edate, 'objid': objid }) getBadSelect.exposed = True def getObjects(self): return self.pyDumps( data=self.listZoneObjects(self.getIfaceVar('manid')), ext_data={'curzone': self.employeeObj(self.getIfaceVar('manid'))}) getObjects.exposed = True def getDocs(self, bdate, edate, objid, wid): try: data = self.dbExec( sql="select * from K_WH_BADSELECT_DOCS(?,?,?,?)", params=[bdate, edate, objid, wid], fetch='all') ext_data = self.dbExec(sql="select * from k_wh_viewq(?)", params=[wid], fetch="one") except Exception, exc: return self.pyDumps({'errMes': exc[1]}) return self.pyDumps(data=data, ext_data=py_utils.kbToPy(ext_data)) getDocs.exposed = True