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.
 
 
 
 
 
 

79 lines
2.3 KiB

# -*- coding: utf-8 -*-
from django.contrib.contenttypes.models import ContentType
from .models import SectionStats, ObjectStats
class SectionBaseMixin(object):
"""
Section stat base mixin
"""
section = None
stat_kind = None
def render_to_response(self, context, **response_kwargs):
try:
SectionStats.cache_count_add(
self.section, self.stat_kind, None, None, 1)
# ['section', 'kind', 'content_type', 'object_id', 'value']
except:
pass
return super(SectionBaseMixin, self).render_to_response(context, **response_kwargs)
class ExpoSectionBaseMixin(object):
section = 'expo'
class ExpoSectionMixin(ExpoSectionBaseMixin, SectionBaseMixin):
pass
class ConfSectionBaseMixin(object):
section = 'conf'
class ConfSectionMixin(ConfSectionBaseMixin, SectionBaseMixin):
pass
class SectionKindBaseMixin(object):
section = None
stat_kind = None
def render_to_response(self, context, **response_kwargs):
if self.stat_kind is not None and self.stat_kind in self.kwargs:
try:
obj = self.kwargs.get(self.stat_kind)
content_type = ContentType.objects.get_for_model(obj)
SectionStats.cache_count_add(
self.section, self.stat_kind, content_type.pk, obj.pk, 1)
# ['section', 'kind', 'content_type', 'object_id', 'value']
except:
pass
# except Exception as e:
# print(e)
return super(SectionKindBaseMixin, self).render_to_response(context, **response_kwargs)
class ExpoSectionKindMixin(ExpoSectionBaseMixin, SectionKindBaseMixin):
pass
class ConfSectionKindMixin(ConfSectionBaseMixin, SectionKindBaseMixin):
pass
class ObjectStatMixin(object):
def render_to_response(self, context, **response_kwargs):
try:
obj = self.object
if obj.__class__.__name__.lower() == 'conference':
ObjectStats.cache_count_add(obj.pk, None, 1)
else:
ObjectStats.cache_count_add(None, obj.pk, 1)
# ['conference_id', 'exposition_id', 'value']
except:
pass
return super(ObjectStatMixin, self).render_to_response(context, **response_kwargs)