Commit d323564f0cb891b2285e7dda8e19ea1ce0cabe8d

Authored by Luan
2 parents 514437ff 703bf89c

Merge branch 'master' of github.com:TracyWebTech/colab

src/hitcount/models.py
... ... @@ -45,7 +45,11 @@ class HitCountModelMixin(object):
45 45 cache.set(cache_key, True)
46 46  
47 47 # Everything ok, so just increment the page count
48   - hit_ = Hit.objects.get_or_create(content_type=content_type,
49   - object_pk=self.pk)[0]
50   - hit_.hits += 1
51   - hit_.save()
  48 + hit_pk = Hit.objects.get_or_create(content_type=content_type,
  49 + object_pk=self.pk)[0].pk
  50 +
  51 + # Using this way instead of hits += 1 forces django to
  52 + # call the UPDATE directly in the database avoiding
  53 + # cuncurrency problems
  54 + Hit.objects.filter(pk=hit_pk).update(hits=models.F("hits") + 1)
  55 +
... ...
src/hitcount/views.py
1 1 from django.shortcuts import render
2 2  
3 3 class HitCountViewMixin(object):
4   - def get_object(self):
5   - raise NotImplementedError
  4 + def get_object(self, *args, **kwargs):
  5 + try:
  6 + super(HitCountViewMixin, self).get_object(*args, **kwargs)
  7 + except AttributeError:
  8 + raise NotImplementedError
6 9  
7 10 def dispatch(self, request, *args, **kwargs):
8 11 response = super(HitCountViewMixin, self).dispatch(request,
... ...
src/super_archives/views.py
... ... @@ -30,8 +30,7 @@ def thread(request, mailinglist, thread_token):
30 30  
31 31 thread = Thread.objects.get(subject_token=thread_token,
32 32 mailinglist__name=mailinglist)
33   -
34   - thread.hit()
  33 + thread.hit(request)
35 34  
36 35 order_by = request.GET.get('order')
37 36 if order_by == 'voted':
... ...