forked from mav-erick/django-analytics
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adding more to the reports framework
- Loading branch information
Val Kolovos
committed
Oct 24, 2014
1 parent
7e35bca
commit d2626f9
Showing
58 changed files
with
20,422 additions
and
1,259 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from djanalytics.reports.forms import DateRangeForm | ||
from django import forms | ||
|
||
class PageViewChartForm(DateRangeForm): | ||
start_page = forms.CharField(required=False) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,68 @@ | ||
from datetime import datetime, timedelta | ||
from dateutil import parser | ||
|
||
from django.conf import settings | ||
from django.http.response import HttpResponseBadRequest | ||
from django.views.generic.base import TemplateView | ||
from django.utils import timezone | ||
from django.views.generic import FormView | ||
|
||
from djanalytics.reports.forms import DateRangeForm | ||
|
||
try: | ||
import pytz | ||
except ImportError: | ||
pytz = None | ||
|
||
from djanalytics import models | ||
|
||
class DateRangeChartView(TemplateView): | ||
class DateRangeChartView(FormView): | ||
|
||
form_class = DateRangeForm | ||
|
||
def __init__(self, *args, **kwargs): | ||
super(DateRangeChartView, self).__init__(*args, **kwargs) | ||
self.client = None | ||
self.form = None | ||
|
||
def get_initial(self): | ||
return { | ||
'start_date': timezone.now() - timedelta(days=7), | ||
'end_date': timezone.now() | ||
} | ||
|
||
def get(self, request, *args, **kwargs): | ||
client_id = request.GET.get('client_id') | ||
try: | ||
self.client = models.Client.objects.get(uuid=client_id) | ||
except models.Client.DoesNotExist: | ||
return HttpResponseBadRequest(content='Bad or missing client id') | ||
return super(DateRangeChartView, self).get(request, *args, **kwargs) | ||
def form_valid(self, form): | ||
return self.render_to_response(self.get_context_data(form=form)) | ||
|
||
def get_context_data(self, **kwargs): | ||
context_data = super(DateRangeChartView, self).get_context_data(**kwargs) | ||
if self.request.GET.get('start_date'): | ||
start_date = parser.parse( | ||
self.request.GET.get('start_date') | ||
self.form = context_data.get('form') | ||
if self.form.is_valid(): | ||
if self.form.cleaned_data.get('start_date'): | ||
start_date = self.form.cleaned_data['start_date'] | ||
else: | ||
start_date = timezone.now() - timedelta(days=7) | ||
if self.form.cleaned_data.get('end_date'): | ||
end_date = self.form.cleaned_data['end_date'] | ||
else: | ||
end_date = timezone.now() | ||
self.start_date = datetime( | ||
start_date.year, start_date.month, | ||
start_date.day, 0, 0, 0 | ||
) | ||
else: | ||
start_date = timezone.now() - timedelta(days=7) | ||
if self.request.GET.get('end_date'): | ||
end_date = parser.parse( | ||
self.request.GET.get('end_date') | ||
self.end_date = datetime( | ||
end_date.year, end_date.month, | ||
end_date.day, 23, 59 | ||
) | ||
else: | ||
end_date = timezone.now() | ||
self.start_date = datetime( | ||
start_date.year, start_date.month, | ||
start_date.day, 0, 0, 0 | ||
) | ||
self.end_date = datetime( | ||
end_date.year, end_date.month, | ||
end_date.day, 23, 59 | ||
) | ||
if settings.USE_TZ: | ||
if pytz: | ||
tz = pytz.timezone(settings.TIME_ZONE) | ||
else: | ||
tz = timezone.UTC() | ||
if not timezone.is_aware(self.start_date): | ||
self.start_date = tz.localize(self.start_date) | ||
if not timezone.is_aware(self.end_date): | ||
self.end_date = tz.localize(self.end_date) | ||
context_data.update({ | ||
'start_date': self.start_date.strftime('%m/%d/%Y'), | ||
'end_date': self.end_date.strftime('%m/%d/%Y'), | ||
'client_id': self.client.uuid, | ||
}) | ||
self.client = self.form.cleaned_data['client'] | ||
if settings.USE_TZ: | ||
if pytz: | ||
tz = pytz.timezone(settings.TIME_ZONE) | ||
else: | ||
tz = timezone.UTC() | ||
if not timezone.is_aware(self.start_date): | ||
self.start_date = tz.localize(self.start_date) | ||
if not timezone.is_aware(self.end_date): | ||
self.end_date = tz.localize(self.end_date) | ||
context_data.update({ | ||
'start_date': self.start_date.strftime('%m/%d/%Y'), | ||
'end_date': self.end_date.strftime('%m/%d/%Y'), | ||
'client_id': self.client.uuid, | ||
}) | ||
return context_data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from django import forms | ||
from djanalytics import models | ||
|
||
|
||
class ClientModelChoiceField(forms.ModelChoiceField): | ||
|
||
def label_from_instance(self, obj): | ||
return obj.name | ||
|
||
|
||
class DateRangeForm(forms.Form): | ||
|
||
client = ClientModelChoiceField( | ||
queryset=models.Client.objects.all(), | ||
empty_label=None, | ||
to_field_name='uuid', | ||
) | ||
start_date = forms.DateField(required=False) | ||
end_date = forms.DateField(required=False) | ||
|
Oops, something went wrong.