Skip to content

Commit

Permalink
updating requests middleware to templated views only and better admin
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Lovell-Troy committed Jul 10, 2013
1 parent 79090ae commit efbd38c
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 16 deletions.
4 changes: 2 additions & 2 deletions telemetry/events/tasks.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import logging
logger = logging.getLogger(__name__)
#import logging
#logger = logging.getLogger(__name__)
from .models import Event
from django.contrib.auth import get_user_model
User = get_user_model()
Expand Down
4 changes: 3 additions & 1 deletion telemetry/requests/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ class UserAgentAdmin(admin.ModelAdmin):
list_display = ('http_user_agent', 'first_seen', 'is_spider')

class RequestAdmin(admin.ModelAdmin):
list_display = ('server_name', 'path', 'remote_addr', 'user')
list_filter = ('path', 'user')
search_fields = ('path', 'user')
list_display = ('server_name', 'path', 'remote_addr', 'user', 'http_user_agent', 'http_referer')

admin.site.register(Request, RequestAdmin)
admin.site.register(UserAgent, UserAgentAdmin)
Expand Down
30 changes: 19 additions & 11 deletions telemetry/requests/middleware.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
from logging import getLogger
logger = getLogger('telemetry_requests')
from .models import add_request, log_request

from .tasks import record_request
import datetime
from pytz import utc

class RecordRequestMiddleware(object):
def process_request(self, request):
log_request(request)
try:
add_request(request)
except Exception, error:
print "the error was: %s" % error
return None
def process_template_response(self, request, response):
if response.status_code == 200:
try:
# grab things from the request object
record_request.delay(
path = request.path,
user = request.user,
http_user_agent = request.META.get('HTTP_USER_AGENT'),
http_referer = request.META.get('HTTP_REFERER'),
remote_addr = request.META.get('REMOTE_ADDR'),
server_name = request.META.get('SERVER_NAME'),
timestamp = datetime.datetime.utcnow().replace(tzinfo=utc)
)
except Exception:
pass
return response
5 changes: 3 additions & 2 deletions telemetry/requests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
logger = getLogger('telemetry_requests')
import datetime
from django.utils.timezone import utc
from django.db import models
from django.db import models, transaction
from django.conf import settings

# Create your models here.
Expand Down Expand Up @@ -68,6 +68,8 @@ def add_request(request):
)



@transaction.commit_on_success
def tx_add_request(path=None,
user=None,
http_user_agent=None,
Expand Down Expand Up @@ -113,7 +115,6 @@ def tx_add_request(path=None,
))
request_obj = Request(**create_dict)
request_obj.save()
return request_obj


def log_request(request):
Expand Down
23 changes: 23 additions & 0 deletions telemetry/requests/tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from .models import tx_add_request
try:
from celery.task import task
except ImportError:
from celery.decorators import task


@task
def record_request(path=None,
user=None,
http_user_agent=None,
http_referer=None,
remote_addr=None,
server_name=None,
timestamp=None):
tx_add_request(path = path,
user = user,
http_user_agent = http_user_agent,
http_referer = http_referer,
remote_addr = remote_addr,
server_name = server_name,
timestamp = timestamp)

16 changes: 16 additions & 0 deletions telemetry/requests/views.py
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
# Create your views here.
from .tasks import record_request
import datetime
from pytz import utc

def LogRequestMixin(object):
def dispatch(self, request, *args, **kwargs):
record_request.delay(
path = request.path,
user = request.user,
http_user_agent = request.META.get('HTTP_USER_AGENT'),
http_referer = request.META.get('HTTP_REFERER'),
remote_addr = request.META.get('REMOTE_ADDR'),
server_name = request.META.get('SERVER_NAME'),
timestamp = datetime.datetime.utcnow().replace(tzinfo=utc)
)
return super(LogRequestMixin, self).dispatch(request, *args, **kwargs)

0 comments on commit efbd38c

Please # to comment.