Ejemplo n.º 1
0
def aggregate_reuses_daily(org, day):
    keys = ['reuses_{0}'.format(k) for k in KEYS]
    ids = [r.id for r in Reuse.objects(organization=org).only('id')]
    metrics = Metrics.objects(object_id__in=ids,
                              level='daily', date=day.isoformat())
    values = [int(metrics.sum('values.{0}'.format(k))) for k in KEYS]
    Metrics.objects.update_daily(org, day, **dict(zip(keys, values)))
Ejemplo n.º 2
0
 def get_value(self):
     ids = itertools.chain(*[
         [r.id for r in d.resources] for d in
         (Dataset.objects(organization=self.target).only('resources') or [])
     ])
     return int(Metrics.objects(object_id__in=ids, level='daily')
                       .sum('values.nb_uniq_visitors'))
Ejemplo n.º 3
0
def upsert_metric_for_day(obj, day, data):
    oid = obj.id if hasattr(obj, 'id') else obj
    if not isinstance(day, basestring):
        day = (day or date.today()).isoformat()
    commands = dict(('inc__values__{0}'.format(k), data[k]) for k in KEYS)
    metrics = Metrics.objects(object_id=oid, level='daily', date=day)
    return metrics.update_one(upsert=True, **commands)
Ejemplo n.º 4
0
    def clear(self, day):
        if not isinstance(day, basestring):
            day = (day or date.today()).isoformat()

        if is_today(day):
            commands = dict(('set__metrics__{0}'.format(k), 0) for k in KEYS)
            for model in Organization, Reuse, User:
                try:
                    model.objects.update(**commands)
                except:
                    log.exception('Unable to clean %s', model.__name__)
            for dataset in Dataset.objects:
                dcommands = commands.copy()
                for i, _ in enumerate(dataset.resources):
                    dcommands.update({
                        'set__resources__{0}__metrics__{1}'.format(i, k): 0
                        for k in KEYS
                    })
                try:
                    dataset.update(**dcommands)
                except:
                    log.exception('Unable to clear dataset %s', dataset.id)

        commands = dict(('unset__values__{0}'.format(k), '1') for k in KEYS)
        metrics = Metrics.objects(level='daily', date=day)
        return metrics.update(upsert=False, **commands)
Ejemplo n.º 5
0
    def count(self, obj, day, data):
        oid = obj.id if hasattr(obj, 'id') else obj
        if not isinstance(day, basestring):
            day = (day or date.today()).isoformat()

        if hasattr(obj, 'metrics') and day == date.today().isoformat():
            # Update object current metrics
            for k in KEYS:
                obj.metrics[k] = data[k]

        commands = dict(('inc__values__{0}'.format(k), data[k]) for k in KEYS)
        metrics = Metrics.objects(object_id=oid, level='daily', date=day)
        return metrics.update_one(upsert=True, **commands)
Ejemplo n.º 6
0
 def get_value(self):
     ids = [d.id for d in
            (Reuse.objects(organization=self.target).only('id') or [])]
     return int(Metrics.objects(object_id__in=ids, level='daily')
                       .sum('values.nb_uniq_visitors'))
Ejemplo n.º 7
0
 def get_value(self):
     return int(Metrics.objects(object_id=self.target.id, level='daily')
                       .sum('values.nb_uniq_visitors'))
Ejemplo n.º 8
0
def clear_metrics_for_day(day):
    if not isinstance(day, basestring):
        day = (day or date.today()).isoformat()
    commands = dict(('unset__values__{0}'.format(k), 1) for k in KEYS)
    metrics = Metrics.objects(level='daily', date=day)
    return metrics.update(upsert=False, **commands)