You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
2.1 KiB
42 lines
2.1 KiB
# -*- coding: utf-8 -*-
|
|
from datetime import date, timedelta
|
|
from django.core.management.base import BaseCommand
|
|
from expobanner.models import Log, LogStat, Banner
|
|
from django.conf import settings
|
|
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
prev_day = date.today() - timedelta(days=1)
|
|
for banner in Banner.objects.select_related('group').filter():
|
|
try:
|
|
logstat = LogStat.objects.get(banner=banner, group=banner.group, date=prev_day)
|
|
except LogStat.DoesNotExist:
|
|
logstat = LogStat(banner=banner, group=banner.group, date=prev_day)
|
|
|
|
views = Log.objects.filter(datetime__startswith=prev_day,
|
|
banner=banner,
|
|
group=banner.group,
|
|
type=1).count()
|
|
clicks = Log.objects.filter(datetime__startswith=prev_day,
|
|
banner=banner,
|
|
group=banner.group,
|
|
type=2).count()
|
|
unique_views = Log.objects.filter(datetime__startswith=prev_day,
|
|
banner=banner,
|
|
group=banner.group,
|
|
type=1).values('ip').distinct().count()
|
|
unique_clicks = Log.objects.filter(datetime__startswith=prev_day,
|
|
banner=banner,
|
|
group=banner.group,
|
|
type=2).values('ip').distinct().count()
|
|
|
|
if not logstat.click or logstat.click < clicks:
|
|
logstat.click = clicks
|
|
if not logstat.view or logstat.view < views:
|
|
logstat.view = views
|
|
if not logstat.unique_click or logstat.unique_click < unique_clicks:
|
|
logstat.unique_click = unique_clicks
|
|
if not logstat.unique_view or logstat.unique_view < unique_views:
|
|
logstat.unique_view = unique_views
|
|
logstat.save()
|
|
|