# combo - content management system # Copyright (C) 2014-2015 Entr'ouvert # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from django.core.urlresolvers import reverse from django.db import models from django.utils.translation import ugettext_lazy as _ from django.conf import settings from combo.data.models import CellBase from combo.data.library import register_cell_class from combo.utils import get_templated_url @register_cell_class class Gauge(CellBase): title = models.CharField(_('Title'), max_length=150, blank=True, null=True) url = models.CharField(_('URL'), max_length=150, blank=True, null=True) data_source = models.CharField(_('Data Source'), max_length=150, blank=True, null=True) jsonp_data_source = models.BooleanField(_('Use JSONP to get data'), default=True) max_value = models.PositiveIntegerField(_('Max Value'), blank=True, null=True) template_name = 'combo/gauge-cell.html' class Media: js = ('js/gauge.min.js', 'js/combo.gauge.js') class Meta: verbose_name = _('Gauge') def get_additional_label(self): return self.title def is_relevant(self, context): return bool(self.data_source) def get_cell_extra_context(self, context): if self.jsonp_data_source: data_source_url = get_templated_url(self.data_source) else: data_source_url = reverse('combo-ajax-gauge-count', kwargs={'cell': self.id}) return {'cell': self, 'title': self.title, 'url': get_templated_url(self.url) if self.url else None, 'max_value': self.max_value, 'data_source_url': data_source_url, 'jsonp': self.jsonp_data_source, } @register_cell_class class ChartCell(CellBase): template_name = 'combo/dataviz-chart.html' title = models.CharField(_('Title'), max_length=150, blank=True, null=True) url = models.URLField(_('URL'), max_length=150, blank=True, null=True) class Meta: verbose_name = _('Chart') @classmethod def is_enabled(self): return hasattr(settings, 'KNOWN_SERVICES') and settings.KNOWN_SERVICES.get('bijoe') def get_default_form_class(self): from .forms import ChartForm return ChartForm def get_additional_label(self): if self.title: return self.title return '' def get_cell_extra_context(self, context): context = super(ChartCell, self).get_cell_extra_context(context) context['title'] = self.title context['url'] = self.url return context