~ubuntu-branches/ubuntu/quantal/python-django/quantal-security

« back to all changes in this revision

Viewing changes to django/core/cache/backends/filebased.py

  • Committer: Bazaar Package Importer
  • Author(s): Chris Lamb
  • Date: 2010-05-21 07:52:55 UTC
  • mfrom: (1.3.6 upstream)
  • mto: This revision was merged to the branch mainline in revision 28.
  • Revision ID: james.westby@ubuntu.com-20100521075255-ii78v1dyfmyu3uzx
Tags: upstream-1.2
ImportĀ upstreamĀ versionĀ 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
import os
4
4
import time
 
5
import shutil
5
6
try:
6
7
    import cPickle as pickle
7
8
except ImportError:
41
42
        fname = self._key_to_file(key)
42
43
        try:
43
44
            f = open(fname, 'rb')
44
 
            exp = pickle.load(f)
45
 
            now = time.time()
46
 
            if exp < now:
 
45
            try:
 
46
                exp = pickle.load(f)
 
47
                now = time.time()
 
48
                if exp < now:
 
49
                    self._delete(fname)
 
50
                else:
 
51
                    return pickle.load(f)
 
52
            finally:
47
53
                f.close()
48
 
                self._delete(fname)
49
 
            else:
50
 
                return pickle.load(f)
51
54
        except (IOError, OSError, EOFError, pickle.PickleError):
52
55
            pass
53
56
        return default
66
69
                os.makedirs(dirname)
67
70
 
68
71
            f = open(fname, 'wb')
69
 
            now = time.time()
70
 
            pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL)
71
 
            pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
 
72
            try:
 
73
                now = time.time()
 
74
                pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL)
 
75
                pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
 
76
            finally:
 
77
                f.close()
72
78
        except (IOError, OSError):
73
79
            pass
74
80
 
92
98
        fname = self._key_to_file(key)
93
99
        try:
94
100
            f = open(fname, 'rb')
95
 
            exp = pickle.load(f)
96
 
            now = time.time()
97
 
            if exp < now:
 
101
            try:
 
102
                exp = pickle.load(f)
 
103
                now = time.time()
 
104
                if exp < now:
 
105
                    self._delete(fname)
 
106
                    return False
 
107
                else:
 
108
                    return True
 
109
            finally:
98
110
                f.close()
99
 
                self._delete(fname)
100
 
                return False
101
 
            else:
102
 
                return True
103
111
        except (IOError, OSError, EOFError, pickle.PickleError):
104
112
            return False
105
113
 
129
137
        try:
130
138
            os.makedirs(self._dir)
131
139
        except OSError:
132
 
            raise EnvironmentError, "Cache directory '%s' does not exist and could not be created'" % self._dir
 
140
            raise EnvironmentError("Cache directory '%s' does not exist and could not be created'" % self._dir)
133
141
 
134
142
    def _key_to_file(self, key):
135
143
        """
150
158
            count += len(files)
151
159
        return count
152
160
    _num_entries = property(_get_num_entries)
 
161
 
 
162
    def clear(self):
 
163
        try:
 
164
            shutil.rmtree(self._dir)
 
165
        except (IOError, OSError):
 
166
            pass