def get(self, request, *args, **kwargs):
        img_url = reverse(
            'lizard_map_adapter_image',
            kwargs={'adapter_class': 'adapter_fewsnorm'})
        values_csv_url = reverse(
            'lizard_map_adapter_values',
            kwargs={'adapter_class': 'adapter_fewsnorm',
                    'output_type': 'csv'})
        values_html_url = reverse(
            'lizard_map_adapter_values',
            kwargs={'adapter_class': 'adapter_fewsnorm',
                    'output_type': 'html'})

        result = []
        for identifier in AdapterFewsNorm.identifiers():
            serialized_identifier = adapter_serialize(identifier)
            url_params = {
                'identifier': serialized_identifier,
                'adapter_layer_json': adapter_serialize({
                        'parameter_id': identifier['parameter_id'],
                        'module_id': None,
                        'fews_norm_source_slug': '',
                        })}
            url_params_str = '&'.join([
                    '%s=%s' % (k, v) for k, v in url_params.items()])
            img_url_id = '%s?%s' % (img_url, url_params_str)
            values_csv_url_id = '%s?%s' % (values_csv_url, url_params_str)
            values_html_url_id = '%s?%s' % (values_html_url, url_params_str)
            result.append({
                    'identifier': serialized_identifier,
                    'img_url': img_url_id,
                    'values_csv_url': values_csv_url_id,
                    'values_html_url': values_html_url_id, })
        return result
 def get_success_url(self):
     identifier = {"location": self.location}
     identifier_str = adapter_serialize(identifier)
     return "%s?workspace_item_id=%s&identifier=%s" % (
         reverse("lizard_fewsjdbc.thresholds"),
         self.workspace_item_id,
         identifier_str,
     )
Exemple #3
0
 def _url_arguments(self, identifiers):
     """for img_url, csv_url"""
     layer_json = self.adapter_layer_json.replace('"', '%22')
     url_arguments = [
         'adapter_layer_json=%s' % layer_json, ]
     url_arguments.extend([
             'identifier=%s' % adapter_serialize(
                 identifier) for identifier in identifiers])
     return url_arguments
 def get_success_url(self):
     workspace_item_id = self.request.GET.get("workspace_item_id")
     location = self.request.GET.get("location")
     identifier = {"location": location}
     identifier_str = adapter_serialize(identifier)
     return "%s?workspace_item_id=%s&identifier=%s" % (
         reverse("lizard_fewsjdbc.thresholds"),
         workspace_item_id,
         identifier_str,
     )
Exemple #5
0
    def html(self, identifiers=None, layout_options=None):
        """Adapted version of lizard-map's html_default. If there are
        several graphs to be shown, we show them as several graphs in
        one popup tab."""
        is_collage = layout_options and layout_options.get('is_collage', False)

        # Build "adapter-image" url for current adapter and identifiers,
        # one for each identifier.
        urls = [
            {'image_url': self.workspace_mixin_item.url(
                    "lizard_map_adapter_image", [identifier]),
             'flot_url': self.workspace_mixin_item.url(
                    "lizard_map_adapter_flot_graph_data", [identifier]),
             'title': self.location(**identifier)['name']
             }
            for identifier in identifiers]

        # Makes it possible to create collage items from current
        # selected objects.
        collage_item_props = []
        # No export and selection for collages.
        if not is_collage:
            for identifier in identifiers:
                location = self.location(**identifier)
                collage_item_props.append(
                    {'name': location['name'],
                     'adapter_class': self.workspace_mixin_item.adapter_class,
                     'adapter_layer_json':
                         self.workspace_mixin_item.adapter_layer_json,
                     'identifier': adapter_serialize(identifier),
                     'url': self.workspace_mixin_item.url(
                            "lizard_map_adapter_values", [identifier, ],
                            extra_kwargs={'output_type': 'csv'})})

        render_kwargs = {
            'unit': u'',  # Don't show unit above the graphs
            'urls': urls,
            'symbol_url': self.symbol_url(),
            'collage_item_props': collage_item_props,
            'adapter': self,
            }

        if layout_options is not None:
            render_kwargs.update(layout_options)

        return render_to_string(
            'lizard_fancylayers/popup.html',
            render_kwargs)
Exemple #6
0
    def html_default(self, snippet_group=None, identifiers=None,
                     layout_options=None,
                     template=None, extra_render_kwargs=None):
        """
        Default implementation for html view ("popup"). It returns an
        html snippet with links in it.

        The 'snippet_group' kwarg is not used anymore, but exists for
        backward compatibility. If settings.DEBUG is True, using this
        causes a warning.

        Use this function if html function behaviour is default:
        def html(self, identifiers):
            return super(WorkspaceItemAdapterKrw, self).html_default(
                identifiers)
        """
        if snippet_group is not None and settings.DEBUG:
            logger.warn('kwarg "snippet_group" supplied to html_default ' +
                        'even though it is not used anymore.')

        if template is None:
            template = 'lizard_map/html_default.html'

        is_collage = False
        if layout_options is not None:
            if 'is_collage' in layout_options:
                is_collage = layout_options['is_collage']

        # Fetch name
        if identifiers:
            identifier_str = {}
            for k, v in identifiers[0].items():
                identifier_str[str(k)] = v
            location = self.location(**identifier_str)
            title = location['name']
        else:
            title = self.workspace_mixin_item.name

        # Build "adapter-image" url for current adapter and identifiers.
        image_graph_url = self.workspace_mixin_item.url(
            "lizard_map_adapter_image", identifiers)
        flot_graph_data_url = self.workspace_mixin_item.url(
            "lizard_map_adapter_flot_graph_data", identifiers)

        # Makes it possible to create collage items from current
        # selected objects.
        collage_item_props = []
        # No export and selection for collages.
        if not is_collage:
            for identifier in identifiers:
                identifier_str = {}
                for k, v in identifier.items():
                    identifier_str[str(k)] = v
                location = self.location(**identifier_str)
                collage_item_props.append(
                    {'name': location['name'],
                     'adapter_class': self.workspace_mixin_item.adapter_class,
                     'adapter_layer_json':
                         self.workspace_mixin_item.adapter_layer_json,
                     'identifier': adapter_serialize(identifier),
                     'url': self.workspace_mixin_item.url(
                            "lizard_map_adapter_values", [identifier, ],
                            extra_kwargs={'output_type': 'csv'})})

        render_kwargs = {
            'title': title,
            'image_graph_url': image_graph_url,
            'flot_graph_data_url': flot_graph_data_url,
            'symbol_url': self.symbol_url(),
            'collage_item_props': collage_item_props,
            'adapter': self,
            }

        if layout_options is not None:
            render_kwargs.update(layout_options)

        if extra_render_kwargs is not None:
            render_kwargs.update(extra_render_kwargs)

        return render_to_string(
            template,
            render_kwargs)