Removed the global evil.
authorŁukasz Rekucki <lrekucki@gmail.com>
Mon, 22 Mar 2010 12:47:17 +0000 (13:47 +0100)
committerŁukasz Rekucki <lrekucki@gmail.com>
Mon, 22 Mar 2010 12:55:05 +0000 (13:55 +0100)
apps/wiki/forms.py
apps/wiki/models.py
apps/wiki/views.py

index d816cf0..db5998d 100644 (file)
@@ -1,5 +1,5 @@
 from django import forms
-from wiki.models import Document, storage
+from wiki.models import Document, getstorage
 
 
 class DocumentForm(forms.Form):
@@ -15,12 +15,11 @@ class DocumentForm(forms.Form):
             self.fields['name'].initial = document.name
             self.fields['text'].initial = document.text
             self.fields['revision'].initial = document.revision()
-    
-    def get_storage(self):
-        return storage
         
     def save(self, document_author = 'anonymous'):
-        document = Document(self.get_storage(), name=self.cleaned_data['name'], text=self.cleaned_data['text'])
+        storage = getstorage()
+        
+        document = Document(storage, name=self.cleaned_data['name'], text=self.cleaned_data['text'])
         
         storage.put(document, 
                 author = document_author, 
index 9401041..8ec4d32 100644 (file)
@@ -67,5 +67,5 @@ class Document(object):
 
         return result
 
-# Every time somebody says "let's have a global variable", God kills a kitten.
-storage = DocumentStorage(settings.REPOSITORY_PATH)
+def getstorage():
+    return DocumentStorage(settings.REPOSITORY_PATH)
index a2de0a0..78a1942 100644 (file)
@@ -5,7 +5,7 @@ from django.views.generic.simple import direct_to_template
 from django.http import HttpResponse, Http404
 from django.utils import simplejson as json
 
-from wiki.models import storage, Document, DocumentNotFound
+from wiki.models import Document, DocumentNotFound, getstorage
 from wiki.forms import DocumentForm
 from datetime import datetime
 from django.utils.encoding import smart_unicode
@@ -33,7 +33,7 @@ class DateTimeEncoder(json.JSONEncoder):
 def document_list(request, template_name = 'wiki/document_list.html'):
     # TODO: find a way to cache "Storage All"
     return direct_to_template(request, template_name, extra_context = {
-        'document_list': storage.all(),
+        'document_list': getstorage().all(),
         'last_docs': sorted(request.session.get("wiki_last_docs", {}).items(), 
                         key=operator.itemgetter(1), reverse = True)
     })  
@@ -42,7 +42,7 @@ def document_list(request, template_name = 'wiki/document_list.html'):
 def document_detail(request, name, template_name = 'wiki/document_details.html'):
     print "Trying to get", repr(name)
     try:
-        document = storage.get(name)
+        document = getstorage().get(name)
     except DocumentNotFound:        
         raise Http404
     
@@ -101,7 +101,8 @@ def document_gallery(request, directory):
         raise Http404
     
 @never_cache
-def document_diff(request, name, revA, revB):     
+def document_diff(request, name, revA, revB):
+    storage = getstorage()     
     docA = storage.get(name, int(revA))
     docB = storage.get(name, int(revB)) 
     
@@ -111,6 +112,8 @@ def document_diff(request, name, revA, revB):
     
 @never_cache    
 def document_history(request, name):
+    storage = getstorage()
+    
     return HttpResponse( 
                 json.dumps(storage.history(name), cls=DateTimeEncoder), 
                 mimetype='application/json')
@@ -120,6 +123,8 @@ import urllib, urllib2
 
 @never_cache
 def document_publish(request, name, version):
+    storage = getstorage()
+    
     # get the document
     try:
         document = storage.get(name, revision = int(version))