· 9 years ago · Dec 11, 2016, 10:08 PM
1Request Method: POST
2Request URL: http://academy.local:8000/api/v1/curriculum-units/
3Django Version: 1.10.2
4Python Executable: /Users/cryingjoker/.virtualenvs/academy2.7/bin/python
5Python Version: 2.7.10
6Python Path: ['/Users/cryingjoker/actionProjects/academy2', '/Users/cryingjoker/actionProjects/academy2/academy', '/Users/cryingjoker/actionProjects/academy2', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python27.zip', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/plat-darwin', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/plat-mac', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/lib-tk', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/lib-old', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages']
7Server time: Sun, 11 Dec 2016 22:07:36 +0000
8Installed Applications:
9[u'django.contrib.admin',
10 u'django.contrib.auth',
11 u'django.contrib.contenttypes',
12 u'django.contrib.sessions',
13 u'django.contrib.messages',
14 u'django.contrib.staticfiles',
15 u'adminsortable2',
16 u'djoser',
17 u'rest_framework',
18 u'academy.common.api',
19 u'academy.common.core',
20 u'academy.common.user_auth',
21 u'academy.common.utils',
22 u'academy.features.dialogue_lessons',
23 u'academy.features.downloadable_lessons',
24 u'academy.features.graphic_lessons',
25 u'academy.features.test_lessons',
26 u'academy.features.text_lessons',
27 u'academy.features.video_lessons',
28 u'academy.features.video_test_lessons',
29 u'academy.features.notifications',
30 u'academy.features.badges_notifications',
31 u'academy.features.ideas_notifications',
32 u'academy.features.badges',
33 u'academy.features.companies',
34 u'academy.features.ideas']
35Installed Middleware:
36[u'django.middleware.security.SecurityMiddleware',
37 u'django.contrib.sessions.middleware.SessionMiddleware',
38 u'django.middleware.common.CommonMiddleware',
39 u'django.middleware.csrf.CsrfViewMiddleware',
40 u'django.contrib.auth.middleware.AuthenticationMiddleware',
41 u'django.contrib.messages.middleware.MessageMiddleware',
42 u'django.middleware.clickjacking.XFrameOptionsMiddleware']
43
44
45Traceback:
46
47File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
48 39. response = get_response(request)
49
50File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
51 187. response = self.process_exception_by_middleware(e, request)
52
53File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
54 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
55
56File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
57 58. return view_func(*args, **kwargs)
58
59File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/rest_framework/viewsets.py" in view
60 87. return self.dispatch(request, *args, **kwargs)
61
62File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
63 474. response = self.handle_exception(exc)
64
65File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/rest_framework/views.py" in handle_exception
66 434. self.raise_uncaught_exception(exc)
67
68File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
69 471. response = handler(request, *args, **kwargs)
70
71File "/Users/cryingjoker/actionProjects/academy2/academy/common/api/views.py" in create
72 134. data = self.__deserialize_data(request)
73
74File "/Users/cryingjoker/actionProjects/academy2/academy/common/api/views.py" in __deserialize_data
75 124. video_url = request.data.pop('video_url', None)
76
77File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/http/request.py" in pop
78 459. self._assert_mutable()
79
80File "/Users/cryingjoker/.virtualenvs/academy2.7/lib/python2.7/site-packages/django/http/request.py" in _assert_mutable
81 417. raise AttributeError("This QueryDict instance is immutable")
82
83Exception Type: AttributeError at /api/v1/curriculum-units/
84Exception Value: This QueryDict instance is immutable
85Request information:
86USER: admin
87
88GET: No GET data
89
90POST: No POST data
91
92FILES: No FILES data
93
94COOKIES:
95csrftoken = 'xEuipBRenzWLL9kpgIVGclTY02KarvNH85syngLCGce8KN6ayYjUugACQPIW7rxd'
96sessionid = 'shllkt460pktothtacrw2nxc5750g5v2'
97msid = '4xg74bsdvqyhe7ewsbc7vqel3526ucjs'
98
99META:
100Apple_PubSub_Socket_Render = '/private/tmp/com.apple.launchd.l36N4jQzNx/Render'
101COMMAND_MODE = 'unix2003'
102CONTENT_LENGTH = '251'
103CONTENT_TYPE = 'application/x-www-form-urlencoded; charset=UTF-8'
104CSRF_COOKIE = 'xEuipBRenzWLL9kpgIVGclTY02KarvNH85syngLCGce8KN6ayYjUugACQPIW7rxd'
105DJANGO_SETTINGS_MODULE = 'academy.site.settings'
106GATEWAY_INTERFACE = 'CGI/1.1'
107HOME = '/Users/cryingjoker'
108HTTP_ACCEPT = '*/*'
109HTTP_ACCEPT_ENCODING = 'gzip, deflate'
110HTTP_ACCEPT_LANGUAGE = 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4'
111HTTP_CONNECTION = 'keep-alive'
112HTTP_COOKIE = 'msid=4xg74bsdvqyhe7ewsbc7vqel3526ucjs; sessionid=shllkt460pktothtacrw2nxc5750g5v2; csrftoken=xEuipBRenzWLL9kpgIVGclTY02KarvNH85syngLCGce8KN6ayYjUugACQPIW7rxd'
113HTTP_HOST = 'academy.local:8000'
114HTTP_ORIGIN = 'http://academy.local:8000'
115HTTP_REFERER = 'http://academy.local:8000/app/curriculum/32/novyij-kurs-3/create/VideoLesson/'
116HTTP_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36'
117HTTP_X_COMPRESS = 'null'
118HTTP_X_CSRFTOKEN = 'xEuipBRenzWLL9kpgIVGclTY02KarvNH85syngLCGce8KN6ayYjUugACQPIW7rxd'
119HTTP_X_REQUESTED_WITH = 'XMLHttpRequest'
120LC_CTYPE = 'ru_RU.UTF-8'
121LOGNAME = 'cryingjoker'
122PATH = '/usr/bin:/bin:/usr/sbin:/sbin:/Users/cryingjoker/.virtualenvs/academy2.7/bin'
123PATH_INFO = u'/api/v1/curriculum-units/'
124PYCHARM_HOSTED = '1'
125PYTHONIOENCODING = 'UTF-8'
126PYTHONPATH = '/Users/cryingjoker/actionProjects/academy2'
127PYTHONUNBUFFERED = '1'
128QUERY_STRING = ''
129RBENV_SHELL = 'bash'
130REMOTE_ADDR = '127.0.0.1'
131REMOTE_HOST = ''
132REQUEST_METHOD = 'POST'
133RUN_MAIN = 'true'
134SCRIPT_NAME = u''
135SECURITYSESSIONID = '186a5'
136SERVER_NAME = '1.0.0.127.in-addr.arpa'
137SERVER_PORT = '8000'
138SERVER_PROTOCOL = 'HTTP/1.1'
139SERVER_SOFTWARE = 'WSGIServer/0.1 Python/2.7.10'
140SHELL = '/bin/bash'
141SSH_AUTH_SOCK = '/private/tmp/com.apple.launchd.BQjZaTPKdI/Listeners'
142TMPDIR = '/var/folders/nj/l5p1pt_x4vjdw739tysypzm00000gn/T/'
143TZ = u'UTC'
144USER = 'cryingjoker'
145VERSIONER_PYTHON_PREFER_32_BIT = 'no'
146VERSIONER_PYTHON_VERSION = '2.7'
147XPC_FLAGS = '0x0'
148XPC_SERVICE_NAME = 'com.apple.xpc.launchd.oneshot.0x10000001.pycharm'
149__CF_USER_TEXT_ENCODING = '0x1F5:0x7:0x31'
150wsgi.errors = <open file '<stderr>', mode 'w' at 0x10e4711e0>
151wsgi.file_wrapper = ''
152wsgi.input = <socket._fileobject object at 0x110b13950>
153wsgi.multiprocess = False
154wsgi.multithread = True
155wsgi.run_once = False
156wsgi.url_scheme = 'http'
157wsgi.version =
158
159Settings:
160Using settings module academy.site.settings
161ABSOLUTE_URL_OVERRIDES = {}
162ADMINS = (u'\u0410lex Nikolaev', u'cryingjoker@me.com')
163ALLOWED_HOSTS = []
164APPEND_SLASH = True
165AUTHENTICATION_BACKENDS =
166AUTH_PASSWORD_VALIDATORS = u'********************'
167AUTH_USER_MODEL = u'user_auth.User'
168BASE_DIR = '/Users/cryingjoker/actionProjects/academy2/academy'
169CACHES = {u'default': {u'BACKEND': u'django.core.cache.backends.locmem.LocMemCache'}}
170CACHE_MIDDLEWARE_ALIAS = u'default'
171CACHE_MIDDLEWARE_KEY_PREFIX = u'********************'
172CACHE_MIDDLEWARE_SECONDS = 600
173CSRF_COOKIE_AGE = 31449600
174CSRF_COOKIE_DOMAIN = None
175CSRF_COOKIE_HTTPONLY = False
176CSRF_COOKIE_NAME = u'csrftoken'
177CSRF_COOKIE_PATH = u'/'
178CSRF_COOKIE_SECURE = False
179CSRF_FAILURE_VIEW = u'django.views.csrf.csrf_failure'
180CSRF_HEADER_NAME = u'HTTP_X_CSRFTOKEN'
181CSRF_TRUSTED_ORIGINS = []
182DATABASES = {u'default': {u'ENGINE': u'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, u'NAME': u'academy2', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, u'PORT': u'', u'HOST': u'127.0.0.1', 'USER': '', 'TEST': {'COLLATION': None, 'CHARSET': None, 'NAME': None, 'MIRROR': None}, 'PASSWORD': u'********************', 'OPTIONS': {}}}
183DATABASE_ROUTERS = []
184DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
185DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
186DATETIME_FORMAT = u'N j, Y, P'
187DATETIME_FORMAT_JSON = u'%Y-%m-%dT%H:%M:%SZ'
188DATETIME_FORMAT_READABLE = u'%Y-%m-%d %H:%M:%S'
189DATETIME_INPUT_FORMATS = [u'%Y-%m-%d %H:%M:%S', u'%Y-%m-%d %H:%M:%S.%f', u'%Y-%m-%d %H:%M', u'%Y-%m-%d', u'%m/%d/%Y %H:%M:%S', u'%m/%d/%Y %H:%M:%S.%f', u'%m/%d/%Y %H:%M', u'%m/%d/%Y', u'%m/%d/%y %H:%M:%S', u'%m/%d/%y %H:%M:%S.%f', u'%m/%d/%y %H:%M', u'%m/%d/%y']
190DATE_FORMAT = u'N j, Y'
191DATE_FORMAT_JSON = u'%Y-%m-%d'
192DATE_FORMAT_JSON_REVERSE = u'%d-%m-%Y'
193DATE_INPUT_FORMATS = [u'%Y-%m-%d', u'%m/%d/%Y', u'%m/%d/%y', u'%b %d %Y', u'%b %d, %Y', u'%d %b %Y', u'%d %b, %Y', u'%B %d %Y', u'%B %d, %Y', u'%d %B %Y', u'%d %B, %Y']
194DEBUG = True
195DEBUG_PROPAGATE_EXCEPTIONS = False
196DECIMAL_SEPARATOR = u'.'
197DEFAULT_CHARSET = u'utf-8'
198DEFAULT_CONTENT_TYPE = u'text/html'
199DEFAULT_EXCEPTION_REPORTER_FILTER = u'django.views.debug.SafeExceptionReporterFilter'
200DEFAULT_FILE_STORAGE = u'django.core.files.storage.FileSystemStorage'
201DEFAULT_FROM_EMAIL = u'Academy <robot@academy.local>'
202DEFAULT_INDEX_TABLESPACE = u''
203DEFAULT_TABLESPACE = u''
204DISALLOWED_USER_AGENTS = []
205DJOSER = {u'SITE_NAME': u'Academy', u'ACTIVATION_URL': u'#/{uid}/{token}', u'PASSWORD_RESET_CONFIRM_URL': u'********************', u'SEND_ACTIVATION_EMAIL': True}
206EMAIL_BACKEND = u'django.core.mail.backends.smtp.EmailBackend'
207EMAIL_HOST = u'smtp.sendgrid.net'
208EMAIL_HOST_PASSWORD = u'********************'
209EMAIL_HOST_USER = u'FLTest'
210EMAIL_PORT = 587
211EMAIL_SSL_CERTFILE = None
212EMAIL_SSL_KEYFILE = u'********************'
213EMAIL_SUBJECT_PREFIX = u'[Academy Django] '
214EMAIL_TIMEOUT = None
215EMAIL_USE_SSL = False
216EMAIL_USE_TLS = True
217FILE_CHARSET = u'utf-8'
218FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
219FILE_UPLOAD_HANDLERS = [u'django.core.files.uploadhandler.MemoryFileUploadHandler', u'django.core.files.uploadhandler.TemporaryFileUploadHandler']
220FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
221FILE_UPLOAD_PERMISSIONS = None
222FILE_UPLOAD_TEMP_DIR = None
223FIRST_DAY_OF_WEEK = 0
224FIXTURE_DIRS = []
225FORCE_SCRIPT_NAME = None
226FORMAT_MODULE_PATH = None
227IGNORABLE_404_URLS = []
228INSTALLED_APPS = [u'django.contrib.admin', u'django.contrib.auth', u'django.contrib.contenttypes', u'django.contrib.sessions', u'django.contrib.messages', u'django.contrib.staticfiles', u'adminsortable2', u'djoser', u'rest_framework', u'academy.common.api', u'academy.common.core', u'academy.common.user_auth', u'academy.common.utils', u'academy.features.dialogue_lessons', u'academy.features.downloadable_lessons', u'academy.features.graphic_lessons', u'academy.features.test_lessons', u'academy.features.text_lessons', u'academy.features.video_lessons', u'academy.features.video_test_lessons', u'academy.features.notifications', u'academy.features.badges_notifications', u'academy.features.ideas_notifications', u'academy.features.badges', u'academy.features.companies', u'academy.features.ideas']
229INTERNAL_IPS = u'127.0.0.1'
230LANGUAGES =
231LANGUAGES_BIDI = [u'he', u'ar', u'fa', u'ur']
232LANGUAGE_CODE = u'en'
233LANGUAGE_COOKIE_AGE = None
234LANGUAGE_COOKIE_DOMAIN = None
235LANGUAGE_COOKIE_NAME = u'django_language'
236LANGUAGE_COOKIE_PATH = u'/'
237LOCALE_PATHS = u'/Users/cryingjoker/actionProjects/academy2/academy/locale'
238LOGGING = {u'loggers': {u'': {u'handlers': [u'academy_debug_log_file', u'academy_error_log_file'], u'propagate': True, u'level': u'DEBUG'}, u'academy': {u'handlers': [u'console'], u'propagate': True, u'level': u'DEBUG'}, u'tests': {u'handlers': [u'console_tests'], u'propagate': True, u'level': u'INFO'}, u'django.request': {u'handlers': [u'mail_admins'], u'propagate': True, u'level': u'ERROR'}, u'django.db.backends': {u'handlers': [u'console'], u'propagate': True, u'level': u'WARNING'}}, u'disable_existing_loggers': True, u'handlers': {u'academy_debug_log_file': {u'backupCount': 25, u'level': u'DEBUG', u'filename': u'logs/academy-debug.log', u'formatter': u'standard', u'class': u'logging.handlers.RotatingFileHandler', u'maxBytes': 1048576}, u'console': {u'formatter': u'verbose', u'class': u'logging.StreamHandler', u'level': u'DEBUG'}, u'console_tests': {u'formatter': u'simple', u'class': u'logging.StreamHandler', u'level': u'INFO'}, u'academy_error_log_file': {u'backupCount': 25, u'level': u'ERROR', u'filename': u'logs/academy-error.log', u'formatter': u'standard', u'class': u'logging.handlers.RotatingFileHandler', u'maxBytes': 1048576}, u'mail_admins': {u'class': u'django.utils.log.AdminEmailHandler', u'filters': [u'require_debug_false', u'skip_suspicious_operations'], u'level': u'ERROR'}}, u'formatters': {u'simple': {u'format': u'%(levelname)s %(message)s'}, u'verbose': {u'format': u'%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'}, u'standard': {u'format': u'%(asctime)s [%(levelname)s] %(name)s: %(message)s'}}, u'version': 1, u'filters': {u'require_debug_false': {u'()': u'django.utils.log.RequireDebugFalse'}, u'skip_suspicious_operations': {u'callback': <function skip_suspicious_operations at 0x10f09e398>, u'()': u'django.utils.log.CallbackFilter'}}}
239LOGGING_CONFIG = u'logging.config.dictConfig'
240LOGIN_REDIRECT_URL = u'/accounts/profile/'
241LOGIN_URL = u'/accounts/login/'
242LOGOUT_REDIRECT_URL = None
243MANAGERS = (u'\u0410lex Nikolaev', u'cryingjoker@me.com')
244MANDRILL_X_MC_TRACK_HEADER = u'none'
245MEDIA_ROOT = u'/Users/cryingjoker/actionProjects/academy2/academy/media'
246MEDIA_URL = u'/media/'
247MESSAGE_STORAGE = u'django.contrib.messages.storage.fallback.FallbackStorage'
248MIDDLEWARE = [u'django.middleware.security.SecurityMiddleware', u'django.contrib.sessions.middleware.SessionMiddleware', u'django.middleware.common.CommonMiddleware', u'django.middleware.csrf.CsrfViewMiddleware', u'django.contrib.auth.middleware.AuthenticationMiddleware', u'django.contrib.messages.middleware.MessageMiddleware', u'django.middleware.clickjacking.XFrameOptionsMiddleware']
249MIDDLEWARE_CLASSES = [u'django.middleware.common.CommonMiddleware', u'django.middleware.csrf.CsrfViewMiddleware']
250MIGRATION_MODULES = {}
251MONTH_DAY_FORMAT = u'F j'
252NUMBER_GROUPING = 0
253PASSWORD_HASHERS = u'********************'
254PASSWORD_RESET_TIMEOUT_DAYS = u'********************'
255PREPEND_WWW = False
256PROJECT_BASE_URL = u'http://academy.local:8000'
257PROJECT_PATH = '/Users/cryingjoker/actionProjects/academy2/academy'
258REST_FRAMEWORK = {u'DEFAULT_AUTHENTICATION_CLASSES': [u'rest_framework.authentication.SessionAuthentication'], u'DEFAULT_PERMISSION_CLASSES': [u'rest_framework.permissions.IsAuthenticated'], u'PAGE_SIZE': 1000}
259ROOT_URLCONF = u'academy.site.urls'
260SECRET_KEY = u'********************'
261SECURE_BROWSER_XSS_FILTER = False
262SECURE_CONTENT_TYPE_NOSNIFF = False
263SECURE_HSTS_INCLUDE_SUBDOMAINS = False
264SECURE_HSTS_SECONDS = 0
265SECURE_PROXY_SSL_HEADER = None
266SECURE_REDIRECT_EXEMPT = []
267SECURE_SSL_HOST = None
268SECURE_SSL_REDIRECT = False
269SERVER_EMAIL = u'Academy <robot@academy.local>'
270SESSION_CACHE_ALIAS = u'default'
271SESSION_COOKIE_AGE = 1209600
272SESSION_COOKIE_DOMAIN = None
273SESSION_COOKIE_HTTPONLY = True
274SESSION_COOKIE_NAME = u'sessionid'
275SESSION_COOKIE_PATH = u'/'
276SESSION_COOKIE_SECURE = False
277SESSION_ENGINE = u'django.contrib.sessions.backends.db'
278SESSION_EXPIRE_AT_BROWSER_CLOSE = False
279SESSION_FILE_PATH = None
280SESSION_SAVE_EVERY_REQUEST = False
281SESSION_SERIALIZER = u'django.contrib.sessions.serializers.JSONSerializer'
282SETTINGS_MODULE = 'academy.site.settings'
283SHORT_DATETIME_FORMAT = u'm/d/Y P'
284SHORT_DATE_FORMAT = u'm/d/Y'
285SIGNING_BACKEND = u'django.core.signing.TimestampSigner'
286SILENCED_SYSTEM_CHECKS = []
287STATICFILES_DIRS = []
288STATICFILES_FINDERS =
289STATICFILES_STORAGE = u'django.contrib.staticfiles.storage.StaticFilesStorage'
290STATIC_ROOT = u'/Users/cryingjoker/actionProjects/academy2/static'
291STATIC_URL = u'/static/'
292TEMPLATES = [{u'APP_DIRS': True, u'OPTIONS': {u'context_processors': [u'django.template.context_processors.debug', u'django.template.context_processors.request', u'django.contrib.auth.context_processors.auth', u'django.contrib.messages.context_processors.messages', u'academy.common.utils.context_processors.base']}, u'BACKEND': u'django.template.backends.django.DjangoTemplates'}]
293TEST_NON_SERIALIZED_APPS = []
294TEST_RUNNER = u'django.test.runner.DiscoverRunner'
295THOUSAND_SEPARATOR = u','
296THUMBNAIL_ALTERNATIVE_RESOLUTIONS = [2, 3]
297THUMBNAIL_FORMAT = u'PNG'
298THUMBNAIL_QUALITY = 100
299TIME_FORMAT = u'P'
300TIME_INPUT_FORMATS = [u'%H:%M:%S', u'%H:%M:%S.%f', u'%H:%M']
301TIME_ZONE = u'UTC'
302USE_ETAGS = False
303USE_I18N = True
304USE_L10N = True
305USE_THOUSAND_SEPARATOR = False
306USE_TZ = True
307USE_X_FORWARDED_HOST = False
308USE_X_FORWARDED_PORT = False
309WSGI_APPLICATION = u'academy.site.wsgi.application'
310X_FRAME_OPTIONS = u'SAMEORIGIN'
311YEAR_MONTH_FORMAT = u'F Y'