⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdfhelp.py

📁 在 linux平台上的网页编程的模板
💻 PY
字号:
#!/neo/opt/bin/python## Copyright (C) 2001 by Neotonic Software Corporation# All Rights Reserved.## hdfhelp.py## This code makes using odb with Clearsilver as "easy as stealing candy# from a baby". - jeske## How to use:##  rows = tbl.fetchAllRows()#  rows.hdfExport("CGI.rows", hdf_dataset)##  row  = tbl.fetchRow( ('primary_key', value) )#  row.hdfExport("CGI.row", hdf_dataset)## How to setup:#   #  # define table#  class AgentsTable(odb.Table):#    def _defineRows(self):#      self.d_addColumn("agent_id",kInteger,None,primarykey = 1,autoincrement = 1)#      self.d_addColumn("login",kVarString,200,notnull=1)#      self.d_addColumn("ticket_count",kIncInteger,None)##    # make sure you return a subclass of hdfhelp.HdfRow##    def defaultRowClass(self):#      return hdfhelp.HdfRow#    def defaultRowListClass(self):#      return hdfhelp.HdfItemList#import string, osimport neo_cgiimport neo_csimport neo_utilimport odbimport timeimport UserListSECS_IN_MIN = 60SECS_IN_HOUR = (SECS_IN_MIN * 60)SECS_IN_DAY = (SECS_IN_HOUR * 24)SECS_IN_WEEK = (SECS_IN_DAY * 7)SECS_IN_MONTH = (SECS_IN_DAY * 30)kYearPos = 0kMonthPos = 1kDayPos = 2kHourPos = 3kMinutePos = 4kSecondPos = 5kWeekdayPos = 6kJulianDayPos = 7kDSTPos = 8def renderDate(then_time,day=0):    if then_time is None:        then_time = 0    then_time = int(then_time)    if then_time == 0 or then_time == -1:        return ""        then_tuple = time.localtime(then_time)    now_tuple = time.localtime(time.time())        if day or (then_tuple[kHourPos]==0 and then_tuple[kMinutePos]==0 and then_tuple[kSecondPos]==0):        # it's just a date        if then_tuple[kYearPos] == now_tuple[kYearPos]:            # no year            return time.strftime("%m/%d",then_tuple)        else:            # add year            return time.strftime("%m/%d/%Y",then_tuple)    else:        # it's a full time/date        return time.strftime("%m/%d/%Y %I:%M%p",then_tuple)class HdfRow(odb.Row):    def hdfExport(self, prefix, hdf_dataset, *extra, **extranamed):        skip_fields = extranamed.get("skip_fields", None)        translate_dict = extranamed.get("translate_dict", None)        tz = extranamed.get("tz", "US/Pacific")        for col_name,value in self.items():            if skip_fields and (col_name in skip_fields):                continue            try:                name,col_type,col_options = self._table.getColumnDef(col_name)            except:                col_type = odb.kVarString                col_options = {}            	    if (value is not None):                if col_options.get("no_export",0): continue		if type(value) in [ type(0), type(0L) ]:		    hdf_dataset.setValue(prefix + "." + col_name,"%d" % value)                elif type(value) == type(1.0):                    if int(value) == value:                        hdf_dataset.setValue(prefix + "." + col_name,"%d" % value)                    else:                        hdf_dataset.setValue(prefix + "." + col_name,"%0.2f" % value)		else:                    if col_type == odb.kReal:                        log("why are we here with this value: %s" % value)                    if translate_dict:                        for k,v in translate_dict.items():                            value = string.replace(value,k,v)		    hdf_dataset.setValue(prefix + "." + col_name,neo_cgi.htmlEscape(str(value)))                if col_options.get("int_date",0):                    hdf_dataset.setValue(prefix + "." + col_name + ".string",renderDate(value))                    hdf_dataset.setValue(prefix + "." + col_name + ".day_string",renderDate(value,day=1))                    if value: neo_cgi.exportDate(hdf_dataset, "%s.%s" % (prefix, col_name), tz, value)		if col_options.has_key("enum_values"):		    enum = col_options["enum_values"]		    hdf_dataset.setValue(prefix + "." + col_name + ".enum",					 str(enum.get(value,'')))class HdfItemList(UserList.UserList):    def hdfExport(self,prefix,hdf_dataset,*extra,**extranamed):        export_by = extranamed.get("export_by", None)	n = 0	for row in self:            if export_by is not None:                n = row[export_by]	    row.hdfExport("%s.%d" % (prefix,n),hdf_dataset,*extra,**extranamed)	    n = n + 1def setList(hdf, prefix, lst):    hdf.setValue(prefix+".0", str(len(lst)))    for n in range(len(lst)):        hdf.setValue(prefix+".%d" %(n+1), lst[n]);def getList(hdf, name):    lst = []    for n in range(hdf.getIntValue(name,0)):        lst.append(hdf.getValue(name+".%d" %(n+1), ""))    return lstdef eval_cs(hdf,a_cs_string):    cs = neo_cs.CS(hdf)    try:      cs.parseStr(a_cs_string)      return cs.render()    except:      return "Error in CS tags: %s" % neo_cgi.htmlEscape(repr(a_cs_string))def childloop(hdf):    children = []    if hdf:        hdf = hdf.child()        while hdf:            children.append(hdf)            hdf = hdf.next()    return children# ----------------------------class HDF_Database(odb.Database):  def defaultRowClass(self):    return HdfRow  def defaultRowListClass(self):    return HdfItemList# ----------------------------def loopHDF(hdf, name=None):  results = []  if name: o = hdf.getObj(name)  else: o = hdf  if o:    o = o.child()    while o:      results.append(o)      o = o.next()  return resultsdef loopKVHDF(hdf, name=None):  results = []  if name: o = hdf.getObj(name)  else: o = hdf  if o:    o = o.child()    while o:      results.append((o.name(), o.value()))      o = o.next()  return resultsclass hdf_iterator:  def __init__(self, hdf):    self.hdf = hdf    self.node = None    if self.hdf:      self.node = self.hdf.child()  def __iter__(self): return self  def next(self):    if not self.node:      raise StopIteration    ret = self.node    self.node = self.node.next()          return retclass hdf_kv_iterator(hdf_iterator):  def next(self):    if not self.node: raise StopIteration    ret = (self.node.name(), self.node.value())    self.node = self.node.next()          return retclass hdf_key_iterator(hdf_iterator):  def next(self):    if not self.node: raise StopIteration    ret = self.node.name()    self.node = self.node.next()          return retclass hdf_ko_iterator(hdf_iterator):  def next(self):    if not self.node: raise StopIteration    ret = (self.node.name(), self.node)    self.node = self.node.next()          return ret  # ----------------------------def test():    import neo_util    hdf = neo_util.HDF()    hdf.setValue("foo","1")    print eval_cs(hdf,"this should say 1  ===> <?cs var:foo ?>")    if __name__ == "__main__":    test()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -