Exemplo n.º 1
0
    def _comments(self, pivot_date):
        pivot_date_min = datetime.combine(pivot_date,
                                          time(0, 0, 0, 0, tzinfo=utc))
        pivot_date_max = datetime.combine(pivot_date,
                                          time(23, 59, 59, 999999, tzinfo=utc))

        num_comments = Comments.objects.filter(
            creation_date__range=(pivot_date_min, pivot_date_max)).count()

        # Store data points
        Metric.insert_metric(Metric.KPI_TOTAL_COMMENTS,
                             pivot_date,
                             num_comments,
                             segment=Metric.SEG_ALL)

        return num_comments
Exemplo n.º 2
0
    def handle(self, *app_names, **options):
        """
        Handle gathering the statistics
        """
        verbosity = 1
        if 'verbosity' in options:
            verbosity = int(options['verbosity'])

        # cache the user/member totals
        self.users = self.get_users()
        self.members = self.get_members()

        # create a metric from the totals
        metric = Metric()
        metric.users = len(self.users)
        metric.members = len(self.members)
        metric.visits = len(self.get_visits())
        metric.disk_usage = self.get_site_size()

        if verbosity >= 2:
            print 'metric.users', metric.users
            print 'metric.members', metric.members
            print 'metric.visits', metric.visits
            print 'metric.disk_usage', metric.disk_usage

        metric.save()
Exemplo n.º 3
0
def index(request):
    metrics = []
    for MC in Metric.__subclasses__():
        metrics.extend(MC.objects.all())

    data = []
    for metric in metrics:
        latest = metric.data.latest()
        data.append({'metric': metric, 'latest': latest})
    return render(request, 'index.html', {'data': data})
Exemplo n.º 4
0
def metrics(request):
    key = get_agent_key(request)
    host = Host.objects.get(agent_key=key)
    host.save()  # update last_updated
    if not host.enabled:
        return HttpResponse(status=403)
    metrics = json.loads(request.body)
    for metric in metrics:
        # add counters
        for counter in metric.get('counters'):
            m = Metric()
            m.metric_type = metric.get('type')
            m.source = metric.get('container_id')
            m.counter = counter.get('name')
            m.value = counter.get('value')
            m.unit = counter.get('unit')
            m.save()
    return HttpResponse()
Exemplo n.º 5
0
def metrics(request):
    key = get_agent_key(request)
    host = Host.objects.get(agent_key=key)
    host.save() # update last_updated
    if not host.enabled:
        return HttpResponse(status=403)
    metrics = json.loads(request.body)
    for metric in metrics:
        # add counters
        for counter in metric.get('counters'):
            m = Metric()
            m.metric_type = metric.get('type')
            m.source = metric.get('container_id')
            m.counter = counter.get('name')
            m.value = counter.get('value')
            m.unit = counter.get('unit')
            m.save()
    return HttpResponse()
    def handle(self, *args, **options):
        num_days = int(options.get('days', 7))

        if options['custom_date']:
            end_date = datetime.strptime(options['custom_date'], '%Y-%m-%d')
        else:
            end_date = now() - timedelta(days=1)

        begin_date = end_date - timedelta(days=num_days)

        begin_date_min = datetime.combine(begin_date, time(0, 0, 0, 0, tzinfo=utc))
        end_date_max = datetime.combine(end_date, time(23, 59, 59, 999999, tzinfo=utc))

        users = Chefs.objects.values('type')\
            .filter(last_signin_date__range=(begin_date_min, end_date_max))\
            .annotate(Count('type'))
#            .exclude(creation_date=F(last_signin_date))

        cnt_pro = 0
        cnt_foodie = 0
        for row in users:
            if row['type'] == Chefs.TYPE_PRO:
                cnt_pro += row['type__count']
            else:
                cnt_foodie += row['type__count']

        # Store data points
        if num_days == 7:
            metric_code = Metric.KPI_SUPERACTIVE_USERS
        elif num_days == 30:
            metric_code = Metric.KPI_ACTIVE_USERS
        elif num_days == 60:
            metric_code = Metric.KPI_SLEEPING_USERS
        else:
            metric_code = Metric.KPI_DEAD_USERS

        Metric.insert_metric(metric_code, end_date, cnt_foodie, segment=Metric.SEG_FOODIES)
        Metric.insert_metric(metric_code, end_date, cnt_pro, segment=Metric.SEG_CHEFS)
        Metric.insert_metric(metric_code, end_date, cnt_pro + cnt_foodie, segment=Metric.SEG_ALL)

        self.stdout.write("%s user(s) registered" % (cnt_pro + cnt_foodie))
Exemplo n.º 7
0
 def handle_noargs(self, **options):
     for MC in Metric.__subclasses__():
         for metric in MC.objects.all():
             metric.data.create(count=metric.fetch())
Exemplo n.º 8
0
from django.contrib import admin

from metrics.models import Data, Metric

admin.site.register(Data)

for MC in Metric.__subclasses__():
    admin.site.register(MC)
Exemplo n.º 9
0
    def handle(self, *args, **options):
        if options['custom_date']:
            pivot_date = datetime.strptime(options['custom_date'], '%Y-%m-%d')
        else:
            pivot_date = now() - timedelta(days=1)

        pivot_date_min = datetime.combine(pivot_date,
                                          time(0, 0, 0, 0, tzinfo=utc))
        pivot_date_max = datetime.combine(pivot_date,
                                          time(23, 59, 59, 999999, tzinfo=utc))

        cnt_foodie = Recipes.objects.filter(
            draft=0,
            private=0,
            creation_date__range=(pivot_date_min, pivot_date_max),
            chef__type=Chefs.TYPE_FOODIE).count()

        cnt_pro = Recipes.objects.filter(draft=0,
                                         private=0,
                                         creation_date__range=(pivot_date_min,
                                                               pivot_date_max),
                                         chef__type=Chefs.TYPE_PRO).count()

        # Store data points
        Metric.insert_metric(Metric.KPI_TOTAL_RECIPES,
                             pivot_date,
                             cnt_foodie,
                             segment=Metric.SEG_FOODIES)
        Metric.insert_metric(Metric.KPI_TOTAL_RECIPES,
                             pivot_date,
                             cnt_pro,
                             segment=Metric.SEG_CHEFS)

        # Count recipes with more than 3 photos
        cnt_foodie_plus_3 = Recipes.objects.filter(draft=0, private=0,
                                                   creation_date__range=(pivot_date_min, pivot_date_max),
                                                   chef__type=Chefs.TYPE_FOODIE)\
            .annotate(photos_count=Count('photos'))\
            .filter(photos_count__gt=3).count()

        cnt_pro_plus_3 = Recipes.objects.filter(draft=0, private=0,
                                                creation_date__range=(pivot_date_min, pivot_date_max),
                                                chef__type=Chefs.TYPE_PRO)\
            .annotate(photos_count=Count('photos'))\
            .filter(photos_count__gt=3).count()

        # Store data points
        Metric.insert_metric(Metric.KPI_TOTAL_RECIPES_3_PHOTOS,
                             pivot_date,
                             cnt_foodie_plus_3,
                             segment=Metric.SEG_FOODIES)
        Metric.insert_metric(Metric.KPI_TOTAL_RECIPES_3_PHOTOS,
                             pivot_date,
                             cnt_pro_plus_3,
                             segment=Metric.SEG_CHEFS)

        # Send data to Dashboard
        GeckoBoard.push_recipes_created(cnt_foodie_plus_3 + cnt_pro_plus_3,
                                        cnt_pro_plus_3, cnt_foodie_plus_3)

        self.stdout.write("%s Total foodies recipes created" % cnt_foodie)
        self.stdout.write("%s Total chefs recipes created" % cnt_pro)
        self.stdout.write("%s foodies recipes with more than 3 photos" %
                          cnt_foodie_plus_3)
        self.stdout.write("%s chefs recipes with more than 3 photos" %
                          cnt_pro_plus_3)
def create_metrics(apps, schema_editor):
    """Create one metric"""
    metric = Metric()
    metric.name = 'confidence'
    metric.description = 'Tracks model confidence'
    metric.save()

    metric = Metric()
    metric.name = 'Image size'
    metric.description = 'Records input image size'
    metric.save()

    metric = Metric()
    metric.name = 'Pixel intensity'
    metric.description = 'Records pixel average intensity of your images'
    metric.save()
Exemplo n.º 11
0
    def handle(self, *args, **options):

        if options['custom_date']:
            pivot_date = datetime.strptime(options['custom_date'], '%Y-%m-%d')
        else:
            pivot_date = now() - timedelta(days=1)

        pivot_date_min = datetime.combine(pivot_date,
                                          time(0, 0, 0, 0, tzinfo=utc))
        pivot_date_max = datetime.combine(pivot_date,
                                          time(23, 59, 59, 999999, tzinfo=utc))

        registered_users = Chefs.objects.values('type')\
            .filter(creation_date__range=(pivot_date_min, pivot_date_max))\
            .annotate(Count('type'))

        cnt_pro = 0
        cnt_foodie = 0
        for row in registered_users:
            if row['type'] == Chefs.TYPE_PRO:
                cnt_pro += row['type__count']
            else:
                cnt_foodie += row['type__count']

        # Store data points
        Metric.insert_metric(Metric.KPI_REGISTERED_USERS,
                             pivot_date,
                             cnt_foodie,
                             segment=Metric.SEG_FOODIES)
        Metric.insert_metric(Metric.KPI_REGISTERED_USERS,
                             pivot_date,
                             cnt_pro,
                             segment=Metric.SEG_CHEFS)
        Metric.insert_metric(Metric.KPI_REGISTERED_USERS,
                             pivot_date,
                             cnt_pro + cnt_foodie,
                             segment=Metric.SEG_ALL)

        # Count total foodies
        total_foodies = Chefs.objects.filter(is_active=True,
                                             active=True,
                                             type=Chefs.TYPE_FOODIE).count()
        Metric.insert_metric(Metric.KPI_TOTAL_USERS,
                             pivot_date,
                             total_foodies,
                             segment=Metric.SEG_FOODIES)

        total_chefs = Chefs.objects.filter(is_active=True,
                                           active=True,
                                           type=Chefs.TYPE_PRO).count()
        Metric.insert_metric(Metric.KPI_TOTAL_USERS,
                             pivot_date,
                             total_chefs,
                             segment=Metric.SEG_CHEFS)

        # Push to dashboard
        GeckoBoard.push_weekly_metric(Metric.KPI_REGISTERED_USERS)

        self.stdout.write("%s user(s) registered" % (cnt_pro + cnt_foodie))
        self.stdout.write("Total foodies %s registered" % total_foodies)
        self.stdout.write("Total chefs %s registered" % total_chefs)
Exemplo n.º 12
0
from django.contrib import admin

from metrics.models import Data, Metric


admin.site.register(Data)

for MC in Metric.__subclasses__():
    admin.site.register(MC)