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)
Example #4
0
 def map_viewlet_position(self):
     styles = get_feature_styles(self.context)
     return styles.get('map_viewlet_position')
Example #5
0
 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)
Example #6
0
 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