def create_element(self, tag, *children, **attrib): # ~ if tag == 'div': # ~ logger.info("20130805 create_element %s",children) nsattrib = self.makeattribs(**attrib) tag = self.addns(tag) elem = etree.Element(tag, nsattrib) for item in children: if isinstance(item, Promise): item = force_unicode(item) if isinstance(item, dict): elem.attrib.update(self.makeattribs(**item)) elif isinstance(item, basestring): # ~ if len(elem) and len(elem[-1]) == 0: if len(elem): last = elem[-1] last.tail = (last.tail or "") + item else: elem.text = (elem.text or "") + item elif etree.iselement(item): elem.append(item) else: raise TypeError("bad argument: %r" % item) # ~ print "20130805 added %s --> %s" % (item,self.tostring(elem)) return elem
def create_element(self, tag, *children, **attrib): #~ if tag == 'div': #~ logger.info("20130805 create_element %s",children) nsattrib = self.makeattribs(**attrib) tag = self.addns(tag) elem = etree.Element(tag, nsattrib) for item in children: if isinstance(item, Promise): item = force_text(item) if isinstance(item, dict): elem.attrib.update(self.makeattribs(**item)) elif isinstance(item, six.string_types): #~ if len(elem) and len(elem[-1]) == 0: if len(elem): last = elem[-1] last.tail = (last.tail or "") + item else: elem.text = (elem.text or "") + item elif etree.iselement(item): elem.append(item) else: raise TypeError("bad argument: %r" % item) #~ print "20130805 added %s --> %s" % (item,self.tostring(elem)) return elem
def format_value(self, v): if etree.iselement(v): return html2rst(v) return super(RstTable, self).format_value(v)
def format_value(self, v): if etree.iselement(v): return unicode(etree.tostring(v)) return unicode(v)
def iselement(self, *args, **kw): return etree.iselement(*args, **kw)
def py2js(v): """ Note that None values are rendered as ``null`` (not ``undefined``. """ #~ assert _for_user_profile is not None #~ logger.debug("py2js(%r)",v) for cv in CONVERTERS: v = cv(v) #~ if isinstance(v,LanguageInfo): #~ return v.django_code if isinstance(v, Value): return v.as_ext() #~ v = v.as_ext() #~ if not isinstance(v, basestring): #~ raise Exception("20120121b %r is of type %s" % (v,type(v))) #~ return v if isinstance(v, Promise): #~ v = force_unicode(v) return json.dumps(force_unicode(v)) if isinstance(v, types.GeneratorType): return "".join([py2js(x) for x in v]) if etree.iselement(v): #~ if isinstance(v,etree.Element): return json.dumps(etree.tostring(v)) #~ if type(v) is types.GeneratorType: #~ raise Exception("Please don't call the generator function yourself") #~ return "\n".join([ln for ln in v]) if callable(v): #~ print 20120114, repr(v) #~ raise Exception("Please call the function yourself") return "\n".join([ln for ln in v()]) if isinstance(v, js_code): return str(v.s) # v.s might be a unicode if v is None: #~ return 'undefined' return 'null' if isinstance(v, (list, tuple)): # (types.ListType, types.TupleType): #~ return "[ %s ]" % ", ".join([py2js(x) for x in v]) elems = [py2js(x) for x in v if (not isinstance(x, VisibleComponent)) or x.get_view_permission(_for_user_profile)] return "[ %s ]" % ", ".join(elems) if isinstance(v, dict): # ) is types.DictType: #~ print 20100226, repr(v) return "{ %s }" % ", ".join([ "%s: %s" % (py2js(k), py2js(v)) for k, v in v.items() if (not isinstance(v, VisibleComponent)) or v.get_view_permission(_for_user_profile) ]) #~ "%s: %s" % (k,py2js(v)) for k,v in v.items()]) if isinstance(v, bool): # types.BooleanType: return str(v).lower() #~ if isinstance(v,CRL): #~ return str(v) if isinstance(v, Quantity): return '"%s"' % v if isinstance(v, (int, long, decimal.Decimal, fractions.Fraction)): return str(v) if isinstance(v, IncompleteDate): return '"%s"' % v.strftime(settings.SITE.date_format_strftime) #~ return '"%s"' % v if isinstance(v, datetime.datetime): #~ """20120120""" return '"%s"' % v.strftime(settings.SITE.datetime_format_strftime) #~ return '"%s"' % v.strftime('%Y-%m-%d %H:%M:%S') if isinstance(v, datetime.time): return '"%s"' % v.strftime(settings.SITE.time_format_strftime) if isinstance(v, datetime.date): if v.year < 1900: v = IncompleteDate(v) return '"%s"' % v.strftime(settings.SITE.date_format_strftime) return '"%s"' % v.strftime(settings.SITE.date_format_strftime) #~ return 'new Date(%d,%d,%d)' % (v.year,v.month-1,v.day) #~ return repr('%d.%d.%d' % (v.day,v.month,v.year)) #~ return repr(str(v)) if isinstance(v, float): return repr(v) # return json.encoder.encode_basestring(v) # print repr(v) # http://docs.djangoproject.com/en/dev/topics/serialization/ #~ if not isinstance(v, (str,unicode)): #~ raise Exception("20120121 %r is of type %s" % (v,type(v))) return json.dumps(v)
def format_value(self, v): if etree.iselement(v): return html2rst(v, True).strip() return super(RstTable, self).format_value(v).strip()
def py2js(v): """Note that None values are rendered as ``null`` (not ``undefined``. """ # assert _for_user_profile is not None # logger.debug("py2js(%r)",v) for cv in CONVERTERS: v = cv(v) # if isinstance(v,LanguageInfo): # return v.django_code if isinstance(v, Value): return v.as_ext() # v = v.as_ext() # if not isinstance(v, basestring): # raise Exception("20120121b %r is of type %s" % (v,type(v))) # return v if isinstance(v, Promise): # v = force_text(v) return json.dumps(force_text(v.encode('utf8'))) if isinstance(v, types.GeneratorType): return "".join([py2js(x) for x in v]) if etree.iselement(v): return json.dumps(force_text(etree.tostring(v))) # if type(v) is types.GeneratorType: # raise Exception("Please don't call the generator function yourself") # return "\n".join([ln for ln in v]) if callable(v): # print 20120114, repr(v) # raise Exception("Please call the function yourself") return "\n".join([ln for ln in v()]) if isinstance(v, js_code): return str(v.s) # v.s might be a unicode if v is None: # return 'undefined' return 'null' if isinstance(v, (list, tuple)): # (types.ListType, types.TupleType): elems = [py2js(x) for x in v if (not isinstance(x, VisibleComponent)) or x.get_view_permission(_for_user_profile)] return "[ %s ]" % ", ".join(elems) if isinstance(v, dict): items = [ # i for i in sorted(v.items(), key=lambda x: str(x)) # i for i in sorted(v.items()) i for i in v.items() if (not isinstance(v, VisibleComponent)) or v.get_view_permission(_for_user_profile)] # "sorted(v.items())" without sortkey caused TypeError when # the dictionary contained a mixture of unicode and # future.types.newstr objects. def sortkey(x): if isinstance(x[0], newstr): return six.text_type(x[0]) return x[0] items = sorted(items, key=sortkey) # try: # items = sorted(items, key=sortkey) # except TypeError as e: # raise TypeError("Failed to sort {0!r} : {1}".format(items, e)) return "{ %s }" % ", ".join( ["%s: %s" % (py2js(k), py2js(i)) for k, i in items]) if isinstance(v, bool): # types.BooleanType: return str(v).lower() if isinstance(v, Quantity): return '"%s"' % v if isinstance(v, (int, decimal.Decimal, fractions.Fraction)): return str(v) if isinstance(v, IncompleteDate): return '"%s"' % v.strftime(settings.SITE.date_format_strftime) if isinstance(v, datetime.datetime): return '"%s"' % v.strftime(settings.SITE.datetime_format_strftime) if isinstance(v, datetime.time): return '"%s"' % v.strftime(settings.SITE.time_format_strftime) if isinstance(v, datetime.date): if v.year < 1900: v = IncompleteDate(v) return '"%s"' % v.strftime(settings.SITE.date_format_strftime) return '"%s"' % v.strftime(settings.SITE.date_format_strftime) if isinstance(v, float): return repr(v) # return json.encoder.encode_basestring(v) # print repr(v) # http://docs.djangoproject.com/en/dev/topics/serialization/ # if not isinstance(v, (str,unicode)): # raise Exception("20120121 %r is of type %s" % (v,type(v))) return json.dumps(v)
def convert(self,v): if etree.iselement(v): return html2rst(v) return rstgen.Table.convert(self,v)
def format_value(self, v): if etree.iselement(v): return str(etree.tostring(v)) return str(v)