diff --git a/app/escriptorium/context_processors.py b/app/escriptorium/context_processors.py index 5c226b31c36778f6b5d5cb7d7de0e460a24fa622..fb733ea58179f4a6571e0843cf85720fea1a97bf 100644 --- a/app/escriptorium/context_processors.py +++ b/app/escriptorium/context_processors.py @@ -5,3 +5,6 @@ def enable_cookie_consent(request): return {'ENABLE_COOKIE_CONSENT': getattr(settings, 'ENABLE_COOKIE_CONSENT', True)} + +def custom_homepage(request): + return {'CUSTOM_HOME': getattr(settings, 'CUSTOM_HOME', False)} diff --git a/app/escriptorium/local_settings.py.example b/app/escriptorium/local_settings.py.example index 56d974991e957b565b652834acc7908e2271b7c5..d7337561f992b14c43c74383d592ee9316429fee 100644 --- a/app/escriptorium/local_settings.py.example +++ b/app/escriptorium/local_settings.py.example @@ -39,3 +39,8 @@ DEBUG_TOOLBAR_PANELS = [ ] # USE_CELERY = False +# CELERY_TASK_ALWAYS_EAGER = True + +# LOGGING['loggers']['kraken']['level'] = 'DEBUG' + +# CUSTOM_HOME = True diff --git a/app/escriptorium/settings.py b/app/escriptorium/settings.py index a019a3270f3f6688d5b2fb59b8093d763b7b487a..4f6471c79ba21d39cea427be34c4c4a6f3a7c5f9 100644 --- a/app/escriptorium/settings.py +++ b/app/escriptorium/settings.py @@ -41,6 +41,8 @@ SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.getenv('DEBUG', False) +CUSTOM_HOME = os.getenv('CUSTOM_HOME', False) + ALLOWED_HOSTS = ['*'] ASGI_APPLICATION = "escriptorium.routing.application" @@ -87,7 +89,8 @@ ROOT_URLCONF = 'escriptorium.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(PROJECT_ROOT, 'templates')], + 'DIRS': [os.path.join(PROJECT_ROOT, 'templates'), + os.path.join(BASE_DIR, 'homepage')], # custom homepage dir (volume in docker) 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -95,7 +98,8 @@ TEMPLATES = [ 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', - 'escriptorium.context_processors.enable_cookie_consent' + 'escriptorium.context_processors.enable_cookie_consent', + 'escriptorium.context_processors.custom_homepage' ], }, }, @@ -219,6 +223,7 @@ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = [ os.path.join(PROJECT_ROOT, 'static'), + os.path.join(BASE_DIR, 'homepage'), # custom homepage directory FRONTEND_DIR ] diff --git a/app/escriptorium/static/images/ephe.png b/app/escriptorium/static/images/ephe.png new file mode 100644 index 0000000000000000000000000000000000000000..6856c3805d904a95eb64c4611840b829eb974b61 Binary files /dev/null and b/app/escriptorium/static/images/ephe.png differ diff --git a/app/escriptorium/static/images/escriptorium_hd.png b/app/escriptorium/static/images/escriptorium_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..20afca793e0282bab0f11c4a26b83bdfbf94a990 Binary files /dev/null and b/app/escriptorium/static/images/escriptorium_hd.png differ diff --git a/app/escriptorium/static/images/favicon.ico b/app/escriptorium/static/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7278052495125e8ceba83c4ddbc80dade813f193 Binary files /dev/null and b/app/escriptorium/static/images/favicon.ico differ diff --git a/app/escriptorium/static/images/h2020.jpg b/app/escriptorium/static/images/h2020.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9977dd90d6a92066fb847a2823d1f71fe0799ddb Binary files /dev/null and b/app/escriptorium/static/images/h2020.jpg differ diff --git a/app/escriptorium/static/images/horizon.jpg b/app/escriptorium/static/images/horizon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ef9d3b92b72e271613c1c228d7a0502c6afd899 Binary files /dev/null and b/app/escriptorium/static/images/horizon.jpg differ diff --git a/app/escriptorium/static/images/inria.png b/app/escriptorium/static/images/inria.png new file mode 100644 index 0000000000000000000000000000000000000000..b2997fd5a37783cd23d6962dfa692ee9773cbe0a Binary files /dev/null and b/app/escriptorium/static/images/inria.png differ diff --git a/app/escriptorium/static/images/openiti.png b/app/escriptorium/static/images/openiti.png new file mode 100644 index 0000000000000000000000000000000000000000..0be04e49b604f0ea013c52a317e93d28a7db4055 Binary files /dev/null and b/app/escriptorium/static/images/openiti.png differ diff --git a/app/escriptorium/static/images/psl.png b/app/escriptorium/static/images/psl.png new file mode 100644 index 0000000000000000000000000000000000000000..a5df9793088b1b6c6e78321a80abfe5b7ac57076 Binary files /dev/null and b/app/escriptorium/static/images/psl.png differ diff --git a/app/escriptorium/static/images/pslscripta.png b/app/escriptorium/static/images/pslscripta.png new file mode 100644 index 0000000000000000000000000000000000000000..e5850eb2544e912f0a865216d3afeb8f54544aa7 Binary files /dev/null and b/app/escriptorium/static/images/pslscripta.png differ diff --git a/app/escriptorium/static/images/regionidf.jpg b/app/escriptorium/static/images/regionidf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8d08a09da84bbc3b8add3d8f14fc8bc45886b39 Binary files /dev/null and b/app/escriptorium/static/images/regionidf.jpg differ diff --git a/app/escriptorium/static/images/t1.png b/app/escriptorium/static/images/t1.png new file mode 100644 index 0000000000000000000000000000000000000000..926bf47050f74f8fd309498a40ca433d3578f109 Binary files /dev/null and b/app/escriptorium/static/images/t1.png differ diff --git a/app/escriptorium/static/images/t2.png b/app/escriptorium/static/images/t2.png new file mode 100644 index 0000000000000000000000000000000000000000..c51f244e1a7ed83c5b722951bd5bef1a96fa41b0 Binary files /dev/null and b/app/escriptorium/static/images/t2.png differ diff --git a/app/escriptorium/static/images/t3.png b/app/escriptorium/static/images/t3.png new file mode 100644 index 0000000000000000000000000000000000000000..17d0f6b526489d9e566eeeab5de9d18312875524 Binary files /dev/null and b/app/escriptorium/static/images/t3.png differ diff --git a/app/escriptorium/templates/base.html b/app/escriptorium/templates/base.html index 780cdb3ddb69f4975df0009f0690dde9bd3ccbf3..ac673a3fa27359b2a874bef5bd2dc37c0398a55a 100644 --- a/app/escriptorium/templates/base.html +++ b/app/escriptorium/templates/base.html @@ -10,8 +10,8 @@ {% comment %} <meta name="description" content=""> <meta name="author" content=""> - <link rel="icon" href="../../favicon.ico"> {% endcomment %} + <link rel="icon" href="{% static "images/favicon.ico" %}"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> @@ -25,20 +25,24 @@ {% endblock styles %} </head> <body class="{% block bodyclass %}{% endblock %}"> - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> - <a class="navbar-brand" href="{% url 'home' %}">eScriptorium</a> - <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon"></span> - </button> + <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> + <a class="navbar-brand" href="{% url 'home' %}"> + <img src="{% static "images/escriptorium_hd.png" %}" width="30" height="30" class="mb-1"> + eScriptorium + </a> - <div class="collapse navbar-collapse" id="navbarSupportedContent"> - <ul class="navbar-nav mr-auto"> - <li class="nav-item {% block nav-home-class %}{% endblock %}"> - <a class="nav-link" href="{% url 'home'%}">Home</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="#">{% trans 'About' %}</a> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div class="collapse navbar-collapse" id="navbarSupportedContent"> + <ul class="navbar-nav mr-auto"> + <li class="nav-item {% block nav-home-class %}{% endblock %}"> + <a class="nav-link" href="{% url 'home'%}">Home</a> </li> + <!-- <li class="nav-item"> + <a class="nav-link" href="#">{% trans 'About' %}</a> + </li> --> <li class="nav-item"> <a class="nav-link" href="{% url 'contactus' %}">{% trans 'Contact' %}</a> </li> diff --git a/app/escriptorium/templates/core/home.html b/app/escriptorium/templates/core/home.html index 188cf43eecb68c28dc8858724919bbc3e4d68d00..99ae44ea2977a2f3705058af1f80160ce15eab84 100644 --- a/app/escriptorium/templates/core/home.html +++ b/app/escriptorium/templates/core/home.html @@ -1,14 +1,87 @@ {% extends 'base.html' %} -{% load i18n %} +{% load i18n staticfiles %} {% block head_title %}{% trans "Homepage" %}{% endblock %} {% block nav-home-class %}active{% endblock %} {% block body %} -<div class="jumbotron"> - <h1>eScriptorium</h1> - <p>{% trans "A project providing digital recognition of handwritten documents using machine learning techniques." %}</p> - <p><small>Version {{ VERSION_DATE }} - <br/>{{ KRAKEN_VERSION }}</small></p> +<div class="jumbotron text-center bg-light"> + {% if CUSTOM_HOME %} + {% include "additional_heading.html" %} + {% else %} + <h1 class="jumbotron-heading">eScriptorium</h1> + <p class="lead text-muted">{% trans "A project providing digital recognition of handwritten documents using machine learning techniques." %}</p> + {% endif %} </div> + +<div class="container my-5"> + <div class="row"> + <div class="col-lg-4 text-center"> + <img class="rounded-circle" src="{% static "images/t1.png" %}" alt="" width="140" height="140"> + <h2>{% trans "Data Interchange" %}</h2> + <p class="text-muted">{% trans "Import or Export transcriptions with Alto or Page XML, Import images as zip or IIIF. Access data from any application through a full Rest API." %}</p> + </div> + <div class="col-lg-4 text-center"> + <img class="rounded-circle" src="{% static "images/t2.png" %}" alt="Generic placeholder image" width="140" height="140"> + <h2>{% trans "Manual Edition" %}</h2> + <p class="text-muted">{% trans "Make use of an ergonomic user interface leveraging modern browser technology to edit segmentations and transcriptions." %}</p> + </div> + <div class="col-lg-4 text-center"> + <img class="rounded-circle" src="{% static "images/t3.png" %}" alt="Generic placeholder image" width="140" height="140"> + <h2>{% trans "Automatic Transcription" %}</h2> + <p class="text-muted">{% trans "Train and apply new neural networks to vastly speed up the transcription process of large corpora." %}</p> + </div> + </div> + + <hr/> +</div> + + +<div class="row"> + <div class="my-5 container-fluid text-center"> + <a href="https://www.ephe.psl.eu" target="_blank"> + <img src="{% static "images/ephe.png" "%}" alt="EPHE logo" height="100"> + </a> + <a href="https://www.resilience-ri.eu/" class="pl-4" target="_blank"> + <img src="{% static "images/resilience.png" "%}" alt="Resilience logo" height="60"> + </a> + <a href="https://scripta.psl.eu/en/" class="pl-4" target="_blank"> + <img src="{% static "images/pslscripta.png" "%}" alt="Scripta PSL logo" height="50"> + </a> + <a href="https://ec.europa.eu/programmes/horizon2020/" class="pl-4" target="_blank"> + <img src="{% static "images/h2020.jpg" "%}" alt="Horizon 2020 logo" height="80"> + </a> + <a href="https://inria.fr/fr" class="pl-4" target="_blank"> + <img src="{% static "images/inria.png" "%}" alt="INRIA logo" height="60"> + </a> + <a href="https://www.openiti.org/" class="pl-4" target="_blank"> + <img src="{% static "images/openiti.png" "%}" alt="DIM Region ile de france logo" height="90"> + </a> + </div> + + {% if CUSTOM_HOME %} + {% include "additional_icons.html" %} + {% endif %} +</div> + +<footer class="bg-light mt-5 pt-1"> + <div class="container"> + <div class="row"> + <div class="col-6"> + <h5>{% trans "Resources" %}</h5> + <ul class="list-unstyled"> + <li><a href="https://lectaurep.hypotheses.org/documentation/escriptorium-tutorial-en" target="_blank">{% trans "Tutorial" %}</a></li> + <li><a href="https://gitlab.inria.fr/scripta/escriptorium" target="_blank">{% trans "eScriptorium open source code" %}</a> Version {{ VERSION_DATE }}</li> + <li><a href="https://escripta.hypotheses.org/" target="_blank">{% trans "Scripta Blog" %}</a></li> + <li><a href="http://kraken.re/" target="_blank">{{ KRAKEN_VERSION|capfirst }}</a></li> + <li><a href="https://gitlab.inria.fr/scripta/escriptorium/-/wikis/home" target="_blank">Wiki</a></li> + </ul> + </div> + + {% if CUSTOM_HOME %} + {% include "additional_footer.html" %} + {% endif %} + </div> + </div> +</footer> {% endblock %} diff --git a/app/homepage_example/additional_footer.html b/app/homepage_example/additional_footer.html new file mode 100644 index 0000000000000000000000000000000000000000..3b3cfba9bf0b49f68a2180447e47c3f869088f00 --- /dev/null +++ b/app/homepage_example/additional_footer.html @@ -0,0 +1,9 @@ +{% load i18n %} +<div class="col-6"> + <h5>{% trans "Powered by" %}</h5> + <ul class="list-unstyled"> + <li><a href="https://www.python.org" target="_blank">Python</a></li> + <li><a href="https://www.djangoproject.com" target="_blank">Django</a></li> + <li><a href="https://vuejs.org" target="_blank">Vue.js</a></li> + </ul> +</div> diff --git a/app/homepage_example/additional_heading.html b/app/homepage_example/additional_heading.html new file mode 100644 index 0000000000000000000000000000000000000000..7895815b24315554e859aca654f9dc4e61621a50 --- /dev/null +++ b/app/homepage_example/additional_heading.html @@ -0,0 +1,3 @@ +<h1 class="jumbotron-heading">eScriptorium</h1> +<p class="lead text-muted">A project providing digital recognition of handwritten documents using machine learning techniques.</p> +<p>eScriptorium accounts are created on invitation only for now. If your institution doesn't provide it, you can use the contact form to ask for access.</p> diff --git a/app/homepage_example/additional_icons.html b/app/homepage_example/additional_icons.html new file mode 100644 index 0000000000000000000000000000000000000000..1b6ece1af55126823c5e18d33b69f9d626352b21 --- /dev/null +++ b/app/homepage_example/additional_icons.html @@ -0,0 +1,11 @@ +{% load staticfiles %} +</div> <!-- example to create another row --> +<div class="row"> + <div class="container-fluid text-center"> + <a href="http://www.python.org" target="_blank"> + <img src="{% static "python.png" %}" alt="custom logo" height="50"> + </a> + <a href="http://www.djangoproject.com" target="_blank"> + <img src="{% static "django.png" %}" alt="custom logo" height="50"> + </a> + </div> diff --git a/app/homepage_example/django.png b/app/homepage_example/django.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1d873eeb34af6bf0c69baec82fe45e1bf749b9 Binary files /dev/null and b/app/homepage_example/django.png differ diff --git a/app/homepage_example/python.png b/app/homepage_example/python.png new file mode 100644 index 0000000000000000000000000000000000000000..a215d687b662d4a105fc116492d0a3add6435cfb Binary files /dev/null and b/app/homepage_example/python.png differ diff --git a/docker-compose.override.yml_example b/docker-compose.override.yml_example index 519b21d512d6bd5e98a89c8eb850afe67e480eb1..5206c72563c9a520c9b913a09a72687c32044d1a 100644 --- a/docker-compose.override.yml_example +++ b/docker-compose.override.yml_example @@ -10,6 +10,12 @@ services: # constraints: # - node.hostname == frontend0 + ### to customize the homepage, uncomment this + # environment: + # - CUSTOM_HOME=True + # volumes: + # - $PWD/app/homepage + channelserver: restart: always # deploy: diff --git a/docker-compose.yml b/docker-compose.yml index b7bbb53b52f4ed4e023f75f5efd68eb81f49f84b..89b5980cd597a776019cb1c3370b13aae08a0a4d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,8 @@ services: web: <<: *app command: uwsgi --ini /usr/src/app/uwsgi.ini + volumes: + - logs:/user/src/app/escriptorium/logs expose: - 8000 @@ -116,3 +118,4 @@ volumes: media: postgres: esdata: + logs: