def metrics_mapping(cls): mapping = { 'type': 'object', 'index_name': 'metrics', 'properties': {} } for name, metric in Metric.get_for(cls).items(): mapping['properties'][metric.name] = {'type': metrics_types[metric.value_type]} return mapping
def metrics(): metrics = Metrics.objects.last_for("site") specs = Metric.get_for("site") values = metrics.values if metrics else {} return render( "metrics.html", metrics=dict( (key, {"value": values.get(key, spec.default), "label": spec.display_name}) for key, spec in specs.items() ), )
def yield_csv_catalog(datasets): '''Yield a dataset catalog line by line''' csvfile = StringIO.StringIO() writer = unicodecsv.writer(csvfile, encoding='utf-8', delimiter=b',', quotechar=b'"') # Generate header specs = Metric.get_for(Dataset) writer.writerow(header(specs)) yield csvfile.getvalue() for dataset in datasets: csvfile = StringIO.StringIO() writer = unicodecsv.writer(csvfile, encoding='utf-8', delimiter=b',', quotechar=b'"') writer.writerow(to_row(dataset, specs)) yield csvfile.getvalue()
def update_discussions_metric(discussion, **kwargs): model = discussion.subject.__class__ for name, cls in Metric.get_for(model).items(): if issubclass(cls, DiscussionsMetric): cls(target=discussion.subject).trigger_update()
def metrics_mapping_for(cls): props = {} for name, metric in Metric.get_for(cls).items(): props[metric.name] = metrics_types[metric.value_type]() return Object(properties=props)
def update_issues_metric(issue): model = issue.subject.__class__ for name, cls in Metric.get_for(model).items(): if issubclass(cls, IssuesMetric): cls(target=issue.subject).trigger_update()
def update_site_metrics(): from udata.core.metrics import Metric metrics = Metric.get_for('site') for metric in metrics.values(): metric.update()
def update_metrics_for(obj): from udata.core.metrics import Metric metrics = Metric.get_for(obj.__class__) for metric in metrics.values(): metric(obj).compute()
def metric_fields(cls): return [("metric.{0}".format(key), _metric_getter(key, spec)) for key, spec in Metric.get_for(cls).items()]
def update_site_metrics(): from udata.core.metrics import Metric from udata.models import Site metrics = Metric.get_for(Site) for metric in metrics.values(): metric.update()
def test_get_for(self): """All metrics should be registered""" self.assertEqual(Metric.get_for(FakeModel), {"fake": FakeMetric})
def test_get_for(self): '''All metrics should be registered''' metrics = Metric.get_for(FakeModel) assert 'fake' in metrics assert metrics['fake'] is FakeMetric
def update_badges_metric(badge, **kwargs): model = badge.subject.__class__ for name, cls in Metric.get_for(model).items(): if issubclass(cls, BadgesMetric): cls(target=badge.subject).trigger_update()
def metric_fields(cls): return [('metric.{0}'.format(key), _metric_getter(key, spec)) for key, spec in Metric.get_for(cls).items()]
def update_issues_metric(issue, **kwargs): model = issue.subject.__class__ for name, cls in Metric.get_for(model).items(): if issubclass(cls, IssuesMetric): cls(target=issue.subject).trigger_update()
def test_get_for(self): '''All metrics should be registered''' self.assertEqual(Metric.get_for(FakeModel), { 'fake': FakeMetric, })