X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/edf56edfdbea88b0e18c2e5aecbb6e62250ec3d7..309ec8b919d57858254b78cd7ba3b4d84d90da9a:/src/redakcja/settings/__init__.py diff --git a/src/redakcja/settings/__init__.py b/src/redakcja/settings/__init__.py index 71bc998c..b204d0af 100644 --- a/src/redakcja/settings/__init__.py +++ b/src/redakcja/settings/__init__.py @@ -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 * +DATA_UPLOAD_MAX_MEMORY_SIZE = 20000000 + 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", + "django.contrib.messages.context_processors.messages", ], }, }, @@ -37,11 +43,16 @@ MIDDLEWARE = [ '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', - 'maintenancemode.middleware.MaintenanceModeMiddleware', ] if DEBUG: @@ -49,20 +60,25 @@ if DEBUG: '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 = ( + 'modeltranslation', + 'reversion', + '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', @@ -73,8 +89,15 @@ INSTALLED_APPS = ( 'pipeline', 'fnpdjango', 'django_cas_ng', + 'bootstrap4', + 'rest_framework', + 'django_filters', + 'admin_ordering', + 'redakcja.api', 'catalogue', + 'depot', + 'documents', 'cover', 'dvcs', 'wiki', @@ -82,50 +105,71 @@ INSTALLED_APPS = ( 'toolbar', 'apiclient', 'email_mangler', + 'wlxml.apps.WlxmlConfig', + 'alerts', + 'team', + 'sources', + 'isbn', ) if DEBUG: INSTALLED_APPS += ('debug_toolbar',) +LOCALE_PATHS = [ + PROJECT_ROOT + "/locale-contrib", +] + 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_STORAGE = 'pipeline.storage.PipelineCachedStorage' +STATICFILES_STORAGE = 'pipeline.storage.PipelineManifestStorage' PIPELINE = { 'CSS_COMPRESSOR': None, 'JS_COMPRESSOR': None, + 'COMPILERS': ( + 'libsasscompiler.LibSassCompiler', + ), # 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/html.css', - 'css/jquery.autocomplete.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', }, - 'catalogue': { + 'documents': { 'source_filenames': ( 'css/filelist.css', ), - 'output_filename': 'compressed/catalogue_styles.css', - }, - 'book': { + 'output_filename': 'compressed/documents_styles.css', + }, + 'book': { 'source_filenames': ( 'css/book.css', ), @@ -133,7 +177,6 @@ PIPELINE = { }, 'book_list': { 'source_filenames': ( - 'contextmenu/jquery.contextMenu.css', 'css/book_list.css', ), 'output_filename': 'compressed/book_list.css', @@ -144,7 +187,6 @@ PIPELINE = { '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', @@ -152,12 +194,16 @@ PIPELINE = { 'js/slugify.js', # wiki scripts + 'js/wiki/caret.js', 'js/wiki/wikiapi.js', + 'wiki/js/themes.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', @@ -165,22 +211,22 @@ PIPELINE = { '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_properties.js', 'js/wiki/view_search.js', 'js/wiki/view_column_diff.js', ), 'output_filename': 'compressed/detail_scripts.js', - }, + }, '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', @@ -189,6 +235,7 @@ PIPELINE = { # wiki scripts 'js/wiki_img/wikiapi.js', + 'wiki/js/themes.js', # base UI 'js/wiki_img/base.js', @@ -207,17 +254,18 @@ PIPELINE = { 'js/wiki/view_column_diff.js', ), 'output_filename': 'compressed/detail_img_scripts.js', - }, - 'catalogue': { + }, + 'documents': { 'source_filenames': ( - 'js/catalogue/catalogue.js', + 'js/documents/documents.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': ( + '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', @@ -227,9 +275,7 @@ PIPELINE = { }, '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', } @@ -237,6 +283,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: @@ -246,4 +320,3 @@ else: dsn=SENTRY_DSN, integrations=[DjangoIntegration()] ) -