def __call__(self): self.request.RESPONSE.setHeader('Content-Type', 'application/json; charset=utf-8') try: geometry = IGeoreferenced(self.context) except: return '{}' try: self.styles = utils.get_feature_styles(self.context) except: self.styles = None if geometry.geo['type']: classes = geometry.geo['type'].lower() + ' ' else: classes = '' classes += self.context.getPhysicalPath()[-2].replace('.', '-') json_result = [ geojson.Feature( id=self.context.id.replace('.', '-'), geometry=geometry.geo, properties={ 'title': self.context.Title(), 'description': self.context.Description(), 'style': self._get_style(geometry.geo), 'url': self.context.absolute_url(), 'classes': classes, })] return geojson.dumps(geojson.FeatureCollection(json_result))
def __init__(self, context, request): self.context = context self.request = request try: self.geom = IGeoreferenced(self.context) except: self.geom = NullGeometry() self.styles = get_feature_styles(context)
def __init__(self, context, request): self.context = context self.request = request try: self.geom = IGeoreferenced(self.context) except: self.geom = NullGeometry() self.styles = get_feature_styles(context)
def map_viewlet_position(self): styles = get_feature_styles(self.context) return styles.get('map_viewlet_position')
def data_geojson(self): style = {} global_style = utils.get_feature_styles(self.context) style["fill"] = global_style["polygoncolor"] style["stroke"] = global_style["linecolor"] style["width"] = global_style["linewidth"] if global_style.get("marker_image", None): img = get_marker_image(self.context, global_style["marker_image"]) style["image"] = img else: style["image"] = None json_result = [] self.pc = api.portal.get_tool("portal_catalog") for contact in self.get_contacts(): brain = self.pc.unrestrictedSearchResults(UID=contact.UID())[0] if contact.use_parent_address: brain = self.pc.unrestrictedSearchResults(UID=contact.aq_parent.UID())[ 0 ] if brain.zgeo_geometry == Missing.Value: continue if brain.collective_geo_styles == Missing.Value: continue if brain.collective_geo_styles.get( "use_custom_styles", False ) and brain.collective_geo_styles.get("marker_image", None): img = get_marker_image( self.context, brain.collective_geo_styles["marker_image"] ) style["image"] = img geom = { "type": brain.zgeo_geometry["type"], "coordinates": brain.zgeo_geometry["coordinates"], } if geom["coordinates"]: if geom["type"]: classes = geom["type"].lower() + " " else: classes = "" address = get_address(contact) number = "" if address.get("number", None): number = ", {0}".format(address["number"]) formated_address = "{0}{1}<br />{2} {3}".format( safe_utf8(address.get("street") or ""), number, address.get("zip_code") or "", safe_utf8(address.get("city") or ""), ) img = "" if self.context.see_logo_in_popup: acc = getattr(contact, "logo", None) if acc and acc.filename: img = "{0}/@@images/logo/thumb".format(contact.absolute_url()) classes += brain.getPath().split("/")[-2].replace(".", "-") json_result.append( geojson.Feature( id=contact.id.replace(".", "-"), geometry=as_shape(geom), style=style, properties={ "title": brain.Title, "description": brain.Description, "style": style, "url": brain.getURL(), "classes": classes, "image": img, "address": formated_address, }, ) ) feature_collection = geojson.FeatureCollection(json_result) feature_collection.update({"title": self.context.title}) return geojson.dumps(feature_collection)
def data_geojson(self): style = {} global_style = utils.get_feature_styles(self.context) style['fill'] = global_style['polygoncolor'] style['stroke'] = global_style['linecolor'] style['width'] = global_style['linewidth'] if global_style.get('marker_image', None): img = get_marker_image(self.context, global_style['marker_image']) style['image'] = img else: style['image'] = None json_result = [] self.pc = api.portal.get_tool('portal_catalog') for contact in self.get_contacts(): brain = self.pc.unrestrictedSearchResults(UID=contact.UID())[0] if contact.use_parent_address: brain = self.pc.unrestrictedSearchResults( UID=contact.aq_parent.UID())[0] if brain.zgeo_geometry == Missing.Value: continue if brain.collective_geo_styles == Missing.Value: continue if brain.collective_geo_styles.get('use_custom_styles', False) and \ brain.collective_geo_styles.get('marker_image', None): img = get_marker_image(self.context, brain.collective_geo_styles['marker_image']) style['image'] = img geom = {'type': brain.zgeo_geometry['type'], 'coordinates': brain.zgeo_geometry['coordinates']} if geom['coordinates']: if geom['type']: classes = geom['type'].lower() + ' ' else: classes = '' address = get_address(contact) number = '' if address.get('number', None): number = ', {0}'.format(address['number']) formated_address = '{0}{1}<br />{2} {3}'.format( safe_utf8(address.get('street') or ''), number, address.get('zip_code') or '', safe_utf8(address.get('city') or '') ) img = '' if self.context.see_logo_in_popup: acc = getattr(contact, 'logo', None) if acc and acc.filename: img = '{0}/@@images/logo/thumb'.format( contact.absolute_url() ) classes += brain.getPath().split('/')[-2].replace('.', '-') json_result.append( geojson.Feature( id=contact.id.replace('.', '-'), geometry=as_shape(geom), style=style, properties={ 'title': brain.Title, 'description': brain.Description, 'style': style, 'url': brain.getURL(), 'classes': classes, 'image': img, 'address': formated_address })) feature_collection = geojson.FeatureCollection(json_result) feature_collection.update({'title': self.context.title}) return geojson.dumps(feature_collection)
def map_viewlet_position(self): styles = get_feature_styles(self.context) return styles.get('map_viewlet_position')
def collective_geo_styles(context): styles = get_feature_styles(context) return styles