From da1ab56202ae6712e0a78e6f79cec2fe35b4dffe Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 1 Dec 2011 05:24:31 -0400 Subject: [PATCH] Add maintenace view to clear the document image cache --- apps/documents/__init__.py | 3 ++- apps/documents/models.py | 7 ++++++ .../static/images/icons/camera_delete.png | Bin 0 -> 2006 bytes apps/documents/urls.py | 1 + apps/documents/views.py | 21 ++++++++++++++++++ 5 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 apps/documents/static/images/icons/camera_delete.png diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 5ff5a84c9a..14ff0b07a3 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -85,6 +85,7 @@ document_clear_transformations = {'text': _(u'clear transformations'), 'view': ' document_multiple_clear_transformations = {'text': _(u'clear transformations'), 'view': 'document_multiple_clear_transformations', 'famfam': 'page_paintbrush', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]} document_print = {'text': _(u'print'), 'view': 'document_print', 'args': 'object.id', 'famfam': 'printer', 'permissions': [PERMISSION_DOCUMENT_VIEW]} document_history_view = {'text': _(u'history'), 'view': 'history_for_object', 'args': ['"documents"', '"document"', 'object.id'], 'famfam': 'book_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_clear_image_cache = {'text': _(u'Clear the document image cache'), 'view': 'document_clear_image_cache', 'famfam': 'camera_delete', 'permissions': [PERMISSION_DOCUMENT_TOOLS], 'description': _(u'Clear the graphics representations used to speed up the documents\' display and interactive transformations results.')} document_page_transformation_list = {'text': _(u'page transformations'), 'class': 'no-parent-history', 'view': 'document_page_transformation_list', 'args': 'page.pk', 'famfam': 'pencil_go', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]} document_page_transformation_create = {'text': _(u'create new transformation'), 'class': 'no-parent-history', 'view': 'document_page_transformation_create', 'args': 'page.pk', 'famfam': 'pencil_add', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]} @@ -158,7 +159,7 @@ register_links(['document_page_transformation_edit', 'document_page_transformati register_diagnostic('documents', _(u'Documents'), document_missing_list) -register_maintenance_links([document_find_all_duplicates, document_update_page_count], namespace='documents', title=_(u'documents')) +register_maintenance_links([document_find_all_duplicates, document_update_page_count, document_clear_image_cache], namespace='documents', title=_(u'documents')) #def document_exists(document): # try: diff --git a/apps/documents/models.py b/apps/documents/models.py index 2e5a627a73..ed578c36b9 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -92,6 +92,13 @@ class Document(models.Model): object_id_field='object_pk' ) + @staticmethod + def clear_image_cache(): + for the_file in os.listdir(CACHE_PATH): + file_path = os.path.join(CACHE_PATH, the_file) + if os.path.isfile(file_path): + os.unlink(file_path) + class Meta: verbose_name = _(u'document') verbose_name_plural = _(u'documents') diff --git a/apps/documents/static/images/icons/camera_delete.png b/apps/documents/static/images/icons/camera_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..05616882a73e1972924d02a55c5a900c9206d195 GIT binary patch literal 2006 zcmV;{2Pyc8P))fN6`cJ`HhdA$#B zyiN>p5`r72q-{`RJ3Itc5D}zmgG8%7gs3Q05mZ%6`l3Rps#2+HDQZ+`#28mq;d1$mfwvB#>Bh4@|hs0z%!u)W>M_`LOG2_rmY< zS25JUGeghqdwvI>Ns==F*koBjE?>a8u`x6@G$5DFBAH4fo=D=Z?RVn*_yn;cRfQJ# zd|tdU2?1a+PYmFufEPtgM>3toiJ_C2C#LwB&FR4{w`_x|3ai)_1CaXq{)6Mk2Vk+7 zLADpNapOiPiXs@$HEjU^4>xJ{i|`!eIuBy9GI=j9#o_{3pwWvS*RA5&-O2#UWev5c zTUf~eU^biSa0|BGx()q({o;OfbQBvlY#;y{iB9&D1pt}k^x1Q`5WRqSJboDiKEEHU zR<)qP(;(LQ0zv%9ofprNnII`rMt#^TRi~?JckF{>=;-J`G#V8L@f?K}N!1V7iH3%U zkxImcsjhEXNi4}?BURNgJ72=k;2?rcA+)uvMQkR4>FF8aORTiR>9{%oV{Gl*ioV`H zG>60F<+&<=vRc~!ICJI)N(rb*ih*0imG zUh_~sSR;^?y3oB0z=t1vxWIsg%)+Bg46qNRa#>7Ynu0fU9rpg$iBNM8cXS633cAI6 zmtt9rPR!7=7{0&ROz)nDmz>q*bO{qO09Cs(H_7!3u$JD&Mk5&r6R`dh<57fH2J!ls z6E|*bLr42{u&=Nqohu39d!D=Tb8Yxn)QRR$P^{5ea{|D^5m0Xext@Xb>(?WdOv3OD zRV@qJVly!WNF#Vx!Q*iwTbM_Fwun60KnUIQoTtH!qH7g`ey>==Ypaf|(OxQyWcTR| z)CPx+t}%rgtX3;5D_qFYVWpBPo~bqAd!Eb9mSCZnx7zK3IX+LXNa89O_#_itm4R|u z(8o??HY=D@EAY@W7wzPz6Q^W?Q?Vc?+abH$C|m3(TkTM-HfUxG%Iu7iyu>J=lq(ou z+O(SYk|sr}1Ad2tyjx$S4Q*_qq-C}vH1-j0IP?s1!-vo%DbV)PGV&vA>B8(c9)w0L zE-eZu8SyBUN>FtbW{VBe6xZENUX*8D@LNo%)B;qeRIbtcp?^GqmgD=;ynQD;-~J;^ zD;%PTX|n~S1_v;?=VxeLyJ_h@z$Pe>33Q6zK){E=lf&5AHizC+9OIcXJdznJiRK_B zfwujRq2=srXn*`EtZ>+o+rJO-J-d_z*dyD|6LizxN~n>`LP*Eif9fm#?Me{cwK=#Cm&D%WocV3xFPRP|-UlGC# zjEs!Hm@`bEQ36pE6T;0cn4@(2(!n>-<(j~o-!kK)A3Cuo|2Ks1xeulH-+~sq2-(I5 zn;}y%6T^@7a|5>R4~qFZnvAlsTm3C z2O`IM@%H;ip^|TGKk^>dZMhk^$n(bNoyiCQ@}j!yZSYdob0AMWLxHKKFoQxGMn_?y*E~J_pV)$B zc76%c#5n_=g#lF3>GaXVhYxodIeP(fEgc)z#q%r`D$yM4l1#3YPD3`^KD7xI@1#?r zJ2JXI7s+Z8e|=akahM}FuY2>0n>L7|rO(fyLMB9gyU(E6A8Z8JM80!s6t_nPoA|&v zt~DgFYi!d!iHg*ho-KXB=k-7*&lfCS=>pY;h7wjhok3RB`j~yC)}7{z9_<=N@lYc7 zbkH^PLLlHLuQ!vU>Q^Ixnw)Cd8K0WLp;-E94l>g+eB4w%PUTa#`P^&Dh5QZSP)LA~ z$>Z5K_-Z2RO*AJFfZmg*Fp|!{`tzal&(Ye{asc2KNB`%=L|>Q3xq3dEUT?Qq>HEM% ziO5P$XBN~asK5=L9>J+Zw&%OOXMV{&44YrV@(fmli)8patApM5u55hRrJ8| o)P1*k07*qoM6N<$f;KwSX8-^I literal 0 HcmV?d00001 diff --git a/apps/documents/urls.py b/apps/documents/urls.py index 0d16fb3880..e3cfbf598d 100644 --- a/apps/documents/urls.py +++ b/apps/documents/urls.py @@ -37,6 +37,7 @@ urlpatterns = patterns('documents.views', url(r'^multiple/clear_transformations/$', 'document_multiple_clear_transformations', (), 'document_multiple_clear_transformations'), url(r'^duplicates/list/$', 'document_find_all_duplicates', (), 'document_find_all_duplicates'), url(r'^maintenance/update_page_count/$', 'document_update_page_count', (), 'document_update_page_count'), + url(r'^maintenance/clear_image_cache/$', 'document_clear_image_cache', (), 'document_clear_image_cache'), url(r'^page/(?P\d+)/$', 'document_page_view', (), 'document_page_view'), url(r'^page/(?P\d+)/text/$', 'document_page_text', (), 'document_page_text'), diff --git a/apps/documents/views.py b/apps/documents/views.py index 68a70f2435..ba0e18e315 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -1121,3 +1121,24 @@ def document_type_filename_create(request, document_type_id): 'document_type': document_type, }, context_instance=RequestContext(request)) + + +def document_clear_image_cache(request): + check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS]) + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + try: + Document.clear_image_cache() + messages.success(request, _(u'Document image cache cleared successfully')) + except Exception, msg: + messages.error(request, _(u'Error clearing document image cache; %s') % msg) + + return HttpResponseRedirect(previous) + + return render_to_response('generic_confirm.html', { + 'previous': previous, + 'title': _(u'Are you sure you wish to clear the document image cache?'), + 'form_icon': u'camera_delete.png', + }, context_instance=RequestContext(request))