def Render(self, listing: Listing, fields=None) -> List[str]: if not fields: fields = LISTING_FIELDS n = lambda x: dict(numberValue=x) s = lambda x: dict(stringValue=x) f = lambda x: dict(formulaValue=x) for field in fields: if field == "pickle": yield s(jsonpickle.encode(listing)) continue if field == "id": yield s(listing.id()) continue value = getattr(listing, field) if value is None: yield s("None") elif field == "link": yield s("http://%s%s" % (self.host, value)) elif hasattr(value, "parsed"): yield n(value.value) if value.parsed else s(str(value)) elif field == "address": yield f('=HYPERLINK("google.com/maps/place/%s", "%s")' % (value, value)) elif field == "images": for imglink in value[:20]: yield f('=IMAGE("http://%s%s")' % (self.host, imglink)) break else: yield s(str(value))
def _WriteToCache(self, listing: Listing): with open(os.path.join(self.directory, listing.id()), "w") as f: f.write(jsonpickle.encode(listing))