summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/sessions
diff options
context:
space:
mode:
authorttt2017-05-13 00:29:47 +0530
committerttt2017-05-13 00:29:47 +0530
commitabf599be33b383a6a5baf9493093b2126a622ac8 (patch)
tree4c5ab6e0d935d5e65fabcf0258e4a00dd20a5afa /lib/python2.7/site-packages/django/contrib/sessions
downloadSBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.tar.gz
SBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.tar.bz2
SBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.zip
added all server files
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/sessions')
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/base.py327
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py74
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py84
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/db.py85
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/file.py202
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py81
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/exceptions.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mobin0 -> 813 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mobin0 -> 696 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mobin0 -> 797 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mobin0 -> 750 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mobin0 -> 765 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mobin0 -> 539 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mobin0 -> 762 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mobin0 -> 707 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mobin0 -> 717 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mobin0 -> 749 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mobin0 -> 690 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mobin0 -> 696 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mobin0 -> 767 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mobin0 -> 356 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mobin0 -> 710 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mobin0 -> 697 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mobin0 -> 703 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mobin0 -> 724 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mobin0 -> 734 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mobin0 -> 704 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mobin0 -> 692 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mobin0 -> 717 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mobin0 -> 690 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mobin0 -> 702 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mobin0 -> 401 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mobin0 -> 750 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mobin0 -> 721 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mobin0 -> 768 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mobin0 -> 762 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mobin0 -> 776 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mobin0 -> 709 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mobin0 -> 680 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mobin0 -> 687 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mobin0 -> 704 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mobin0 -> 719 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mobin0 -> 806 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mobin0 -> 746 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mobin0 -> 932 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mobin0 -> 817 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mobin0 -> 677 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mobin0 -> 757 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mobin0 -> 734 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mobin0 -> 797 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mobin0 -> 783 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mobin0 -> 732 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mobin0 -> 822 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mobin0 -> 688 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mobin0 -> 754 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mobin0 -> 688 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mobin0 -> 698 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mobin0 -> 742 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mobin0 -> 774 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mobin0 -> 750 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mobin0 -> 708 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mobin0 -> 721 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mobin0 -> 733 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mobin0 -> 809 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mobin0 -> 738 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mobin0 -> 735 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mobin0 -> 695 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mobin0 -> 815 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mobin0 -> 788 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mobin0 -> 693 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mobin0 -> 713 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mobin0 -> 804 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mobin0 -> 789 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mobin0 -> 760 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mobin0 -> 695 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mobin0 -> 760 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mobin0 -> 807 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mobin0 -> 732 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mobin0 -> 691 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mobin0 -> 693 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mobin0 -> 701 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py15
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/middleware.py45
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/models.py54
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/serializers.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/tests.py593
164 files changed, 4421 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/__init__.py
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py
new file mode 100644
index 0000000..7f5e958
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py
@@ -0,0 +1,327 @@
+from __future__ import unicode_literals
+
+import base64
+from datetime import datetime, timedelta
+import logging
+import string
+
+from django.conf import settings
+from django.core.exceptions import SuspiciousOperation
+from django.utils.crypto import constant_time_compare
+from django.utils.crypto import get_random_string
+from django.utils.crypto import salted_hmac
+from django.utils import timezone
+from django.utils.encoding import force_bytes, force_text
+from django.utils.module_loading import import_by_path
+
+from django.contrib.sessions.exceptions import SuspiciousSession
+
+# session_key should not be case sensitive because some backends can store it
+# on case insensitive file systems.
+VALID_KEY_CHARS = string.ascii_lowercase + string.digits
+
+class CreateError(Exception):
+ """
+ Used internally as a consistent exception type to catch from save (see the
+ docstring for SessionBase.save() for details).
+ """
+ pass
+
+class SessionBase(object):
+ """
+ Base class for all Session classes.
+ """
+ TEST_COOKIE_NAME = 'testcookie'
+ TEST_COOKIE_VALUE = 'worked'
+
+ def __init__(self, session_key=None):
+ self._session_key = session_key
+ self.accessed = False
+ self.modified = False
+ self.serializer = import_by_path(settings.SESSION_SERIALIZER)
+
+ def __contains__(self, key):
+ return key in self._session
+
+ def __getitem__(self, key):
+ return self._session[key]
+
+ def __setitem__(self, key, value):
+ self._session[key] = value
+ self.modified = True
+
+ def __delitem__(self, key):
+ del self._session[key]
+ self.modified = True
+
+ def get(self, key, default=None):
+ return self._session.get(key, default)
+
+ def pop(self, key, *args):
+ self.modified = self.modified or key in self._session
+ return self._session.pop(key, *args)
+
+ def setdefault(self, key, value):
+ if key in self._session:
+ return self._session[key]
+ else:
+ self.modified = True
+ self._session[key] = value
+ return value
+
+ def set_test_cookie(self):
+ self[self.TEST_COOKIE_NAME] = self.TEST_COOKIE_VALUE
+
+ def test_cookie_worked(self):
+ return self.get(self.TEST_COOKIE_NAME) == self.TEST_COOKIE_VALUE
+
+ def delete_test_cookie(self):
+ del self[self.TEST_COOKIE_NAME]
+
+ def _hash(self, value):
+ key_salt = "django.contrib.sessions" + self.__class__.__name__
+ return salted_hmac(key_salt, value).hexdigest()
+
+ def encode(self, session_dict):
+ "Returns the given session dictionary serialized and encoded as a string."
+ serialized = self.serializer().dumps(session_dict)
+ hash = self._hash(serialized)
+ return base64.b64encode(hash.encode() + b":" + serialized).decode('ascii')
+
+ def decode(self, session_data):
+ encoded_data = base64.b64decode(force_bytes(session_data))
+ try:
+ # could produce ValueError if there is no ':'
+ hash, serialized = encoded_data.split(b':', 1)
+ expected_hash = self._hash(serialized)
+ if not constant_time_compare(hash.decode(), expected_hash):
+ raise SuspiciousSession("Session data corrupted")
+ else:
+ return self.serializer().loads(serialized)
+ except Exception as e:
+ # ValueError, SuspiciousOperation, unpickling exceptions. If any of
+ # these happen, just return an empty dictionary (an empty session).
+ if isinstance(e, SuspiciousOperation):
+ logger = logging.getLogger('django.security.%s' %
+ e.__class__.__name__)
+ logger.warning(force_text(e))
+ return {}
+
+ def update(self, dict_):
+ self._session.update(dict_)
+ self.modified = True
+
+ def has_key(self, key):
+ return key in self._session
+
+ def keys(self):
+ return self._session.keys()
+
+ def values(self):
+ return self._session.values()
+
+ def items(self):
+ return self._session.items()
+
+ def iterkeys(self):
+ return self._session.iterkeys()
+
+ def itervalues(self):
+ return self._session.itervalues()
+
+ def iteritems(self):
+ return self._session.iteritems()
+
+ def clear(self):
+ # To avoid unnecessary persistent storage accesses, we set up the
+ # internals directly (loading data wastes time, since we are going to
+ # set it to an empty dict anyway).
+ self._session_cache = {}
+ self.accessed = True
+ self.modified = True
+
+ def _get_new_session_key(self):
+ "Returns session key that isn't being used."
+ while True:
+ session_key = get_random_string(32, VALID_KEY_CHARS)
+ if not self.exists(session_key):
+ break
+ return session_key
+
+ def _get_or_create_session_key(self):
+ if self._session_key is None:
+ self._session_key = self._get_new_session_key()
+ return self._session_key
+
+ def _get_session_key(self):
+ return self._session_key
+
+ session_key = property(_get_session_key)
+
+ def _get_session(self, no_load=False):
+ """
+ Lazily loads session from storage (unless "no_load" is True, when only
+ an empty dict is stored) and stores it in the current instance.
+ """
+ self.accessed = True
+ try:
+ return self._session_cache
+ except AttributeError:
+ if self.session_key is None or no_load:
+ self._session_cache = {}
+ else:
+ self._session_cache = self.load()
+ return self._session_cache
+
+ _session = property(_get_session)
+
+ def get_expiry_age(self, **kwargs):
+ """Get the number of seconds until the session expires.
+
+ Optionally, this function accepts `modification` and `expiry` keyword
+ arguments specifying the modification and expiry of the session.
+ """
+ try:
+ modification = kwargs['modification']
+ except KeyError:
+ modification = timezone.now()
+ # Make the difference between "expiry=None passed in kwargs" and
+ # "expiry not passed in kwargs", in order to guarantee not to trigger
+ # self.load() when expiry is provided.
+ try:
+ expiry = kwargs['expiry']
+ except KeyError:
+ expiry = self.get('_session_expiry')
+
+ if not expiry: # Checks both None and 0 cases
+ return settings.SESSION_COOKIE_AGE
+ if not isinstance(expiry, datetime):
+ return expiry
+ delta = expiry - modification
+ return delta.days * 86400 + delta.seconds
+
+ def get_expiry_date(self, **kwargs):
+ """Get session the expiry date (as a datetime object).
+
+ Optionally, this function accepts `modification` and `expiry` keyword
+ arguments specifying the modification and expiry of the session.
+ """
+ try:
+ modification = kwargs['modification']
+ except KeyError:
+ modification = timezone.now()
+ # Same comment as in get_expiry_age
+ try:
+ expiry = kwargs['expiry']
+ except KeyError:
+ expiry = self.get('_session_expiry')
+
+ if isinstance(expiry, datetime):
+ return expiry
+ if not expiry: # Checks both None and 0 cases
+ expiry = settings.SESSION_COOKIE_AGE
+ return modification + timedelta(seconds=expiry)
+
+ def set_expiry(self, value):
+ """
+ Sets a custom expiration for the session. ``value`` can be an integer,
+ a Python ``datetime`` or ``timedelta`` object or ``None``.
+
+ If ``value`` is an integer, the session will expire after that many
+ seconds of inactivity. If set to ``0`` then the session will expire on
+ browser close.
+
+ If ``value`` is a ``datetime`` or ``timedelta`` object, the session
+ will expire at that specific future time.
+
+ If ``value`` is ``None``, the session uses the global session expiry
+ policy.
+ """
+ if value is None:
+ # Remove any custom expiration for this session.
+ try:
+ del self['_session_expiry']
+ except KeyError:
+ pass
+ return
+ if isinstance(value, timedelta):
+ value = timezone.now() + value
+ self['_session_expiry'] = value
+
+ def get_expire_at_browser_close(self):
+ """
+ Returns ``True`` if the session is set to expire when the browser
+ closes, and ``False`` if there's an expiry date. Use
+ ``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry
+ date/age, if there is one.
+ """
+ if self.get('_session_expiry') is None:
+ return settings.SESSION_EXPIRE_AT_BROWSER_CLOSE
+ return self.get('_session_expiry') == 0
+
+ def flush(self):
+ """
+ Removes the current session data from the database and regenerates the
+ key.
+ """
+ self.clear()
+ self.delete()
+ self.create()
+
+ def cycle_key(self):
+ """
+ Creates a new session key, whilst retaining the current session data.
+ """
+ data = self._session_cache
+ key = self.session_key
+ self.create()
+ self._session_cache = data
+ self.delete(key)
+
+ # Methods that child classes must implement.
+
+ def exists(self, session_key):
+ """
+ Returns True if the given session_key already exists.
+ """
+ raise NotImplementedError
+
+ def create(self):
+ """
+ Creates a new session instance. Guaranteed to create a new object with
+ a unique key and will have saved the result once (with empty data)
+ before the method returns.
+ """
+ raise NotImplementedError
+
+ def save(self, must_create=False):
+ """
+ Saves the session data. If 'must_create' is True, a new session object
+ is created (otherwise a CreateError exception is raised). Otherwise,
+ save() can update an existing object with the same key.
+ """
+ raise NotImplementedError
+
+ def delete(self, session_key=None):
+ """
+ Deletes the session data under this key. If the key is None, the
+ current session key value is used.
+ """
+ raise NotImplementedError
+
+ def load(self):
+ """
+ Loads the session data and returns a dictionary.
+ """
+ raise NotImplementedError
+
+ @classmethod
+ def clear_expired(cls):
+ """
+ Remove expired sessions from the session store.
+
+ If this operation isn't possible on a given backend, it should raise
+ NotImplementedError. If it isn't necessary, because the backend has
+ a built-in expiration mechanism, it should be a no-op.
+ """
+ raise NotImplementedError
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
new file mode 100644
index 0000000..596042f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
@@ -0,0 +1,74 @@
+from django.conf import settings
+from django.contrib.sessions.backends.base import SessionBase, CreateError
+from django.core.cache import get_cache
+from django.utils.six.moves import xrange
+
+KEY_PREFIX = "django.contrib.sessions.cache"
+
+
+class SessionStore(SessionBase):
+ """
+ A cache-based session store.
+ """
+ def __init__(self, session_key=None):
+ self._cache = get_cache(settings.SESSION_CACHE_ALIAS)
+ super(SessionStore, self).__init__(session_key)
+
+ @property
+ def cache_key(self):
+ return KEY_PREFIX + self._get_or_create_session_key()
+
+ def load(self):
+ try:
+ session_data = self._cache.get(self.cache_key, None)
+ except Exception:
+ # Some backends (e.g. memcache) raise an exception on invalid
+ # cache keys. If this happens, reset the session. See #17810.
+ session_data = None
+ if session_data is not None:
+ return session_data
+ self.create()
+ return {}
+
+ def create(self):
+ # Because a cache can fail silently (e.g. memcache), we don't know if
+ # we are failing to create a new session because of a key collision or
+ # because the cache is missing. So we try for a (large) number of times
+ # and then raise an exception. That's the risk you shoulder if using
+ # cache backing.
+ for i in xrange(10000):
+ self._session_key = self._get_new_session_key()
+ try:
+ self.save(must_create=True)
+ except CreateError:
+ continue
+ self.modified = True
+ return
+ raise RuntimeError(
+ "Unable to create a new session key. "
+ "It is likely that the cache is unavailable.")
+
+ def save(self, must_create=False):
+ if must_create:
+ func = self._cache.add
+ else:
+ func = self._cache.set
+ result = func(self.cache_key,
+ self._get_session(no_load=must_create),
+ self.get_expiry_age())
+ if must_create and not result:
+ raise CreateError
+
+ def exists(self, session_key):
+ return (KEY_PREFIX + session_key) in self._cache
+
+ def delete(self, session_key=None):
+ if session_key is None:
+ if self.session_key is None:
+ return
+ session_key = self.session_key
+ self._cache.delete(KEY_PREFIX + session_key)
+
+ @classmethod
+ def clear_expired(cls):
+ pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py
new file mode 100644
index 0000000..be22c1f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py
@@ -0,0 +1,84 @@
+"""
+Cached, database-backed sessions.
+"""
+
+import logging
+
+from django.contrib.sessions.backends.db import SessionStore as DBStore
+from django.core.cache import cache
+from django.core.exceptions import SuspiciousOperation
+from django.utils import timezone
+from django.utils.encoding import force_text
+
+KEY_PREFIX = "django.contrib.sessions.cached_db"
+
+
+class SessionStore(DBStore):
+ """
+ Implements cached, database backed sessions.
+ """
+
+ def __init__(self, session_key=None):
+ super(SessionStore, self).__init__(session_key)
+
+ @property
+ def cache_key(self):
+ return KEY_PREFIX + self._get_or_create_session_key()
+
+ def load(self):
+ try:
+ data = cache.get(self.cache_key, None)
+ except Exception:
+ # Some backends (e.g. memcache) raise an exception on invalid
+ # cache keys. If this happens, reset the session. See #17810.
+ data = None
+
+ if data is None:
+ # Duplicate DBStore.load, because we need to keep track
+ # of the expiry date to set it properly in the cache.
+ try:
+ s = Session.objects.get(
+ session_key=self.session_key,
+ expire_date__gt=timezone.now()
+ )
+ data = self.decode(s.session_data)
+ cache.set(self.cache_key, data,
+ self.get_expiry_age(expiry=s.expire_date))
+ except (Session.DoesNotExist, SuspiciousOperation) as e:
+ if isinstance(e, SuspiciousOperation):
+ logger = logging.getLogger('django.security.%s' %
+ e.__class__.__name__)
+ logger.warning(force_text(e))
+ self.create()
+ data = {}
+ return data
+
+ def exists(self, session_key):
+ if (KEY_PREFIX + session_key) in cache:
+ return True
+ return super(SessionStore, self).exists(session_key)
+
+ def save(self, must_create=False):
+ super(SessionStore, self).save(must_create)
+ cache.set(self.cache_key, self._session, self.get_expiry_age())
+
+ def delete(self, session_key=None):
+ super(SessionStore, self).delete(session_key)
+ if session_key is None:
+ if self.session_key is None:
+ return
+ session_key = self.session_key
+ cache.delete(KEY_PREFIX + session_key)
+
+ def flush(self):
+ """
+ Removes the current session data from the database and regenerates the
+ key.
+ """
+ self.clear()
+ self.delete(self.session_key)
+ self.create()
+
+
+# At bottom to avoid circular import
+from django.contrib.sessions.models import Session
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py
new file mode 100644
index 0000000..7be99c3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py
@@ -0,0 +1,85 @@
+import logging
+
+from django.contrib.sessions.backends.base import SessionBase, CreateError
+from django.core.exceptions import SuspiciousOperation
+from django.db import IntegrityError, transaction, router
+from django.utils import timezone
+from django.utils.encoding import force_text
+
+class SessionStore(SessionBase):
+ """
+ Implements database session store.
+ """
+ def __init__(self, session_key=None):
+ super(SessionStore, self).__init__(session_key)
+
+ def load(self):
+ try:
+ s = Session.objects.get(
+ session_key=self.session_key,
+ expire_date__gt=timezone.now()
+ )
+ return self.decode(s.session_data)
+ except (Session.DoesNotExist, SuspiciousOperation) as e:
+ if isinstance(e, SuspiciousOperation):
+ logger = logging.getLogger('django.security.%s' %
+ e.__class__.__name__)
+ logger.warning(force_text(e))
+ self.create()
+ return {}
+
+ def exists(self, session_key):
+ return Session.objects.filter(session_key=session_key).exists()
+
+ def create(self):
+ while True:
+ self._session_key = self._get_new_session_key()
+ try:
+ # Save immediately to ensure we have a unique entry in the
+ # database.
+ self.save(must_create=True)
+ except CreateError:
+ # Key wasn't unique. Try again.
+ continue
+ self.modified = True
+ self._session_cache = {}
+ return
+
+ def save(self, must_create=False):
+ """
+ Saves the current session data to the database. If 'must_create' is
+ True, a database error will be raised if the saving operation doesn't
+ create a *new* entry (as opposed to possibly updating an existing
+ entry).
+ """
+ obj = Session(
+ session_key=self._get_or_create_session_key(),
+ session_data=self.encode(self._get_session(no_load=must_create)),
+ expire_date=self.get_expiry_date()
+ )
+ using = router.db_for_write(Session, instance=obj)
+ try:
+ with transaction.atomic(using=using):
+ obj.save(force_insert=must_create, using=using)
+ except IntegrityError:
+ if must_create:
+ raise CreateError
+ raise
+
+ def delete(self, session_key=None):
+ if session_key is None:
+ if self.session_key is None:
+ return
+ session_key = self.session_key
+ try:
+ Session.objects.get(session_key=session_key).delete()
+ except Session.DoesNotExist:
+ pass
+
+ @classmethod
+ def clear_expired(cls):
+ Session.objects.filter(expire_date__lt=timezone.now()).delete()
+
+
+# At bottom to avoid circular import
+from django.contrib.sessions.models import Session
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py
new file mode 100644
index 0000000..f47aa2d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py
@@ -0,0 +1,202 @@
+import datetime
+import errno
+import logging
+import os
+import shutil
+import tempfile
+
+from django.conf import settings
+from django.contrib.sessions.backends.base import SessionBase, CreateError, VALID_KEY_CHARS
+from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
+from django.utils import timezone
+from django.utils.encoding import force_text
+
+from django.contrib.sessions.exceptions import InvalidSessionKey
+
+class SessionStore(SessionBase):
+ """
+ Implements a file based session store.
+ """
+ def __init__(self, session_key=None):
+ self.storage_path = type(self)._get_storage_path()
+ self.file_prefix = settings.SESSION_COOKIE_NAME
+ super(SessionStore, self).__init__(session_key)
+
+ @classmethod
+ def _get_storage_path(cls):
+ try:
+ return cls._storage_path
+ except AttributeError:
+ storage_path = getattr(settings, "SESSION_FILE_PATH", None)
+ if not storage_path:
+ storage_path = tempfile.gettempdir()
+
+ # Make sure the storage path is valid.
+ if not os.path.isdir(storage_path):
+ raise ImproperlyConfigured(
+ "The session storage path %r doesn't exist. Please set your"
+ " SESSION_FILE_PATH setting to an existing directory in which"
+ " Django can store session data." % storage_path)
+
+ cls._storage_path = storage_path
+ return storage_path
+
+ def _key_to_file(self, session_key=None):
+ """
+ Get the file associated with this session key.
+ """
+ if session_key is None:
+ session_key = self._get_or_create_session_key()
+
+ # Make sure we're not vulnerable to directory traversal. Session keys
+ # should always be md5s, so they should never contain directory
+ # components.
+ if not set(session_key).issubset(set(VALID_KEY_CHARS)):
+ raise InvalidSessionKey(
+ "Invalid characters in session key")
+
+ return os.path.join(self.storage_path, self.file_prefix + session_key)
+
+ def _last_modification(self):
+ """
+ Return the modification time of the file storing the session's content.
+ """
+ modification = os.stat(self._key_to_file()).st_mtime
+ if settings.USE_TZ:
+ modification = datetime.datetime.utcfromtimestamp(modification)
+ modification = modification.replace(tzinfo=timezone.utc)
+ else:
+ modification = datetime.datetime.fromtimestamp(modification)
+ return modification
+
+ def load(self):
+ session_data = {}
+ try:
+ with open(self._key_to_file(), "rb") as session_file:
+ file_data = session_file.read()
+ # Don't fail if there is no data in the session file.
+ # We may have opened the empty placeholder file.
+ if file_data:
+ try:
+ session_data = self.decode(file_data)
+ except (EOFError, SuspiciousOperation) as e:
+ if isinstance(e, SuspiciousOperation):
+ logger = logging.getLogger('django.security.%s' %
+ e.__class__.__name__)
+ logger.warning(force_text(e))
+ self.create()
+
+ # Remove expired sessions.
+ expiry_age = self.get_expiry_age(
+ modification=self._last_modification(),
+ expiry=session_data.get('_session_expiry'))
+ if expiry_age < 0:
+ session_data = {}
+ self.delete()
+ self.create()
+ except (IOError, SuspiciousOperation):
+ self.create()
+ return session_data
+
+ def create(self):
+ while True:
+ self._session_key = self._get_new_session_key()
+ try:
+ self.save(must_create=True)
+ except CreateError:
+ continue
+ self.modified = True
+ self._session_cache = {}
+ return
+
+ def save(self, must_create=False):
+ # Get the session data now, before we start messing
+ # with the file it is stored within.
+ session_data = self._get_session(no_load=must_create)
+
+ session_file_name = self._key_to_file()
+
+ try:
+ # Make sure the file exists. If it does not already exist, an
+ # empty placeholder file is created.
+ flags = os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0)
+ if must_create:
+ flags |= os.O_EXCL
+ fd = os.open(session_file_name, flags)
+ os.close(fd)
+
+ except OSError as e:
+ if must_create and e.errno == errno.EEXIST:
+ raise CreateError
+ raise
+
+ # Write the session file without interfering with other threads
+ # or processes. By writing to an atomically generated temporary
+ # file and then using the atomic os.rename() to make the complete
+ # file visible, we avoid having to lock the session file, while
+ # still maintaining its integrity.
+ #
+ # Note: Locking the session file was explored, but rejected in part
+ # because in order to be atomic and cross-platform, it required a
+ # long-lived lock file for each session, doubling the number of
+ # files in the session storage directory at any given time. This
+ # rename solution is cleaner and avoids any additional overhead
+ # when reading the session data, which is the more common case
+ # unless SESSION_SAVE_EVERY_REQUEST = True.
+ #
+ # See ticket #8616.
+ dir, prefix = os.path.split(session_file_name)
+
+ try:
+ output_file_fd, output_file_name = tempfile.mkstemp(dir=dir,
+ prefix=prefix + '_out_')
+ renamed = False
+ try:
+ try:
+ os.write(output_file_fd, self.encode(session_data).encode())
+ finally:
+ os.close(output_file_fd)
+
+ # This will atomically rename the file (os.rename) if the OS
+ # supports it. Otherwise this will result in a shutil.copy2
+ # and os.unlink (for example on Windows). See #9084.
+ shutil.move(output_file_name, session_file_name)
+ renamed = True
+ finally:
+ if not renamed:
+ os.unlink(output_file_name)
+
+ except (OSError, IOError, EOFError):
+ pass
+
+ def exists(self, session_key):
+ return os.path.exists(self._key_to_file(session_key))
+
+ def delete(self, session_key=None):
+ if session_key is None:
+ if self.session_key is None:
+ return
+ session_key = self.session_key
+ try:
+ os.unlink(self._key_to_file(session_key))
+ except OSError:
+ pass
+
+ def clean(self):
+ pass
+
+ @classmethod
+ def clear_expired(cls):
+ storage_path = cls._get_storage_path()
+ file_prefix = settings.SESSION_COOKIE_NAME
+
+ for session_file in os.listdir(storage_path):
+ if not session_file.startswith(file_prefix):
+ continue
+ session_key = session_file[len(file_prefix):]
+ session = cls(session_key)
+ # When an expired session is loaded, its file is removed, and a
+ # new file is immediately created. Prevent this by disabling
+ # the create() method.
+ session.create = lambda: None
+ session.load()
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py
new file mode 100644
index 0000000..77a6750
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py
@@ -0,0 +1,81 @@
+from django.conf import settings
+from django.core import signing
+
+from django.contrib.sessions.backends.base import SessionBase
+
+
+class SessionStore(SessionBase):
+
+ def load(self):
+ """
+ We load the data from the key itself instead of fetching from
+ some external data store. Opposite of _get_session_key(),
+ raises BadSignature if signature fails.
+ """
+ try:
+ return signing.loads(self.session_key,
+ serializer=self.serializer,
+ # This doesn't handle non-default expiry dates, see #19201
+ max_age=settings.SESSION_COOKIE_AGE,
+ salt='django.contrib.sessions.backends.signed_cookies')
+ except (signing.BadSignature, ValueError):
+ self.create()
+ return {}
+
+ def create(self):
+ """
+ To create a new key, we simply make sure that the modified flag is set
+ so that the cookie is set on the client for the current request.
+ """
+ self.modified = True
+
+ def save(self, must_create=False):
+ """
+ To save, we get the session key as a securely signed string and then
+ set the modified flag so that the cookie is set on the client for the
+ current request.
+ """
+ self._session_key = self._get_session_key()
+ self.modified = True
+
+ def exists(self, session_key=None):
+ """
+ This method makes sense when you're talking to a shared resource, but
+ it doesn't matter when you're storing the information in the client's
+ cookie.
+ """
+ return False
+
+ def delete(self, session_key=None):
+ """
+ To delete, we clear the session key and the underlying data structure
+ and set the modified flag so that the cookie is set on the client for
+ the current request.
+ """
+ self._session_key = ''
+ self._session_cache = {}
+ self.modified = True
+
+ def cycle_key(self):
+ """
+ Keeps the same data but with a new key. To do this, we just have to
+ call ``save()`` and it will automatically save a cookie with a new key
+ at the end of the request.
+ """
+ self.save()
+
+ def _get_session_key(self):
+ """
+ Most session backends don't need to override this method, but we do,
+ because instead of generating a random string, we want to actually
+ generate a secure url-safe Base64-encoded string of data as our
+ session key.
+ """
+ session_cache = getattr(self, '_session_cache', {})
+ return signing.dumps(session_cache, compress=True,
+ salt='django.contrib.sessions.backends.signed_cookies',
+ serializer=self.serializer)
+
+ @classmethod
+ def clear_expired(cls):
+ pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py b/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py
new file mode 100644
index 0000000..4f4dc6b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py
@@ -0,0 +1,11 @@
+from django.core.exceptions import SuspiciousOperation
+
+
+class InvalidSessionKey(SuspiciousOperation):
+ """Invalid characters in session key"""
+ pass
+
+
+class SuspiciousSession(SuspiciousOperation):
+ """The session may be tampered with"""
+ pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..7c38bd1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
new file mode 100644
index 0000000..3cec536
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
+"ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "مفتاح الجلسة"
+
+#: models.py:40
+msgid "session data"
+msgstr "بيانات الجلسة"
+
+#: models.py:41
+msgid "expire date"
+msgstr "تاريخ الانتهاء"
+
+#: models.py:46
+msgid "session"
+msgstr "جلسة"
+
+#: models.py:47
+msgid "sessions"
+msgstr "جلسات"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..cf39085
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po
new file mode 100644
index 0000000..708f70a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Ali Ismayilov <ali@ismailov.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
+"language/az/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: az\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "seans açarı"
+
+#: models.py:40
+msgid "session data"
+msgstr "seansın verilənləri"
+
+#: models.py:41
+msgid "expire date"
+msgstr "bitmə tarixi"
+
+#: models.py:46
+msgid "session"
+msgstr "seans"
+
+#: models.py:47
+msgid "sessions"
+msgstr "seanslar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..509d895
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po
new file mode 100644
index 0000000..10d26ce
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
+"language/be/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ключ сэансу"
+
+#: models.py:40
+msgid "session data"
+msgstr "зьвесткі сэансу"
+
+#: models.py:41
+msgid "expire date"
+msgstr "тэрмін"
+
+#: models.py:46
+msgid "session"
+msgstr "сэсія"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сэсіі"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..344176c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
new file mode 100644
index 0000000..b813072
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
+"language/bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ключ на сесията"
+
+#: models.py:40
+msgid "session data"
+msgstr "данни от сесията"
+
+#: models.py:41
+msgid "expire date"
+msgstr "дата на валидност"
+
+#: models.py:46
+msgid "session"
+msgstr "сесия"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сесии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..3c17f51
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
new file mode 100644
index 0000000..03760cd
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
+"bn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "সেশন কি"
+
+#: models.py:40
+msgid "session data"
+msgstr "সেশন ডাটা"
+
+#: models.py:41
+msgid "expire date"
+msgstr "মেয়াদ শেষের তারিখ"
+
+#: models.py:46
+msgid "session"
+msgstr "সেশন"
+
+#: models.py:47
+msgid "sessions"
+msgstr "সেশনসমূহ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ee01384
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po
new file mode 100644
index 0000000..dd58d7c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Fulup <fulup.jakez@gmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
+"br/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: br\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr ""
+
+#: models.py:40
+msgid "session data"
+msgstr ""
+
+#: models.py:41
+msgid "expire date"
+msgstr ""
+
+#: models.py:46
+msgid "session"
+msgstr "dalc'h"
+
+#: models.py:47
+msgid "sessions"
+msgstr "dalc'hoù"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..eb34716
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
new file mode 100644
index 0000000..54c1773
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
+"bs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bs\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ključ sesije"
+
+#: models.py:40
+msgid "session data"
+msgstr "podaci sesije"
+
+#: models.py:41
+msgid "expire date"
+msgstr "datum isteka"
+
+#: models.py:46
+msgid "session"
+msgstr "sesija"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesije"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..a9ac201
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9d3c074
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/"
+"ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "clau de la sessió"
+
+#: models.py:40
+msgid "session data"
+msgstr "dades de la sessió"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data de caducitat"
+
+#: models.py:46
+msgid "session"
+msgstr "sessió"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..63f055b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
new file mode 100644
index 0000000..6f658ba
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/"
+"cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "klíč sezení"
+
+#: models.py:40
+msgid "session data"
+msgstr "data sezení"
+
+#: models.py:41
+msgid "expire date"
+msgstr "datum expirace"
+
+#: models.py:46
+msgid "session"
+msgstr "sezení"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sezení"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..492bea5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
new file mode 100644
index 0000000..4c00d20
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
@@ -0,0 +1,40 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-10-12 20:30+0000\n"
+"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
+"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
+"cy/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cy\n"
+"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
+"11) ? 2 : 3;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "allwedd sesiwn"
+
+#: models.py:40
+msgid "session data"
+msgstr "data sesiwn"
+
+#: models.py:41
+msgid "expire date"
+msgstr "dyddiad terfyn"
+
+#: models.py:46
+msgid "session"
+msgstr "sesiwn"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesiynau"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..c87df41
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po
new file mode 100644
index 0000000..d984409
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
+"da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sessionsnøgle"
+
+#: models.py:40
+msgid "session data"
+msgstr "sessionsdata"
+
+#: models.py:41
+msgid "expire date"
+msgstr "udløbsdato"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessioner"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..4389286
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9053f64
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-06-14 15:04+0000\n"
+"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
+"Language-Team: German (http://www.transifex.com/projects/p/django/language/"
+"de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "Sitzungs-ID"
+
+#: models.py:40
+msgid "session data"
+msgstr "Sitzungsdaten"
+
+#: models.py:41
+msgid "expire date"
+msgstr "Verfallsdatum"
+
+#: models.py:46
+msgid "session"
+msgstr "Sitzung"
+
+#: models.py:47
+msgid "sessions"
+msgstr "Sitzungen"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..a208689
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po
new file mode 100644
index 0000000..71e78fc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
+"el/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "κλειδί συνεδρίας"
+
+#: models.py:40
+msgid "session data"
+msgstr "δεδομένα συνεδρίας"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ημερομηνία λήξης"
+
+#: models.py:46
+msgid "session"
+msgstr "συνεδρία"
+
+#: models.py:47
+msgid "sessions"
+msgstr "συνεδρίες"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..08a7b68
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po
new file mode 100644
index 0000000..247efec
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# This file is distributed under the same license as the Django package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2010-05-13 15:35+0200\n"
+"Last-Translator: Django team\n"
+"Language-Team: English <en@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: models.py:38
+msgid "session key"
+msgstr ""
+
+#: models.py:40
+msgid "session data"
+msgstr ""
+
+#: models.py:41
+msgid "expire date"
+msgstr ""
+
+#: models.py:46
+msgid "session"
+msgstr ""
+
+#: models.py:47
+msgid "sessions"
+msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..3d35f06
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9da9b3e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Ross Poulton <ross@rossp.org>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
+"django/language/en_GB/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en_GB\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "session key"
+
+#: models.py:40
+msgid "session data"
+msgstr "session data"
+
+#: models.py:41
+msgid "expire date"
+msgstr "expire date"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..18b177f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
new file mode 100644
index 0000000..34dbd80
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# kristjan <kristjan.schmidt@googlemail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
+"language/eo/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eo\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "seanco-ŝlosilo"
+
+#: models.py:40
+msgid "session data"
+msgstr "seanco-datumo"
+
+#: models.py:41
+msgid "expire date"
+msgstr "senvalidiĝ-dato"
+
+#: models.py:46
+msgid "session"
+msgstr "seanco"
+
+#: models.py:47
+msgid "sessions"
+msgstr "seancoj"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..91017a2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po
new file mode 100644
index 0000000..994d688
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/"
+"es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "clave de sesión"
+
+#: models.py:40
+msgid "session data"
+msgstr "datos de sesión"
+
+#: models.py:41
+msgid "expire date"
+msgstr "fecha de caducidad"
+
+#: models.py:46
+msgid "session"
+msgstr "sesión"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..50e01d8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
new file mode 100644
index 0000000..de44705
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
+"django/language/es_AR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es_AR\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "clave de sesión"
+
+#: models.py:40
+msgid "session data"
+msgstr "datos de la sesión"
+
+#: models.py:41
+msgid "expire date"
+msgstr "fecha de caducidad"
+
+#: models.py:46
+msgid "session"
+msgstr "sesión"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..d5b9d14
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
new file mode 100644
index 0000000..573e553
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Abraham Estrada <abraham.estrada@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
+"language/es_MX/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es_MX\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "clave de sesión"
+
+#: models.py:40
+msgid "session data"
+msgstr "datos de la sesión"
+
+#: models.py:41
+msgid "expire date"
+msgstr "fecha de caducidad"
+
+#: models.py:46
+msgid "session"
+msgstr "período de sesiones"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..de11baf
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9d86c93
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
+"et/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: et\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sessioonivõti"
+
+#: models.py:40
+msgid "session data"
+msgstr "sessiooni andmed"
+
+#: models.py:41
+msgid "expire date"
+msgstr "kehtivusaja lõpp"
+
+#: models.py:46
+msgid "session"
+msgstr "sessioon"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessioonid"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..0279c14
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
new file mode 100644
index 0000000..5b6fdda
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
+"eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sesioaren giltza"
+
+#: models.py:40
+msgid "session data"
+msgstr "sesioaren data"
+
+#: models.py:41
+msgid "expire date"
+msgstr "amaiera data"
+
+#: models.py:46
+msgid "session"
+msgstr "sesioa"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesioak"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ed81930
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
new file mode 100644
index 0000000..eedb717
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
+"fa/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "کلید نشست"
+
+#: models.py:40
+msgid "session data"
+msgstr "اطلاعات نشست"
+
+#: models.py:41
+msgid "expire date"
+msgstr "تاریخ انقضاء"
+
+#: models.py:46
+msgid "session"
+msgstr "نشست"
+
+#: models.py:47
+msgid "sessions"
+msgstr "نشست‌ها"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..e03f9ab
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
new file mode 100644
index 0000000..bb77893
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/"
+"fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "istunnon avain"
+
+#: models.py:40
+msgid "session data"
+msgstr "istunnon tiedot"
+
+#: models.py:41
+msgid "expire date"
+msgstr "vanhenee"
+
+#: models.py:46
+msgid "session"
+msgstr "istunto"
+
+#: models.py:47
+msgid "sessions"
+msgstr "istunnot"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..08659b3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9a81404
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: French (http://www.transifex.com/projects/p/django/language/"
+"fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "clé de session"
+
+#: models.py:40
+msgid "session data"
+msgstr "données de session"
+
+#: models.py:41
+msgid "expire date"
+msgstr "date d'expiration"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..e65dfaf
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
new file mode 100644
index 0000000..bdb9f3a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# This file is distributed under the same license as the Django package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-03-23 02:43+0100\n"
+"PO-Revision-Date: 2011-03-15 15:45+0000\n"
+"Last-Translator: Django team\n"
+"Language-Team: English <en@li.org>\n"
+"Language: fy_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: models.py:38
+msgid "session key"
+msgstr ""
+
+#: models.py:40
+msgid "session data"
+msgstr ""
+
+#: models.py:41
+msgid "expire date"
+msgstr ""
+
+#: models.py:46
+msgid "session"
+msgstr ""
+
+#: models.py:47
+msgid "sessions"
+msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..5dc8b10
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
new file mode 100644
index 0000000..8176ce9
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
+"ga/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ga\n"
+"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
+"4);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "eochair an seisiún"
+
+#: models.py:40
+msgid "session data"
+msgstr "sonraíocht an seisiún"
+
+#: models.py:41
+msgid "expire date"
+msgstr "Data dul as feidhm"
+
+#: models.py:46
+msgid "session"
+msgstr "seisiún"
+
+#: models.py:47
+msgid "sessions"
+msgstr "seisúin"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..1d5d44a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
new file mode 100644
index 0000000..20bcc16
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-09-07 11:26+0000\n"
+"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
+"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
+"gl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "chave da sesión"
+
+#: models.py:40
+msgid "session data"
+msgstr "datos da sesión"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data de caducidade"
+
+#: models.py:46
+msgid "session"
+msgstr "sesión"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesións"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..08947ae
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po
new file mode 100644
index 0000000..3b90a8e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/"
+"he/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "מפתח התחברות (session key)"
+
+#: models.py:40
+msgid "session data"
+msgstr "מידע התחברות (session data)"
+
+#: models.py:41
+msgid "expire date"
+msgstr "תאריך פג תוקף"
+
+#: models.py:46
+msgid "session"
+msgstr "התחברות"
+
+#: models.py:47
+msgid "sessions"
+msgstr "התחברויות"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..b860f5a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
new file mode 100644
index 0000000..d78c18d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Sandeep Satavlekar <sandysat@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
+"hi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "सत्र कुंजी"
+
+#: models.py:40
+msgid "session data"
+msgstr "सत्र सामग्री"
+
+#: models.py:41
+msgid "expire date"
+msgstr "समाप्ति तिथी"
+
+#: models.py:46
+msgid "session"
+msgstr "सत्र"
+
+#: models.py:47
+msgid "sessions"
+msgstr "सत्रें"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..03c432d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
new file mode 100644
index 0000000..ed70179
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
+"hr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hr\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "session ključ (key)"
+
+#: models.py:40
+msgid "session data"
+msgstr "session podaci"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ističe na datum"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..e91adad
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
new file mode 100644
index 0000000..d305166
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
+"language/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "munkamenet kulcs"
+
+#: models.py:40
+msgid "session data"
+msgstr "munkamenet adat"
+
+#: models.py:41
+msgid "expire date"
+msgstr "lejárat dátuma"
+
+#: models.py:46
+msgid "session"
+msgstr "munkamenet"
+
+#: models.py:47
+msgid "sessions"
+msgstr "munkamenetek"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..1ab5640
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po
new file mode 100644
index 0000000..5d1415b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# rodin <romihardiyanto@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
+"language/id/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "kunci sesi"
+
+#: models.py:40
+msgid "session data"
+msgstr "data sesi"
+
+#: models.py:41
+msgid "expire date"
+msgstr "tanggal kedaluwarsa"
+
+#: models.py:46
+msgid "session"
+msgstr "sesi"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesi"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..cdfa89c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po
new file mode 100644
index 0000000..a1123c6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
+"language/is/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: is\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "setulykill"
+
+#: models.py:40
+msgid "session data"
+msgstr "setugögn"
+
+#: models.py:41
+msgid "expire date"
+msgstr "fyrningardagsetning"
+
+#: models.py:46
+msgid "session"
+msgstr "seta"
+
+#: models.py:47
+msgid "sessions"
+msgstr "setur"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..a2d6aff
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po
new file mode 100644
index 0000000..3e6d92a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/"
+"it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "chiave di sessione"
+
+#: models.py:40
+msgid "session data"
+msgstr "dati di sessione"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data di scadenza"
+
+#: models.py:46
+msgid "session"
+msgstr "sessione"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessioni"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..d348b54
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
new file mode 100644
index 0000000..dcd0a59
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
+"ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "セッションキー"
+
+#: models.py:40
+msgid "session data"
+msgstr "セッションデータ"
+
+#: models.py:41
+msgid "expire date"
+msgstr "有効期限"
+
+#: models.py:46
+msgid "session"
+msgstr "セッション"
+
+#: models.py:47
+msgid "sessions"
+msgstr "セッション"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..dbe8483
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
new file mode 100644
index 0000000..2d3ea0d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
+"ka/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ka\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "სესიის გასაღები"
+
+#: models.py:40
+msgid "session data"
+msgstr "სესიის მონაცემები"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ამოწურვის თარიღი"
+
+#: models.py:46
+msgid "session"
+msgstr "სესია"
+
+#: models.py:47
+msgid "sessions"
+msgstr "სესიები"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..76fee80
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
new file mode 100644
index 0000000..b352559
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# yun_man_ger <germanilyin@gmail.com>, 2011
+# Zhazira <zhazira.mt@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
+"kk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: kk\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "сессия кілті"
+
+#: models.py:40
+msgid "session data"
+msgstr "сессия деректері"
+
+#: models.py:41
+msgid "expire date"
+msgstr "істен шығу уақыты"
+
+#: models.py:46
+msgid "session"
+msgstr "сессия"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сессиялар"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..e84bd60
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po
new file mode 100644
index 0000000..ac772ec
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
+"km/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: km\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "លេខសំគាល់​រយះពេល​ពិនិត្យ​ចូល"
+
+#: models.py:40
+msgid "session data"
+msgstr "ទិន្នន័យរយះពេល​ពិនិត្យ​ចូល"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ហួសពេលកំណត់"
+
+#: models.py:46
+msgid "session"
+msgstr "រយះពេល​ពិនិត្យ​ចូល"
+
+#: models.py:47
+msgid "sessions"
+msgstr "រយះពេល​ពិនិត្យ​ចូល"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..c63cf3c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
new file mode 100644
index 0000000..1ba6ac7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
+"kn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: kn\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ಅಧಿವೇಶನದ ಕೀಲಿಕೈ"
+
+#: models.py:40
+msgid "session data"
+msgstr "ಅಧಿವೇಶನದ ದತ್ತಾಂಶ"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ಅವಧಿಮೀರುವ ದಿನಾಂಕ"
+
+#: models.py:46
+msgid "session"
+msgstr "ಅಧಿವೇಶನ"
+
+#: models.py:47
+msgid "sessions"
+msgstr "ಅಧಿವೇಶನಗಳು"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ca0a126
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
new file mode 100644
index 0000000..7f7486d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
+"ko/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ko\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "세션 키"
+
+#: models.py:40
+msgid "session data"
+msgstr "세션 날짜"
+
+#: models.py:41
+msgid "expire date"
+msgstr "유효날짜"
+
+#: models.py:46
+msgid "session"
+msgstr "세션"
+
+#: models.py:47
+msgid "sessions"
+msgstr "세션"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..6510350
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
new file mode 100644
index 0000000..2be20d7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
+"language/lt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lt\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sesijos raktas"
+
+#: models.py:40
+msgid "session data"
+msgstr "sesijos data"
+
+#: models.py:41
+msgid "expire date"
+msgstr "galiojima data"
+
+#: models.py:46
+msgid "session"
+msgstr "sesija"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesijos"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..94c6def
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
new file mode 100644
index 0000000..8769b3f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
+"lv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lv\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sesijas atslēga"
+
+#: models.py:40
+msgid "session data"
+msgstr "sesijas dati"
+
+#: models.py:41
+msgid "expire date"
+msgstr "izbeigšanās datums"
+
+#: models.py:46
+msgid "session"
+msgstr "sesija"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesijas"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..38a7b64
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
new file mode 100644
index 0000000..ec0b0ab
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
+"language/mk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mk\n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "клуч на сесијата"
+
+#: models.py:40
+msgid "session data"
+msgstr "податоци од сесијата"
+
+#: models.py:41
+msgid "expire date"
+msgstr "датум на истекување"
+
+#: models.py:46
+msgid "session"
+msgstr "сесија"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сесии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..f47700d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
new file mode 100644
index 0000000..c90536f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
+"language/ml/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ml\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "സെഷന്‍ കീ"
+
+#: models.py:40
+msgid "session data"
+msgstr "സെഷന്‍ വിവരം"
+
+#: models.py:41
+msgid "expire date"
+msgstr "കാലാവധി (തീയതി)"
+
+#: models.py:46
+msgid "session"
+msgstr "സെഷന്‍"
+
+#: models.py:47
+msgid "sessions"
+msgstr "സെഷനുകള്‍"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..f17e05f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
new file mode 100644
index 0000000..2c53c39
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
+"language/mn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "session түлхүүр"
+
+#: models.py:40
+msgid "session data"
+msgstr "session өгөгдөл"
+
+#: models.py:41
+msgid "expire date"
+msgstr "дуусах хугацаа"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "session-ууд"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..00367e7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po
new file mode 100644
index 0000000..e7a0cc5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Yhal Htet Aung <jumoun@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-05-01 13:20+0000\n"
+"Last-Translator: Yhal Htet Aung <jumoun@gmail.com>\n"
+"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
+"my/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: my\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ကြားကာလသော့"
+
+#: models.py:40
+msgid "session data"
+msgstr "ကြားကာလအချက်အလက်"
+
+#: models.py:41
+msgid "expire date"
+msgstr "သက်တမ်းကုန်နေ့စွဲ"
+
+#: models.py:46
+msgid "session"
+msgstr "ကြားကာလ"
+
+#: models.py:47
+msgid "sessions"
+msgstr "ကြားကာလများ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..535f3de
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
new file mode 100644
index 0000000..64751ea
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# jonklo <jonklo@gmail.com>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
+"language/nb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "øktnøkkel"
+
+#: models.py:40
+msgid "session data"
+msgstr "øktdata"
+
+#: models.py:41
+msgid "expire date"
+msgstr "utløpsdato"
+
+#: models.py:46
+msgid "session"
+msgstr "økt"
+
+#: models.py:47
+msgid "sessions"
+msgstr "økter"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..8170c51
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
new file mode 100644
index 0000000..e6c35f3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
+# Sagar Chalise <chalisesagar@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
+"ne/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ne\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "अवधि साँचो"
+
+#: models.py:40
+msgid "session data"
+msgstr "अवधि विवरण"
+
+#: models.py:41
+msgid "expire date"
+msgstr "खारेज मिति"
+
+#: models.py:46
+msgid "session"
+msgstr "अवधि"
+
+#: models.py:47
+msgid "sessions"
+msgstr "अवधिहरु"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..27c6da2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
new file mode 100644
index 0000000..34f90f5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/"
+"nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sessiesleutel"
+
+#: models.py:40
+msgid "session data"
+msgstr "sessiegegevens"
+
+#: models.py:41
+msgid "expire date"
+msgstr "verloopdatum"
+
+#: models.py:46
+msgid "session"
+msgstr "sessie"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessies"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..e96bcf4
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
new file mode 100644
index 0000000..0e6edec
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
+"language/nn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sesjonsnøkkel"
+
+#: models.py:40
+msgid "session data"
+msgstr "sesjonsdata"
+
+#: models.py:41
+msgid "expire date"
+msgstr "utløpsdato"
+
+#: models.py:46
+msgid "session"
+msgstr "sesjon"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesjonar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..a668d7d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9f310fe
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Soslan Khubulov <soslanx@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-05-09 05:36+0000\n"
+"Last-Translator: Soslan Khubulov <soslanx@gmail.com>\n"
+"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
+"os/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: os\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "сессийы амонӕн"
+
+#: models.py:40
+msgid "session data"
+msgstr "сессийы рардтӕ"
+
+#: models.py:41
+msgid "expire date"
+msgstr "фӕуды афон"
+
+#: models.py:46
+msgid "session"
+msgstr "сесси"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сесситӕ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..0a5a584
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
new file mode 100644
index 0000000..15a337a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
+"language/pa/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pa\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ਸ਼ੈਸ਼ਨ ਕੁੰਜੀ"
+
+#: models.py:40
+msgid "session data"
+msgstr "ਸ਼ੈਸ਼ਨ ਡਾਟਾ"
+
+#: models.py:41
+msgid "expire date"
+msgstr "ਮਿਆਦ ਮਿਤੀ"
+
+#: models.py:46
+msgid "session"
+msgstr "ਸ਼ੈਸ਼ਨ"
+
+#: models.py:47
+msgid "sessions"
+msgstr "ਸ਼ੈਸ਼ਨ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..4c54db6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
new file mode 100644
index 0000000..fd37dc3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/"
+"pl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "klucz sesji"
+
+#: models.py:40
+msgid "session data"
+msgstr "data sesji"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data wygaśnięcia sesji"
+
+#: models.py:46
+msgid "session"
+msgstr "sesja"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesje"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..5c38b9c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
new file mode 100644
index 0000000..14ef30c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-10-31 16:10+0000\n"
+"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
+"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
+"language/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "chave da sessão"
+
+#: models.py:40
+msgid "session data"
+msgstr "dados da sessão"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data de expiração"
+
+#: models.py:46
+msgid "session"
+msgstr "sessão"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessões"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..0ebd533
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
new file mode 100644
index 0000000..1c7a594
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
+"django/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "chave da sessão"
+
+#: models.py:40
+msgid "session data"
+msgstr "dados da sessão"
+
+#: models.py:41
+msgid "expire date"
+msgstr "data de expiração"
+
+#: models.py:46
+msgid "session"
+msgstr "sessão"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessões"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..d78e553
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
new file mode 100644
index 0000000..662614d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
@@ -0,0 +1,40 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
+"ro/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
+"2:1));\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "cheie sesiune"
+
+#: models.py:40
+msgid "session data"
+msgstr "date sesiune"
+
+#: models.py:41
+msgid "expire date"
+msgstr "dată expirare"
+
+#: models.py:46
+msgid "session"
+msgstr "sesiune"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesiuni"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..56b624a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
new file mode 100644
index 0000000..d58b905
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
+"ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ключ сессии"
+
+#: models.py:40
+msgid "session data"
+msgstr "данные сессии"
+
+#: models.py:41
+msgid "expire date"
+msgstr "дата окончания"
+
+#: models.py:46
+msgid "session"
+msgstr "сессия"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сессии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..761da6a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
new file mode 100644
index 0000000..bc2d0dc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/"
+"sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "kľúč relácie"
+
+#: models.py:40
+msgid "session data"
+msgstr "údaje relácie"
+
+#: models.py:41
+msgid "expire date"
+msgstr "dátum vypršania platnosti"
+
+#: models.py:46
+msgid "session"
+msgstr "relácia"
+
+#: models.py:47
+msgid "sessions"
+msgstr "relácie"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..9047bf6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
new file mode 100644
index 0000000..1f9d581
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
+"language/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ključ seje"
+
+#: models.py:40
+msgid "session data"
+msgstr "podatki seje"
+
+#: models.py:41
+msgid "expire date"
+msgstr "čas preteka"
+
+#: models.py:46
+msgid "session"
+msgstr "seja"
+
+#: models.py:47
+msgid "sessions"
+msgstr "seje"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..c6ab86a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
new file mode 100644
index 0000000..c84a5c6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Besnik <besnik@programeshqip.org>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
+"sq/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sq\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "kyç sesioni"
+
+#: models.py:40
+msgid "session data"
+msgstr "të dhëna sesioni"
+
+#: models.py:41
+msgid "expire date"
+msgstr "datë skadimi"
+
+#: models.py:46
+msgid "session"
+msgstr "sesion"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesione"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..55fe225
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
new file mode 100644
index 0000000..02aad14
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
+"sr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sr\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "кључ сесије"
+
+#: models.py:40
+msgid "session data"
+msgstr "подаци сесије"
+
+#: models.py:41
+msgid "expire date"
+msgstr "датум застаревања"
+
+#: models.py:46
+msgid "session"
+msgstr "сесија"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сесије"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..828a5ce
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
new file mode 100644
index 0000000..3ce2724
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
+"language/sr@latin/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sr@latin\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ključ sesije"
+
+#: models.py:40
+msgid "session data"
+msgstr "podaci sesije"
+
+#: models.py:41
+msgid "expire date"
+msgstr "datum zastarevanja"
+
+#: models.py:46
+msgid "session"
+msgstr "sesija"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sesije"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..509b2e9
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
new file mode 100644
index 0000000..b0c4307
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
+"sv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "sessionsnyckel"
+
+#: models.py:40
+msgid "session data"
+msgstr "sessionsdata"
+
+#: models.py:41
+msgid "expire date"
+msgstr "utgångsdatum"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessioner"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ccfd860
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
new file mode 100644
index 0000000..1655a61
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
@@ -0,0 +1,37 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
+"sw/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sw\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ufunguo wa kipindi"
+
+#: models.py:40
+msgid "session data"
+msgstr "data za kipindi"
+
+#: models.py:41
+msgid "expire date"
+msgstr "tarehe ya mwisho ya matumizi"
+
+#: models.py:46
+msgid "session"
+msgstr "kipindi"
+
+#: models.py:47
+msgid "sessions"
+msgstr "vipindi"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..08136cc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
new file mode 100644
index 0000000..10d07a7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
+"ta/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ta\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "அமர்வு குறியீ"
+
+#: models.py:40
+msgid "session data"
+msgstr "அமர்வு தகவல்"
+
+#: models.py:41
+msgid "expire date"
+msgstr "காலாவதியாகும் தேதி"
+
+#: models.py:46
+msgid "session"
+msgstr "அமர்வு"
+
+#: models.py:47
+msgid "sessions"
+msgstr "அமர்வுகள்"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..f04984c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po
new file mode 100644
index 0000000..2d2b1d8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
+"te/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: te\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "భాగము తాళంచెవి"
+
+#: models.py:40
+msgid "session data"
+msgstr "భాగము దత్తం"
+
+#: models.py:41
+msgid "expire date"
+msgstr "కాలం చెల్లు తేది."
+
+#: models.py:46
+msgid "session"
+msgstr "భాగము"
+
+#: models.py:47
+msgid "sessions"
+msgstr "భాగములు"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..67b3bd1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po
new file mode 100644
index 0000000..d39f02b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
+"th/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: th\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "เซสชันคีย์"
+
+#: models.py:40
+msgid "session data"
+msgstr "ข้อมูลเซสชัน"
+
+#: models.py:41
+msgid "expire date"
+msgstr "วันหมดอายุ"
+
+#: models.py:46
+msgid "session"
+msgstr "เซสชัน"
+
+#: models.py:47
+msgid "sessions"
+msgstr "เซสชัน"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..d115d21
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
new file mode 100644
index 0000000..688839a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
+"tr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "oturum anahtarı"
+
+#: models.py:40
+msgid "session data"
+msgstr "oturum bilgisi"
+
+#: models.py:41
+msgid "expire date"
+msgstr "bitiş tarihi"
+
+#: models.py:46
+msgid "session"
+msgstr "oturum"
+
+#: models.py:47
+msgid "sessions"
+msgstr "oturumlar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..a5fe9b5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
new file mode 100644
index 0000000..3fd7931
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
+"tt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tt\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "эш сеансы ачкычы"
+
+#: models.py:40
+msgid "session data"
+msgstr "эш сеансы бирелмәләре"
+
+#: models.py:41
+msgid "expire date"
+msgstr "искерү көне"
+
+#: models.py:46
+msgid "session"
+msgstr "эш сеансы"
+
+#: models.py:47
+msgid "sessions"
+msgstr "эш сеанслары"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..c686c95
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
new file mode 100644
index 0000000..9137ee1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
@@ -0,0 +1,39 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
+"language/uk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: uk\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "ключ сесії"
+
+#: models.py:40
+msgid "session data"
+msgstr "дані сесії"
+
+#: models.py:41
+msgid "expire date"
+msgstr "термін придатності"
+
+#: models.py:46
+msgid "session"
+msgstr "сесія"
+
+#: models.py:47
+msgid "sessions"
+msgstr "сесії"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ecbfc8b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
new file mode 100644
index 0000000..2b2f6b6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
+"ur/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ur\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "کلید نشست"
+
+#: models.py:40
+msgid "session data"
+msgstr "نشست کا ڈیٹا"
+
+#: models.py:41
+msgid "expire date"
+msgstr "مدت ختم ھونے کی تاریخ"
+
+#: models.py:46
+msgid "session"
+msgstr "نشست"
+
+#: models.py:47
+msgid "sessions"
+msgstr "نشستیں"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..39d373c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
new file mode 100644
index 0000000..daa4d98
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
@@ -0,0 +1,40 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+# Lê Thanh <lethanhx2k@gmail.com>, 2013
+# Tran Van <vantxm@yahoo.co.uk>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-05-11 02:19+0000\n"
+"Last-Translator: Lê Thanh <lethanhx2k@gmail.com>\n"
+"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
+"language/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "session key"
+
+#: models.py:40
+msgid "session data"
+msgstr "session data"
+
+#: models.py:41
+msgid "expire date"
+msgstr "Ngày hết hạn"
+
+#: models.py:46
+msgid "session"
+msgstr "Phiên"
+
+#: models.py:47
+msgid "sessions"
+msgstr "session"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..6a8e298
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
new file mode 100644
index 0000000..08ba46c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
+"language/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "会话密钥"
+
+#: models.py:40
+msgid "session data"
+msgstr "会话数据"
+
+#: models.py:41
+msgid "expire date"
+msgstr "过期时间"
+
+#: models.py:46
+msgid "session"
+msgstr "会话"
+
+#: models.py:47
+msgid "sessions"
+msgstr "会话"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..3a12b74
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
new file mode 100644
index 0000000..4ba0863
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# This file is distributed under the same license as the Django package.
+#
+# Translators:
+# Jannis Leidel <jannis@leidel.info>, 2011
+msgid ""
+msgstr ""
+"Project-Id-Version: django-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-05-02 16:18+0200\n"
+"PO-Revision-Date: 2013-04-29 08:25+0000\n"
+"Last-Translator: claudep <claude@2xlibre.net>\n"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
+"language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: models.py:38
+msgid "session key"
+msgstr "session 鍵值"
+
+#: models.py:40
+msgid "session data"
+msgstr "session 資料"
+
+#: models.py:41
+msgid "expire date"
+msgstr "到期日期"
+
+#: models.py:46
+msgid "session"
+msgstr "session"
+
+#: models.py:47
+msgid "sessions"
+msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py
new file mode 100644
index 0000000..8eb23df
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py
@@ -0,0 +1,15 @@
+from django.conf import settings
+from django.core.management.base import NoArgsCommand
+from django.utils.importlib import import_module
+
+
+class Command(NoArgsCommand):
+ help = "Can be run as a cronjob or directly to clean out expired sessions (only with the database backend at the moment)."
+
+ def handle_noargs(self, **options):
+ engine = import_module(settings.SESSION_ENGINE)
+ try:
+ engine.SessionStore.clear_expired()
+ except NotImplementedError:
+ self.stderr.write("Session engine '%s' doesn't support clearing "
+ "expired sessions.\n" % settings.SESSION_ENGINE)
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/middleware.py b/lib/python2.7/site-packages/django/contrib/sessions/middleware.py
new file mode 100644
index 0000000..9f65255
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/middleware.py
@@ -0,0 +1,45 @@
+import time
+
+from django.conf import settings
+from django.utils.cache import patch_vary_headers
+from django.utils.http import cookie_date
+from django.utils.importlib import import_module
+
+class SessionMiddleware(object):
+ def process_request(self, request):
+ engine = import_module(settings.SESSION_ENGINE)
+ session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
+ request.session = engine.SessionStore(session_key)
+
+ def process_response(self, request, response):
+ """
+ If request.session was modified, or if the configuration is to save the
+ session every time, save the changes and set a session cookie.
+ """
+ try:
+ accessed = request.session.accessed
+ modified = request.session.modified
+ except AttributeError:
+ pass
+ else:
+ if accessed:
+ patch_vary_headers(response, ('Cookie',))
+ if modified or settings.SESSION_SAVE_EVERY_REQUEST:
+ if request.session.get_expire_at_browser_close():
+ max_age = None
+ expires = None
+ else:
+ max_age = request.session.get_expiry_age()
+ expires_time = time.time() + max_age
+ expires = cookie_date(expires_time)
+ # Save the session data and refresh the client cookie.
+ # Skip session save for 500 responses, refs #3881.
+ if response.status_code != 500:
+ request.session.save()
+ response.set_cookie(settings.SESSION_COOKIE_NAME,
+ request.session.session_key, max_age=max_age,
+ expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
+ path=settings.SESSION_COOKIE_PATH,
+ secure=settings.SESSION_COOKIE_SECURE or None,
+ httponly=settings.SESSION_COOKIE_HTTPONLY or None)
+ return response
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/models.py b/lib/python2.7/site-packages/django/contrib/sessions/models.py
new file mode 100644
index 0000000..3a6e311
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/models.py
@@ -0,0 +1,54 @@
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+
+class SessionManager(models.Manager):
+ def encode(self, session_dict):
+ """
+ Returns the given session dictionary serialized and encoded as a string.
+ """
+ return SessionStore().encode(session_dict)
+
+ def save(self, session_key, session_dict, expire_date):
+ s = self.model(session_key, self.encode(session_dict), expire_date)
+ if session_dict:
+ s.save()
+ else:
+ s.delete() # Clear sessions with no data.
+ return s
+
+
+class Session(models.Model):
+ """
+ Django provides full support for anonymous sessions. The session
+ framework lets you store and retrieve arbitrary data on a
+ per-site-visitor basis. It stores data on the server side and
+ abstracts the sending and receiving of cookies. Cookies contain a
+ session ID -- not the data itself.
+
+ The Django sessions framework is entirely cookie-based. It does
+ not fall back to putting session IDs in URLs. This is an intentional
+ design decision. Not only does that behavior make URLs ugly, it makes
+ your site vulnerable to session-ID theft via the "Referer" header.
+
+ For complete documentation on using Sessions in your code, consult
+ the sessions documentation that is shipped with Django (also available
+ on the Django Web site).
+ """
+ session_key = models.CharField(_('session key'), max_length=40,
+ primary_key=True)
+ session_data = models.TextField(_('session data'))
+ expire_date = models.DateTimeField(_('expire date'), db_index=True)
+ objects = SessionManager()
+
+ class Meta:
+ db_table = 'django_session'
+ verbose_name = _('session')
+ verbose_name_plural = _('sessions')
+
+ def get_decoded(self):
+ return SessionStore().decode(self.session_data)
+
+
+# At bottom to avoid circular import
+from django.contrib.sessions.backends.db import SessionStore
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/serializers.py b/lib/python2.7/site-packages/django/contrib/sessions/serializers.py
new file mode 100644
index 0000000..92a31c0
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/serializers.py
@@ -0,0 +1,20 @@
+from django.core.signing import JSONSerializer as BaseJSONSerializer
+try:
+ from django.utils.six.moves import cPickle as pickle
+except ImportError:
+ import pickle
+
+
+class PickleSerializer(object):
+ """
+ Simple wrapper around pickle to be used in signing.dumps and
+ signing.loads.
+ """
+ def dumps(self, obj):
+ return pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)
+
+ def loads(self, data):
+ return pickle.loads(data)
+
+
+JSONSerializer = BaseJSONSerializer
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/tests.py b/lib/python2.7/site-packages/django/contrib/sessions/tests.py
new file mode 100644
index 0000000..ff0a70c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/sessions/tests.py
@@ -0,0 +1,593 @@
+import base64
+from datetime import timedelta
+import os
+import shutil
+import string
+import tempfile
+import warnings
+
+from django.conf import settings
+from django.contrib.sessions.backends.db import SessionStore as DatabaseSession
+from django.contrib.sessions.backends.cache import SessionStore as CacheSession
+from django.contrib.sessions.backends.cached_db import SessionStore as CacheDBSession
+from django.contrib.sessions.backends.file import SessionStore as FileSession
+from django.contrib.sessions.backends.signed_cookies import SessionStore as CookieSession
+from django.contrib.sessions.models import Session
+from django.contrib.sessions.middleware import SessionMiddleware
+from django.core.cache import get_cache
+from django.core import management
+from django.core.exceptions import ImproperlyConfigured
+from django.http import HttpResponse
+from django.test import TestCase, RequestFactory
+from django.test.utils import override_settings, patch_logger
+from django.utils import six
+from django.utils import timezone
+from django.utils import unittest
+
+from django.contrib.sessions.exceptions import InvalidSessionKey
+
+
+class SessionTestsMixin(object):
+ # This does not inherit from TestCase to avoid any tests being run with this
+ # class, which wouldn't work, and to allow different TestCase subclasses to
+ # be used.
+
+ backend = None # subclasses must specify
+
+ def setUp(self):
+ self.session = self.backend()
+
+ def tearDown(self):
+ # NB: be careful to delete any sessions created; stale sessions fill up
+ # the /tmp (with some backends) and eventually overwhelm it after lots
+ # of runs (think buildbots)
+ self.session.delete()
+
+ def test_new_session(self):
+ self.assertFalse(self.session.modified)
+ self.assertFalse(self.session.accessed)
+
+ def test_get_empty(self):
+ self.assertEqual(self.session.get('cat'), None)
+
+ def test_store(self):
+ self.session['cat'] = "dog"
+ self.assertTrue(self.session.modified)
+ self.assertEqual(self.session.pop('cat'), 'dog')
+
+ def test_pop(self):
+ self.session['some key'] = 'exists'
+ # Need to reset these to pretend we haven't accessed it:
+ self.accessed = False
+ self.modified = False
+
+ self.assertEqual(self.session.pop('some key'), 'exists')
+ self.assertTrue(self.session.accessed)
+ self.assertTrue(self.session.modified)
+ self.assertEqual(self.session.get('some key'), None)
+
+ def test_pop_default(self):
+ self.assertEqual(self.session.pop('some key', 'does not exist'),
+ 'does not exist')
+ self.assertTrue(self.session.accessed)
+ self.assertFalse(self.session.modified)
+
+ def test_setdefault(self):
+ self.assertEqual(self.session.setdefault('foo', 'bar'), 'bar')
+ self.assertEqual(self.session.setdefault('foo', 'baz'), 'bar')
+ self.assertTrue(self.session.accessed)
+ self.assertTrue(self.session.modified)
+
+ def test_update(self):
+ self.session.update({'update key': 1})
+ self.assertTrue(self.session.accessed)
+ self.assertTrue(self.session.modified)
+ self.assertEqual(self.session.get('update key', None), 1)
+
+ def test_has_key(self):
+ self.session['some key'] = 1
+ self.session.modified = False
+ self.session.accessed = False
+ self.assertIn('some key', self.session)
+ self.assertTrue(self.session.accessed)
+ self.assertFalse(self.session.modified)
+
+ def test_values(self):
+ self.assertEqual(list(self.session.values()), [])
+ self.assertTrue(self.session.accessed)
+ self.session['some key'] = 1
+ self.assertEqual(list(self.session.values()), [1])
+
+ def test_iterkeys(self):
+ self.session['x'] = 1
+ self.session.modified = False
+ self.session.accessed = False
+ i = six.iterkeys(self.session)
+ self.assertTrue(hasattr(i, '__iter__'))
+ self.assertTrue(self.session.accessed)
+ self.assertFalse(self.session.modified)
+ self.assertEqual(list(i), ['x'])
+
+ def test_itervalues(self):
+ self.session['x'] = 1
+ self.session.modified = False
+ self.session.accessed = False
+ i = six.itervalues(self.session)
+ self.assertTrue(hasattr(i, '__iter__'))
+ self.assertTrue(self.session.accessed)
+ self.assertFalse(self.session.modified)
+ self.assertEqual(list(i), [1])
+
+ def test_iteritems(self):
+ self.session['x'] = 1
+ self.session.modified = False
+ self.session.accessed = False
+ i = six.iteritems(self.session)
+ self.assertTrue(hasattr(i, '__iter__'))
+ self.assertTrue(self.session.accessed)
+ self.assertFalse(self.session.modified)
+ self.assertEqual(list(i), [('x', 1)])
+
+ def test_clear(self):
+ self.session['x'] = 1
+ self.session.modified = False
+ self.session.accessed = False
+ self.assertEqual(list(self.session.items()), [('x', 1)])
+ self.session.clear()
+ self.assertEqual(list(self.session.items()), [])
+ self.assertTrue(self.session.accessed)
+ self.assertTrue(self.session.modified)
+
+ def test_save(self):
+ if (hasattr(self.session, '_cache') and'DummyCache' in
+ settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND']):
+ raise unittest.SkipTest("Session saving tests require a real cache backend")
+ self.session.save()
+ self.assertTrue(self.session.exists(self.session.session_key))
+
+ def test_delete(self):
+ self.session.save()
+ self.session.delete(self.session.session_key)
+ self.assertFalse(self.session.exists(self.session.session_key))
+
+ def test_flush(self):
+ self.session['foo'] = 'bar'
+ self.session.save()
+ prev_key = self.session.session_key
+ self.session.flush()
+ self.assertFalse(self.session.exists(prev_key))
+ self.assertNotEqual(self.session.session_key, prev_key)
+ self.assertTrue(self.session.modified)
+ self.assertTrue(self.session.accessed)
+
+ def test_cycle(self):
+ self.session['a'], self.session['b'] = 'c', 'd'
+ self.session.save()
+ prev_key = self.session.session_key
+ prev_data = list(self.session.items())
+ self.session.cycle_key()
+ self.assertNotEqual(self.session.session_key, prev_key)
+ self.assertEqual(list(self.session.items()), prev_data)
+
+ def test_invalid_key(self):
+ # Submitting an invalid session key (either by guessing, or if the db has
+ # removed the key) results in a new key being generated.
+ try:
+ session = self.backend('1')
+ try:
+ session.save()
+ except AttributeError:
+ self.fail("The session object did not save properly. Middleware may be saving cache items without namespaces.")
+ self.assertNotEqual(session.session_key, '1')
+ self.assertEqual(session.get('cat'), None)
+ session.delete()
+ finally:
+ # Some backends leave a stale cache entry for the invalid
+ # session key; make sure that entry is manually deleted
+ session.delete('1')
+
+ def test_session_key_is_read_only(self):
+ def set_session_key(session):
+ session.session_key = session._get_new_session_key()
+ self.assertRaises(AttributeError, set_session_key, self.session)
+
+ # Custom session expiry
+ def test_default_expiry(self):
+ # A normal session has a max age equal to settings
+ self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
+
+ # So does a custom session with an idle expiration time of 0 (but it'll
+ # expire at browser close)
+ self.session.set_expiry(0)
+ self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
+
+ def test_custom_expiry_seconds(self):
+ modification = timezone.now()
+
+ self.session.set_expiry(10)
+
+ date = self.session.get_expiry_date(modification=modification)
+ self.assertEqual(date, modification + timedelta(seconds=10))
+
+ age = self.session.get_expiry_age(modification=modification)
+ self.assertEqual(age, 10)
+
+ def test_custom_expiry_timedelta(self):
+ modification = timezone.now()
+
+ # Mock timezone.now, because set_expiry calls it on this code path.
+ original_now = timezone.now
+ try:
+ timezone.now = lambda: modification
+ self.session.set_expiry(timedelta(seconds=10))
+ finally:
+ timezone.now = original_now
+
+ date = self.session.get_expiry_date(modification=modification)
+ self.assertEqual(date, modification + timedelta(seconds=10))
+
+ age = self.session.get_expiry_age(modification=modification)
+ self.assertEqual(age, 10)
+
+ def test_custom_expiry_datetime(self):
+ modification = timezone.now()
+
+ self.session.set_expiry(modification + timedelta(seconds=10))
+
+ date = self.session.get_expiry_date(modification=modification)
+ self.assertEqual(date, modification + timedelta(seconds=10))
+
+ age = self.session.get_expiry_age(modification=modification)
+ self.assertEqual(age, 10)
+
+ def test_custom_expiry_reset(self):
+ self.session.set_expiry(None)
+ self.session.set_expiry(10)
+ self.session.set_expiry(None)
+ self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
+
+ def test_get_expire_at_browser_close(self):
+ # Tests get_expire_at_browser_close with different settings and different
+ # set_expiry calls
+ with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=False):
+ self.session.set_expiry(10)
+ self.assertFalse(self.session.get_expire_at_browser_close())
+
+ self.session.set_expiry(0)
+ self.assertTrue(self.session.get_expire_at_browser_close())
+
+ self.session.set_expiry(None)
+ self.assertFalse(self.session.get_expire_at_browser_close())
+
+ with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=True):
+ self.session.set_expiry(10)
+ self.assertFalse(self.session.get_expire_at_browser_close())
+
+ self.session.set_expiry(0)
+ self.assertTrue(self.session.get_expire_at_browser_close())
+
+ self.session.set_expiry(None)
+ self.assertTrue(self.session.get_expire_at_browser_close())
+
+ def test_decode(self):
+ # Ensure we can decode what we encode
+ data = {'a test key': 'a test value'}
+ encoded = self.session.encode(data)
+ self.assertEqual(self.session.decode(encoded), data)
+
+ def test_decode_failure_logged_to_security(self):
+ bad_encode = base64.b64encode(b'flaskdj:alkdjf')
+ with patch_logger('django.security.SuspiciousSession', 'warning') as calls:
+ self.assertEqual({}, self.session.decode(bad_encode))
+ # check that the failed decode is logged
+ self.assertEqual(len(calls), 1)
+ self.assertTrue('corrupted' in calls[0])
+
+
+ def test_actual_expiry(self):
+ # this doesn't work with JSONSerializer (serializing timedelta)
+ with override_settings(SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'):
+ self.session = self.backend() # reinitialize after overriding settings
+
+ # Regression test for #19200
+ old_session_key = None
+ new_session_key = None
+ try:
+ self.session['foo'] = 'bar'
+ self.session.set_expiry(-timedelta(seconds=10))
+ self.session.save()
+ old_session_key = self.session.session_key
+ # With an expiry date in the past, the session expires instantly.
+ new_session = self.backend(self.session.session_key)
+ new_session_key = new_session.session_key
+ self.assertNotIn('foo', new_session)
+ finally:
+ self.session.delete(old_session_key)
+ self.session.delete(new_session_key)
+
+
+class DatabaseSessionTests(SessionTestsMixin, TestCase):
+
+ backend = DatabaseSession
+
+ def test_session_get_decoded(self):
+ """
+ Test we can use Session.get_decoded to retrieve data stored
+ in normal way
+ """
+ self.session['x'] = 1
+ self.session.save()
+
+ s = Session.objects.get(session_key=self.session.session_key)
+
+ self.assertEqual(s.get_decoded(), {'x': 1})
+
+ def test_sessionmanager_save(self):
+ """
+ Test SessionManager.save method
+ """
+ # Create a session
+ self.session['y'] = 1
+ self.session.save()
+
+ s = Session.objects.get(session_key=self.session.session_key)
+ # Change it
+ Session.objects.save(s.session_key, {'y': 2}, s.expire_date)
+ # Clear cache, so that it will be retrieved from DB
+ del self.session._session_cache
+ self.assertEqual(self.session['y'], 2)
+
+ @override_settings(SESSION_ENGINE="django.contrib.sessions.backends.db")
+ def test_clearsessions_command(self):
+ """
+ Test clearsessions command for clearing expired sessions.
+ """
+ self.assertEqual(0, Session.objects.count())
+
+ # One object in the future
+ self.session['foo'] = 'bar'
+ self.session.set_expiry(3600)
+ self.session.save()
+
+ # One object in the past
+ other_session = self.backend()
+ other_session['foo'] = 'bar'
+ other_session.set_expiry(-3600)
+ other_session.save()
+
+ # Two sessions are in the database before clearsessions...
+ self.assertEqual(2, Session.objects.count())
+ management.call_command('clearsessions')
+ # ... and one is deleted.
+ self.assertEqual(1, Session.objects.count())
+
+
+@override_settings(USE_TZ=True)
+class DatabaseSessionWithTimeZoneTests(DatabaseSessionTests):
+ pass
+
+
+class CacheDBSessionTests(SessionTestsMixin, TestCase):
+
+ backend = CacheDBSession
+
+ @unittest.skipIf('DummyCache' in
+ settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND'],
+ "Session saving tests require a real cache backend")
+ def test_exists_searches_cache_first(self):
+ self.session.save()
+ with self.assertNumQueries(0):
+ self.assertTrue(self.session.exists(self.session.session_key))
+
+ def test_load_overlong_key(self):
+ # Some backends might issue a warning
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ self.session._session_key = (string.ascii_letters + string.digits) * 20
+ self.assertEqual(self.session.load(), {})
+
+
+@override_settings(USE_TZ=True)
+class CacheDBSessionWithTimeZoneTests(CacheDBSessionTests):
+ pass
+
+
+# Don't need DB flushing for these tests, so can use unittest.TestCase as base class
+class FileSessionTests(SessionTestsMixin, unittest.TestCase):
+
+ backend = FileSession
+
+ def setUp(self):
+ # Do file session tests in an isolated directory, and kill it after we're done.
+ self.original_session_file_path = settings.SESSION_FILE_PATH
+ self.temp_session_store = settings.SESSION_FILE_PATH = tempfile.mkdtemp()
+ # Reset the file session backend's internal caches
+ if hasattr(self.backend, '_storage_path'):
+ del self.backend._storage_path
+ super(FileSessionTests, self).setUp()
+
+ def tearDown(self):
+ super(FileSessionTests, self).tearDown()
+ settings.SESSION_FILE_PATH = self.original_session_file_path
+ shutil.rmtree(self.temp_session_store)
+
+ @override_settings(
+ SESSION_FILE_PATH="/if/this/directory/exists/you/have/a/weird/computer")
+ def test_configuration_check(self):
+ del self.backend._storage_path
+ # Make sure the file backend checks for a good storage dir
+ self.assertRaises(ImproperlyConfigured, self.backend)
+
+ def test_invalid_key_backslash(self):
+ # This key should be refused and a new session should be created
+ self.assertTrue(self.backend("a\\b\\c").load())
+
+ def test_invalid_key_backslash(self):
+ # Ensure we don't allow directory-traversal.
+ # This is tested directly on _key_to_file, as load() will swallow
+ # a SuspiciousOperation in the same way as an IOError - by creating
+ # a new session, making it unclear whether the slashes were detected.
+ self.assertRaises(InvalidSessionKey,
+ self.backend()._key_to_file, "a\\b\\c")
+
+ def test_invalid_key_forwardslash(self):
+ # Ensure we don't allow directory-traversal
+ self.assertRaises(InvalidSessionKey,
+ self.backend()._key_to_file, "a/b/c")
+
+ @override_settings(SESSION_ENGINE="django.contrib.sessions.backends.file")
+ def test_clearsessions_command(self):
+ """
+ Test clearsessions command for clearing expired sessions.
+ """
+ storage_path = self.backend._get_storage_path()
+ file_prefix = settings.SESSION_COOKIE_NAME
+
+ def count_sessions():
+ return len([session_file for session_file in os.listdir(storage_path)
+ if session_file.startswith(file_prefix)])
+
+ self.assertEqual(0, count_sessions())
+
+ # One object in the future
+ self.session['foo'] = 'bar'
+ self.session.set_expiry(3600)
+ self.session.save()
+
+ # One object in the past
+ other_session = self.backend()
+ other_session['foo'] = 'bar'
+ other_session.set_expiry(-3600)
+ other_session.save()
+
+ # Two sessions are in the filesystem before clearsessions...
+ self.assertEqual(2, count_sessions())
+ management.call_command('clearsessions')
+ # ... and one is deleted.
+ self.assertEqual(1, count_sessions())
+
+
+class CacheSessionTests(SessionTestsMixin, unittest.TestCase):
+
+ backend = CacheSession
+
+ def test_load_overlong_key(self):
+ # Some backends might issue a warning
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ self.session._session_key = (string.ascii_letters + string.digits) * 20
+ self.assertEqual(self.session.load(), {})
+
+ def test_default_cache(self):
+ self.session.save()
+ self.assertNotEqual(get_cache('default').get(self.session.cache_key), None)
+
+ @override_settings(CACHES={
+ 'default': {
+ 'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
+ },
+ 'sessions': {
+ 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
+ },
+ }, SESSION_CACHE_ALIAS='sessions')
+ def test_non_default_cache(self):
+ # Re-initalize the session backend to make use of overridden settings.
+ self.session = self.backend()
+
+ self.session.save()
+ self.assertEqual(get_cache('default').get(self.session.cache_key), None)
+ self.assertNotEqual(get_cache('sessions').get(self.session.cache_key), None)
+
+
+class SessionMiddlewareTests(unittest.TestCase):
+
+ @override_settings(SESSION_COOKIE_SECURE=True)
+ def test_secure_session_cookie(self):
+ request = RequestFactory().get('/')
+ response = HttpResponse('Session test')
+ middleware = SessionMiddleware()
+
+ # Simulate a request the modifies the session
+ middleware.process_request(request)
+ request.session['hello'] = 'world'
+
+ # Handle the response through the middleware
+ response = middleware.process_response(request, response)
+ self.assertTrue(
+ response.cookies[settings.SESSION_COOKIE_NAME]['secure'])
+
+ @override_settings(SESSION_COOKIE_HTTPONLY=True)
+ def test_httponly_session_cookie(self):
+ request = RequestFactory().get('/')
+ response = HttpResponse('Session test')
+ middleware = SessionMiddleware()
+
+ # Simulate a request the modifies the session
+ middleware.process_request(request)
+ request.session['hello'] = 'world'
+
+ # Handle the response through the middleware
+ response = middleware.process_response(request, response)
+ self.assertTrue(
+ response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])
+ self.assertIn('httponly',
+ str(response.cookies[settings.SESSION_COOKIE_NAME]))
+
+ @override_settings(SESSION_COOKIE_HTTPONLY=False)
+ def test_no_httponly_session_cookie(self):
+ request = RequestFactory().get('/')
+ response = HttpResponse('Session test')
+ middleware = SessionMiddleware()
+
+ # Simulate a request the modifies the session
+ middleware.process_request(request)
+ request.session['hello'] = 'world'
+
+ # Handle the response through the middleware
+ response = middleware.process_response(request, response)
+ self.assertFalse(response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])
+
+ self.assertNotIn('httponly',
+ str(response.cookies[settings.SESSION_COOKIE_NAME]))
+
+ def test_session_save_on_500(self):
+ request = RequestFactory().get('/')
+ response = HttpResponse('Horrible error')
+ response.status_code = 500
+ middleware = SessionMiddleware()
+
+ # Simulate a request the modifies the session
+ middleware.process_request(request)
+ request.session['hello'] = 'world'
+
+ # Handle the response through the middleware
+ response = middleware.process_response(request, response)
+
+ # Check that the value wasn't saved above.
+ self.assertNotIn('hello', request.session.load())
+
+
+class CookieSessionTests(SessionTestsMixin, TestCase):
+
+ backend = CookieSession
+
+ def test_save(self):
+ """
+ This test tested exists() in the other session backends, but that
+ doesn't make sense for us.
+ """
+ pass
+
+ def test_cycle(self):
+ """
+ This test tested cycle_key() which would create a new session
+ key for the same session data. But we can't invalidate previously
+ signed cookies (other than letting them expire naturally) so
+ testing for this behavior is meaningless.
+ """
+ pass
+
+ @unittest.expectedFailure
+ def test_actual_expiry(self):
+ # The cookie backend doesn't handle non-default expiry dates, see #19201
+ super(CookieSessionTests, self).test_actual_expiry()