-from functools import wraps
-
-from django.db.models import Count
-
-
-def active_tab(tab):
- """
- View decorator, which puts tab info on a request.
- """
- def wrapper(f):
- @wraps(f)
- def wrapped(request, *args, **kwargs):
- request.catalogue_active_tab = tab
- return f(request, *args, **kwargs)
- return wrapped
- return wrapper
-
-
-def cached_in_field(field_name):
- def decorator(f):
- @property
- @wraps(f)
- def wrapped(self, *args, **kwargs):
- value = getattr(self, field_name)
- if value is None:
- value = f(self, *args, **kwargs)
- type(self)._default_manager.filter(pk=self.pk).update(**{field_name: value})
- return value
- return wrapped
- return decorator