/
cc.py
76 lines (60 loc) · 1.99 KB
/
cc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: utf-8 -*-
"""
clear cache
тут собраны методы для правильной очистки кэша
"""
from django.conf import settings
from django.contrib.sites.models import Site
from django.core.cache import get_cache
from rest_framework.reverse import reverse
from smart_date.smartfunction import smart_function
from smart_date.date import yyyy_mm_dd
def by_event_id(event_id):
_remove_cach_file_by_route('event-api', {'event_id': event_id})
def by_article_id(article_id, site_id):
site = Site.objects.get(pk=site_id)
_remove_cach_file_by_route(
'article-api', {
'article_id': article_id,
'site_name': site.name
}
)
def by_article_tag(tag, site_id):
site = Site.objects.get(pk=site_id)
_remove_cach_file_by_route(
'articletag-api', {
'article_tag': tag,
'site_name': site.name
}
)
def by_article_url(url, site_id):
site = Site.objects.get(pk=site_id)
_remove_cach_file_by_route(
'article-api', {
'article_id': url,
'site_name': site.name
}
)
def by_event_url(url):
_remove_cach_file_by_route('event-api', {'event_id': url})
def by_smart_function(function):
'''
удалим кэш для дат фунции
'''
for year in xrange(
settings.SMART_FUNCTION_YEAR_BEGIN,
settings.SMART_FUNCTION_YEAR_END + 1
):
# для каждого года получим дату
for date in smart_function(function, year):
# подчистим для каждой даты кэш
_remove_cach_file_by_route(
'calendar-api', {'day': yyyy_mm_dd(date)}
)
def _remove_cach_file_by_route(route_name, kwargs):
for frm in settings.REST_SUFFIX_ALLOWED:
kwargs['format'] = frm
_remove_cach_file_by_url(reverse(route_name, kwargs=kwargs))
def _remove_cach_file_by_url(url):
cache = get_cache('api')
cache.delete(url)