~ubuntuone-pqm-team/django/stable

« back to all changes in this revision

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

  • Committer: Matias Bordese
  • Date: 2014-08-21 21:22:40 UTC
  • Revision ID: matias.bordese@canonical.com-20140821212240-tij4ms6qzjbdiioz
Tags: 1.5.9
Imported Django 1.5.9 from released tarball.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
except ImportError:
10
10
    import pickle
11
11
 
12
 
from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
 
12
from django.core.cache.backends.base import BaseCache
13
13
from django.utils.encoding import force_bytes
14
14
 
15
 
 
16
15
class FileBasedCache(BaseCache):
17
16
    def __init__(self, dir, params):
18
17
        BaseCache.__init__(self, params)
20
19
        if not os.path.exists(self._dir):
21
20
            self._createdir()
22
21
 
23
 
    def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
 
22
    def add(self, key, value, timeout=None, version=None):
24
23
        if self.has_key(key, version=version):
25
24
            return False
26
25
 
36
35
            with open(fname, 'rb') as f:
37
36
                exp = pickle.load(f)
38
37
                now = time.time()
39
 
                if exp is not None and exp < now:
 
38
                if exp < now:
40
39
                    self._delete(fname)
41
40
                else:
42
41
                    return pickle.load(f)
44
43
            pass
45
44
        return default
46
45
 
47
 
    def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
 
46
    def set(self, key, value, timeout=None, version=None):
48
47
        key = self.make_key(key, version=version)
49
48
        self.validate_key(key)
50
49
 
51
50
        fname = self._key_to_file(key)
52
51
        dirname = os.path.dirname(fname)
53
52
 
54
 
        if timeout == DEFAULT_TIMEOUT:
 
53
        if timeout is None:
55
54
            timeout = self.default_timeout
56
55
 
57
56
        self._cull()
61
60
                os.makedirs(dirname)
62
61
 
63
62
            with open(fname, 'wb') as f:
64
 
                expiry = None if timeout is None else time.time() + timeout
65
 
                pickle.dump(expiry, f, pickle.HIGHEST_PROTOCOL)
 
63
                now = time.time()
 
64
                pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL)
66
65
                pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
67
66
        except (IOError, OSError):
68
67
            pass