Error handling fix.
[redakcja.git] / src / redakcja / settings / __init__.py
index 71bc998..61a80c8 100644 (file)
@@ -1,9 +1,14 @@
+# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 import os.path
 import sentry_sdk
 from sentry_sdk.integrations.django import DjangoIntegration
 from .defaults import *
 from ..localsettings import *
 
 import os.path
 import sentry_sdk
 from sentry_sdk.integrations.django import DjangoIntegration
 from .defaults import *
 from ..localsettings import *
 
+DATA_UPLOAD_MAX_MEMORY_SIZE = 20000000
+
 PROJECT_ROOT = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
 
 STATICFILES_DIRS = [
 PROJECT_ROOT = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
 
 STATICFILES_DIRS = [
@@ -25,6 +30,7 @@ TEMPLATES = [
                 "redakcja.context_processors.settings", # this is instead of media
                 'django.template.context_processors.csrf',
                 "django.template.context_processors.request",
                 "redakcja.context_processors.settings", # this is instead of media
                 'django.template.context_processors.csrf',
                 "django.template.context_processors.request",
+                "django.contrib.messages.context_processors.messages",
             ],
         },
     },
             ],
         },
     },
@@ -37,11 +43,16 @@ MIDDLEWARE = [
     'django.contrib.messages.middleware.MessageMiddleware',
 
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
 
     'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django_cas_ng.middleware.CASMiddleware',
+    ]
+
+if CAS_SERVER_URL:
+    MIDDLEWARE.append(
+        'django_cas_ng.middleware.CASMiddleware',
+    )
 
 
+MIDDLEWARE += [
     'django.contrib.admindocs.middleware.XViewMiddleware',
     'fnp_django_pagination.middleware.PaginationMiddleware',
     'django.contrib.admindocs.middleware.XViewMiddleware',
     'fnp_django_pagination.middleware.PaginationMiddleware',
-    'maintenancemode.middleware.MaintenanceModeMiddleware',
 ]
 
 if DEBUG:
 ]
 
 if DEBUG:
@@ -49,20 +60,24 @@ if DEBUG:
         'debug_toolbar.middleware.DebugToolbarMiddleware',
     ] + MIDDLEWARE
 
         'debug_toolbar.middleware.DebugToolbarMiddleware',
     ] + MIDDLEWARE
 
-AUTHENTICATION_BACKENDS = (
-    'django.contrib.auth.backends.ModelBackend',
-    'django_cas_ng.backends.CASBackend',
-)
+if CAS_SERVER_URL:
+    AUTHENTICATION_BACKENDS = (
+        'django.contrib.auth.backends.ModelBackend',
+        'django_cas_ng.backends.CASBackend',
+    )
 
 ROOT_URLCONF = 'redakcja.urls'
 
 INSTALLED_APPS = (
 
 ROOT_URLCONF = 'redakcja.urls'
 
 INSTALLED_APPS = (
+    'modeltranslation',
+
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'django.contrib.sites',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'django.contrib.sites',
+    'admin_numeric_filter',
     'django.contrib.admin',
     'django.contrib.admindocs',
 
     'django.contrib.admin',
     'django.contrib.admindocs',
 
@@ -73,8 +88,15 @@ INSTALLED_APPS = (
     'pipeline',
     'fnpdjango',
     'django_cas_ng',
     'pipeline',
     'fnpdjango',
     'django_cas_ng',
+    'bootstrap4',
+    'rest_framework',
+    'django_filters',
+    'admin_ordering',
 
 
+    'redakcja.api',
     'catalogue',
     'catalogue',
+    'depot',
+    'documents',
     'cover',
     'dvcs',
     'wiki',
     'cover',
     'dvcs',
     'wiki',
@@ -82,50 +104,69 @@ INSTALLED_APPS = (
     'toolbar',
     'apiclient',
     'email_mangler',
     'toolbar',
     'apiclient',
     'email_mangler',
+    'wlxml.apps.WlxmlConfig',
+    'alerts',
+    'team',
 )
 
 if DEBUG:
     INSTALLED_APPS += ('debug_toolbar',)
 
 )
 
 if DEBUG:
     INSTALLED_APPS += ('debug_toolbar',)
 
+LOCALE_PATHS = [
+    PROJECT_ROOT + "/locale-contrib",
+]
+
 LOGIN_REDIRECT_URL = '/documents/user'
 
 MIN_COVER_SIZE = (915, 1270)
 
 LOGIN_REDIRECT_URL = '/documents/user'
 
 MIN_COVER_SIZE = (915, 1270)
 
+LEGIMI_SMALL_WORDS = 2000
+LEGIMI_BIG_WORDS = 10000
+LEGIMI_SMALL_PRICE = 7
+LEGIMI_BIG_PRICE = 20
+
+THUMBNAIL_PRESERVE_FORMAT = True
+
 STATICFILES_FINDERS = (
     'django.contrib.staticfiles.finders.FileSystemFinder',
     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
     'pipeline.finders.PipelineFinder',
 )
 
 STATICFILES_FINDERS = (
     'django.contrib.staticfiles.finders.FileSystemFinder',
     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
     'pipeline.finders.PipelineFinder',
 )
 
-STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
+STATICFILES_STORAGE = 'pipeline.storage.PipelineManifestStorage'
 
 PIPELINE = {
     'CSS_COMPRESSOR': None,
     'JS_COMPRESSOR': None,
 
 PIPELINE = {
     'CSS_COMPRESSOR': None,
     'JS_COMPRESSOR': None,
+    'COMPILERS': (
+        'libsasscompiler.LibSassCompiler',
+    ),
 
     # CSS and JS files to compress
     'STYLESHEETS': {
         'detail': {
             'source_filenames': (
 
     # CSS and JS files to compress
     'STYLESHEETS': {
         'detail': {
             'source_filenames': (
+                'css/html.scss',
                 'css/master.css',
                 'css/toolbar.css',
                 'css/gallery.css',
                 'css/history.css',
                 'css/summary.css',
                 'css/master.css',
                 'css/toolbar.css',
                 'css/gallery.css',
                 'css/history.css',
                 'css/summary.css',
-                'css/html.css',
-                'css/jquery.autocomplete.css',
                 'css/imgareaselect-default.css',
                 'css/imgareaselect-default.css',
-                'css/dialogs.css',
+                'css/dialogs.scss',
+
+                'wiki/scss/splitter.scss',
+                'wiki/scss/visual.scss'
             ),
             'output_filename': 'compressed/detail_styles.css',
         },
             ),
             'output_filename': 'compressed/detail_styles.css',
         },
-        'catalogue': {
+        'documents': {
             'source_filenames': (
                 'css/filelist.css',
             ),
             'source_filenames': (
                 'css/filelist.css',
             ),
-            'output_filename': 'compressed/catalogue_styles.css',
-         },
-         'book': {
+            'output_filename': 'compressed/documents_styles.css',
+        },
+        'book': {
             'source_filenames': (
                 'css/book.css',
             ),
             'source_filenames': (
                 'css/book.css',
             ),
@@ -133,7 +174,6 @@ PIPELINE = {
         },
         'book_list': {
             'source_filenames': (
         },
         'book_list': {
             'source_filenames': (
-                'contextmenu/jquery.contextMenu.css',
                 'css/book_list.css',
             ),
             'output_filename': 'compressed/book_list.css',
                 'css/book_list.css',
             ),
             'output_filename': 'compressed/book_list.css',
@@ -144,7 +184,6 @@ PIPELINE = {
         'detail': {
             'source_filenames': (
                 # libraries
         'detail': {
             'source_filenames': (
                 # libraries
-                'js/lib/jquery/jquery.autocomplete.js',
                 'js/lib/jquery/jquery.blockui.js',
                 'js/lib/jquery/jquery.elastic.js',
                 'js/lib/jquery/jquery.xmlns.js',
                 'js/lib/jquery/jquery.blockui.js',
                 'js/lib/jquery/jquery.elastic.js',
                 'js/lib/jquery/jquery.xmlns.js',
@@ -152,12 +191,16 @@ PIPELINE = {
                 'js/slugify.js',
 
                 # wiki scripts
                 'js/slugify.js',
 
                 # wiki scripts
+                'js/wiki/caret.js',
                 'js/wiki/wikiapi.js',
                 'js/wiki/wikiapi.js',
+                'wiki/js/themes.js',
                 'js/wiki/xslt.js',
 
                 # base UI
                 'js/wiki/base.js',
                 'js/wiki/toolbar.js',
                 'js/wiki/xslt.js',
 
                 # base UI
                 'js/wiki/base.js',
                 'js/wiki/toolbar.js',
+                'js/lib/diff.js',
+                'js/wiki/undo.js',
 
                 # dialogs
                 'js/wiki/dialog_save.js',
 
                 # dialogs
                 'js/wiki/dialog_save.js',
@@ -165,22 +208,22 @@ PIPELINE = {
                 'js/wiki/dialog_pubmark.js',
 
                 # views
                 'js/wiki/dialog_pubmark.js',
 
                 # views
+                'js/wiki/view_sidebar.js',
                 'js/wiki/view_history.js',
                 'js/wiki/view_summary.js',
                 'js/wiki/view_editor_source.js',
                 'js/wiki/view_editor_wysiwyg.js',
                 'js/wiki/view_gallery.js',
                 'js/wiki/view_annotations.js',
                 'js/wiki/view_history.js',
                 'js/wiki/view_summary.js',
                 'js/wiki/view_editor_source.js',
                 'js/wiki/view_editor_wysiwyg.js',
                 'js/wiki/view_gallery.js',
                 'js/wiki/view_annotations.js',
+                'js/wiki/view_properties.js',
                 'js/wiki/view_search.js',
                 'js/wiki/view_column_diff.js',
             ),
             'output_filename': 'compressed/detail_scripts.js',
                 'js/wiki/view_search.js',
                 'js/wiki/view_column_diff.js',
             ),
             'output_filename': 'compressed/detail_scripts.js',
-         },
+        },
         'wiki_img': {
             'source_filenames': (
                 # libraries
         'wiki_img': {
             'source_filenames': (
                 # libraries
-                'js/lib/jquery-1.4.2.min.js',
-                'js/lib/jquery/jquery.autocomplete.js',
                 'js/lib/jquery/jquery.blockui.js',
                 'js/lib/jquery/jquery.elastic.js',
                 'js/lib/jquery/jquery.imgareaselect.js',
                 'js/lib/jquery/jquery.blockui.js',
                 'js/lib/jquery/jquery.elastic.js',
                 'js/lib/jquery/jquery.imgareaselect.js',
@@ -189,6 +232,7 @@ PIPELINE = {
 
                 # wiki scripts
                 'js/wiki_img/wikiapi.js',
 
                 # wiki scripts
                 'js/wiki_img/wikiapi.js',
+                'wiki/js/themes.js',
 
                 # base UI
                 'js/wiki_img/base.js',
 
                 # base UI
                 'js/wiki_img/base.js',
@@ -207,17 +251,18 @@ PIPELINE = {
                 'js/wiki/view_column_diff.js',
             ),
             'output_filename': 'compressed/detail_img_scripts.js',
                 'js/wiki/view_column_diff.js',
             ),
             'output_filename': 'compressed/detail_img_scripts.js',
-         },
-        'catalogue': {
+        },
+        'documents': {
             'source_filenames': (
             'source_filenames': (
-                'js/catalogue/catalogue.js',
+                'js/documents/documents.js',
                 'js/slugify.js',
                 'email_mangler/email_mangler.js',
             ),
                 'js/slugify.js',
                 'email_mangler/email_mangler.js',
             ),
-            'output_filename': 'compressed/catalogue_scripts.js',
-         },
-         'book': {
+            'output_filename': 'compressed/documents_scripts.js',
+        },
+        'book': {
             'source_filenames': (
             'source_filenames': (
+                'js/lib/jquery/jquery.cycle2.min.js',
                 'js/book_text/jquery.eventdelegation.js',
                 'js/book_text/jquery.scrollto.js',
                 'js/book_text/jquery.highlightfade.js',
                 'js/book_text/jquery.eventdelegation.js',
                 'js/book_text/jquery.scrollto.js',
                 'js/book_text/jquery.highlightfade.js',
@@ -227,9 +272,7 @@ PIPELINE = {
         },
         'book_list': {
             'source_filenames': (
         },
         'book_list': {
             'source_filenames': (
-                'contextmenu/jquery.ui.position.js',
-                'contextmenu/jquery.contextMenu.js',
-                'js/catalogue/book_list.js',
+                'js/documents/book_list.js',
             ),
             'output_filename': 'compressed/book_list.js',
         }
             ),
             'output_filename': 'compressed/book_list.js',
         }
@@ -237,6 +280,34 @@ PIPELINE = {
 }
 
 
 }
 
 
+DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
+
+
+SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
+
+
+REST_FRAMEWORK = {
+    'DEFAULT_AUTHENTICATION_CLASSES': [
+        'rest_framework.authentication.SessionAuthentication',
+        'redakcja.api.auth.TokenAuthentication',
+    ],
+    'DEFAULT_FILTER_BACKENDS': [
+        'django_filters.rest_framework.DjangoFilterBackend',
+        'rest_framework.filters.SearchFilter',
+    ]
+}
+
+
+LANGUAGES = [
+    ('pl', 'polski'),
+    ('de', 'Deutsch'),
+    ('lt', 'lietuvių'),
+]
+
+
+TEST_INTEGRATION = False
+
+
 try:
     SENTRY_DSN
 except NameError:
 try:
     SENTRY_DSN
 except NameError:
@@ -246,4 +317,3 @@ else:
         dsn=SENTRY_DSN,
         integrations=[DjangoIntegration()]
     )
         dsn=SENTRY_DSN,
         integrations=[DjangoIntegration()]
     )
-