Show More
@@ -72,15 +72,20 def get_websocket_token(user_id='', time | |||
|
72 | 72 | return token |
|
73 | 73 | |
|
74 | 74 | |
|
75 | # TODO Test this carefully | |
|
75 | 76 | def cached_result(key_method=None): |
|
76 | 77 | """ |
|
77 | 78 | Caches method result in the Django's cache system, persisted by object name, |
|
78 |
object name |
|
|
79 | object name, model id if object is a Django model, args and kwargs if any. | |
|
79 | 80 | """ |
|
80 | 81 | def _cached_result(function): |
|
81 | 82 | def inner_func(obj, *args, **kwargs): |
|
82 | # TODO Include method arguments to the cache key | |
|
83 | 83 | cache_key_params = [obj.__class__.__name__, function.__name__] |
|
84 | ||
|
85 | cache_key_params += args | |
|
86 | for key, value in kwargs: | |
|
87 | cache_key_params.append(key + ':' + value) | |
|
88 | ||
|
84 | 89 | if isinstance(obj, Model): |
|
85 | 90 | cache_key_params.append(str(obj.id)) |
|
86 | 91 |
@@ -4,6 +4,7 from django.shortcuts import render | |||
|
4 | 4 | |
|
5 | 5 | import neboard |
|
6 | 6 | from boards.authors import authors |
|
7 | from boards.utils import cached_result | |
|
7 | 8 | from boards.views.base import BaseBoardView |
|
8 | 9 | from boards.models import Post |
|
9 | 10 | |
@@ -23,6 +24,7 class AuthorsView(BaseBoardView): | |||
|
23 | 24 | |
|
24 | 25 | return render(request, 'boards/authors.html', params) |
|
25 | 26 | |
|
27 | @cached_result() | |
|
26 | 28 | def _get_directory_size(self, directory): |
|
27 | 29 | total_size = 0 |
|
28 | 30 | for dirpath, dirnames, filenames in os.walk(directory): |
General Comments 0
You need to be logged in to leave comments.
Login now