Commit e193037b authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

cleanup and better management console

parent d7eab834
Loading
Loading
Loading
Loading
+28 −12
Original line number Diff line number Diff line
JAMA_SITE="http://localhost:8000/"
JAMA_DEBUG="0"
JAMA_SECRET="acme"
JAMA_DB_HOST="localhost"
JAMA_DB_PORT="5432"
JAMA_DB_NAME="acme"
JAMA_DB_USER="acme"
JAMA_DB_PASSWORD="acme"
JAMA_IIIF_DIR=""
JAMA_FILES_DIR=""
JAMA_IIIF_ENDPOINT="http://localhost/iip/IIIF="
CACHE_LOCATION="var/cache"
JAMA_APPS=""
JAMA_ARK_SERVER=""
JAMA_ARK_APP_ID=""
JAMA_ARK_SECRET_KEY=""
JAMA_ARK_SERVER=""
JAMA_DB_ADAPTER="sqlite"
JAMA_DB_HOST="localhost"
JAMA_DB_NAME="django"
JAMA_DB_PASSWORD="django"
JAMA_DB_PORT="5432"
JAMA_DB_USER="django"
JAMA_DEBUG="0"
JAMA_FILES_DIR="var/media_sources_files"
JAMA_IIIF_DIR="var/iiif"
JAMA_IIIF_ENDPOINT="http://localhost/iip/IIIF="
JAMA_IIIF_PROCESSING_DIR="var/processing"
JAMA_IIIF_UPSCALING_PREFIX="^"
JAMA_LOG_FILE="var/jama.log"
JAMA_PARTIAL_UPLOADS_DIR="var/partial_uploads"
JAMA_SECRET="Vas5xetqnK4P7wYJcgGFyh"
JAMA_SITE="http://localhost:8000/"
JAMA_SQLITE_DB_PATH="var/db.sqlite3"
JAMA_URL_BASE_PATH=""
JAMA_USE_ARK="0"
JAMA_USE_CACHALOT="0"
JAMA_USE_MODSHIB="#"
JAMA_USE_OAI="0"
JAMA_USE_WEBP="0"
MODSHIB_SHOW_LOCAL_LOGIN="1"
MODSHIB_SHOW_SSO_LOGIN="0"
VAR_DIR="var"
 No newline at end of file
+2 −1
Original line number Diff line number Diff line
@@ -21,3 +21,4 @@ cache
processing
uv.lock
.vscode
var
 No newline at end of file
+41 −25
Original line number Diff line number Diff line
@@ -5,36 +5,52 @@ APIs et interfaces de stockage de médias.
## Pré-requis

- uv `curl -LsSf https://astral.sh/uv/install.sh | sh`
- PostgreSQL >= 11
- une base de donnée PostgreSQL vide et un utilisateur ayant tous les droits dessus
- exiftool
- imagemagick (convert)
- pdftoppm, pdftotext (poppler-utils)
- vips
- tesseract

Optionnel:

- PostgreSQL >= 11
- une base de donnée PostgreSQL vide et un utilisateur ayant tous les droits dessus
- exiftool


## Variables d'environnement / valeurs par défaut

    export JAMA_SITE="http://localhost:8000/"
    export JAMA_DEBUG="0"  # mettre à "1" en développement
    export JAMA_SECRET="[voir source]"
    export JAMA_DB_HOST="localhost"
    export JAMA_DB_PORT="5432"
    export JAMA_DB_NAME="django"
    export JAMA_DB_USER="django"
    export JAMA_DB_PASSWORD="django"
    export JAMA_SQLITE_DB_PATH=""  # si renseigné, vient remplacer PostgreSQL par SQLite
    export JAMA_IIIF_DIR=""  # dossier où seront stockés les fichiers tuilés pour le serveur IIIF
    export JAMA_FILES_DIR=""  # dossier où seront stockés les fichiers d'origine
    export JAMA_IIIF_ENDPOINT="http://localhost/iip/IIIF="  # URL de base du serveur IIIF
    export JAMA_APPS=""  # liste d'applications Django tierce à activer, séparées par des virgules
    export JAMA_ARK_SERVER=""  # URL du serveur ARK (voir https://git.unicaen.fr/pdn-certic/ark)
    export JAMA_ARK_APP_ID=""  # identifiant pour le serveur ARK
    export JAMA_ARK_SECRET_KEY=""  # secret pour le serveur ARK
    export JAMA_USE_CACHALOT="0"  # "1" pour utiliser le cache de base de donnée
    export JAMA_USE_WEBP="0"  # "1" pour utiliser la compression webp pour le tuilage des images (vérifier la compatibilité du serveur IIIF)
    export JAMA_USE_OAI="0"  # "1" pour activer les URLs OAI-PMH
    export JAMA_USE_ARK="0"  # "1" pour activer les URLs ARK
    CACHE_LOCATION="var/cache"
    JAMA_APPS=""
    JAMA_ARK_APP_ID=""
    JAMA_ARK_SECRET_KEY=""
    JAMA_ARK_SERVER=""
    JAMA_DB_ADAPTER="sqlite"  # sqlite ou potgresql
    JAMA_DB_HOST="localhost"  # si JAMA_DB_ADAPTER est postgresql
    JAMA_DB_NAME="django"  # si JAMA_DB_ADAPTER est postgresql
    JAMA_DB_PASSWORD="django"  # si JAMA_DB_ADAPTER est postgresql
    JAMA_DB_PORT="5432"  # si JAMA_DB_ADAPTER est postgresql
    JAMA_DB_USER="django"  # si JAMA_DB_ADAPTER est postgresql
    JAMA_DEBUG="0"
    JAMA_FILES_DIR="var/media_sources_files"  # dossier où seront stockés les fichiers d'origine
    JAMA_IIIF_DIR="var/iiif"  # dossier où seront stockés les fichiers tuilés pour le serveur IIIF
    JAMA_IIIF_ENDPOINT="http://localhost/iip/IIIF="  # URL de base du serveur IIIF
    JAMA_IIIF_PROCESSING_DIR="var/processing"
    JAMA_IIIF_UPSCALING_PREFIX="^"
    JAMA_LOG_FILE="var/jama.log"
    JAMA_PARTIAL_UPLOADS_DIR="var/partial_uploads"
    JAMA_SECRET="7d*_8c!d$vv963qpr45_x)@f2t-x6fu2&yi+m+d6s!p!lt+_j+"
    JAMA_SITE="http://localhost:8000/"
    JAMA_SQLITE_DB_PATH=""
    JAMA_URL_BASE_PATH=""
    JAMA_USE_ARK="0"  # "1" pour activer les URLs ARK
    JAMA_USE_CACHALOT="0"  # "1" pour utiliser le cache de base de donnée
    JAMA_USE_MODSHIB="1"
    JAMA_USE_OAI="0"  # "1" pour activer les URLs OAI-PMH
    JAMA_USE_WEBP="0"  # "1" pour utiliser la compression webp pour le tuilage des images (vérifier la compatibilité du serveur IIIF)
    JAMA_VAR_DIR="var"  # Dossier par défaut pour toutes les données
    MODSHIB_SHOW_LOCAL_LOGIN="1"
    MODSHIB_SHOW_SSO_LOGIN="0"


> _Astuce_ : créer un fichier `.env` à la racine du projet avec l'ensemble des variables déclarées

@@ -46,7 +62,7 @@ JAMA_DEBUG="0"

## Installation

### Base de données (développement)
### Base de données (développement), si JAMA_DB_ADAPTER est postgresql (passer si sqlite)

```bash
source .env
@@ -54,7 +70,7 @@ sudo -u postgres psql -p $JAMA_DB_PORT -dpostgres -t -c "CREATE ROLE $JAMA_DB_US
sudo -u postgres createdb -p $JAMA_DB_PORT -O $JAMA_DB_USER -E UTF8 $JAMA_DB_NAME;
```

### Installation de JAMA et création d'un super-utilisateur
### Installation de JAMA, création d'un super-utilisateur et d'un projet de test

    make install

+1 −2
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ class AnnotationTestCase(TestCase):
        )
        # give all permissions to admin role
        for perm in models.Permission.objects.all():
            if perm.label != "collection.public_only":
            self.admin_role.permissions.add(perm)

        # give admin role to the user on the project
+21 −24
Original line number Diff line number Diff line
@@ -5,25 +5,29 @@ import tempfile
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
BASE_DIR = Path(__file__).resolve().parent.parent

os.makedirs(Path(BASE_DIR, "var"), exist_ok=True)
VAR_DIR = os.getenv("JAMA_VAR_DIR") or Path(BASE_DIR, "var")
VAR_DIR = Path(VAR_DIR).resolve()

os.makedirs(VAR_DIR, exist_ok=True)

JAMA_DB_ADAPTER = os.getenv("JAMA_DB_ADAPTER") or "sqlite"
JAMA_URL_BASE_PATH = os.getenv("JAMA_URL_BASE_PATH") or ""
JAMA_USE_MODSHIB = True if os.getenv("JAMA_USE_MODSHIB", "0") == "1" else False
JAMA_USE_MODSHIB = True if os.getenv("JAMA_USE_MODSHIB", "1") == "1" else False
JAMA_USE_CACHALOT = True if os.getenv("JAMA_USE_CACHALOT", "0") == "1" else False
JAMA_USE_WEBP = True if os.getenv("JAMA_USE_WEBP", "1") == "1" else False
JAMA_USE_OAI = True if os.getenv("JAMA_USE_OAI", "0") == "1" else False
JAMA_USE_ARK = True if os.getenv("JAMA_USE_ARK", "0") == "1" else False
JAMA_SQLITE_DB_PATH = os.getenv("JAMA_SQLITE_DB_PATH", "")
JAMA_SQLITE_DB_PATH = os.getenv("JAMA_SQLITE_DB_PATH") or Path(VAR_DIR, "db.sqlite3")
JAMA_IIIF_PROCESSING_DIR = os.getenv(
    "JAMA_IIIF_PROCESSING_DIR", f"{BASE_DIR}/processing"
    "JAMA_IIIF_PROCESSING_DIR", Path(VAR_DIR, "processing")
)
PARTIAL_UPLOADS_DIR = os.getenv("JAMA_PARTIAL_UPLOADS_DIR") or str(
    Path(BASE_DIR, "var", "partial_uploads").resolve()
    Path(VAR_DIR, "partial_uploads").resolve()
)
os.makedirs(PARTIAL_UPLOADS_DIR, exist_ok=True)

MEDIA_FILES_DIR = os.getenv("JAMA_FILES_DIR") or str(
    Path(BASE_DIR, "var", "media_source_files").resolve()
    Path(VAR_DIR, "media_source_files").resolve()
)
os.makedirs(MEDIA_FILES_DIR, exist_ok=True)

@@ -32,7 +36,7 @@ TMP_THUMBNAILS_DIR = os.getenv("JAMA_TMP_THUMBNAILS_DIR") or tempfile.gettempdir
JAMA_SITE = os.getenv("JAMA_SITE") or "http://localhost:8000/"

JAMA_IIIF_UPSCALING_PREFIX = os.getenv("JAMA_IIIF_UPSCALING_PREFIX") or ""
IIIF_DIR = os.getenv("JAMA_IIIF_DIR") or str(Path(BASE_DIR, "var", "iiif").resolve())
IIIF_DIR = os.getenv("JAMA_IIIF_DIR") or str(Path(VAR_DIR, "iiif").resolve())
os.makedirs(IIIF_DIR, exist_ok=True)
IIIF_PATH_SEPARATOR = os.getenv("JAMA_IIIF_PATH_SEPARATOR") or os.path.sep

@@ -40,9 +44,8 @@ IIIF_PATH_SEPARATOR = os.getenv("JAMA_IIIF_PATH_SEPARATOR") or os.path.sep
ARK_SERVER = os.getenv("JAMA_ARK_SERVER", "")
ARK_APP_ID = os.getenv("JAMA_ARK_APP_ID", "")
ARK_SECRET_KEY = os.getenv("JAMA_ARK_SECRET_KEY", "")
CACHE_FILE_LOCATION = os.getenv(
    "CACHE_LOCATION", str(Path(BASE_DIR, "var", "cache").resolve())
)
CACHE_FILE_LOCATION = os.getenv("CACHE_LOCATION", str(Path(VAR_DIR, "cache").resolve()))
CACHE_FILE_LOCATION = Path(CACHE_FILE_LOCATION).resolve()
os.makedirs(CACHE_FILE_LOCATION, exist_ok=True)

# SECURITY WARNING: keep the secret key used in production secret!
@@ -54,7 +57,7 @@ SECRET_KEY = (
DEBUG = True if os.getenv("JAMA_DEBUG") == "1" else False

JAMA_IIIF_ENDPOINT = os.getenv("JAMA_IIIF_ENDPOINT") or "http://localhost/iip/IIIF="
JAMA_LOG_FILE = os.getenv("JAMA_LOG_FILE") or "{}/jama.log".format(BASE_DIR)
JAMA_LOG_FILE = os.getenv("JAMA_LOG_FILE") or Path(VAR_DIR, "jama.log")
ALLOWED_HOSTS = ["*"]
CSRF_TRUSTED_ORIGINS = [JAMA_SITE[:-1]]

@@ -72,6 +75,8 @@ INSTALLED_APPS = [
    "huey.contrib.djhuey",
    "authcli.apps.AuthcliConfig",
    "annotations.apps.AnnotationsConfig",
    "management.apps.ManagementConfig",
    "django_extensions",
]


@@ -82,11 +87,12 @@ if JAMA_USE_MODSHIB:
    MODSHIB_SHOW_LOCAL_LOGIN = (
        True if os.getenv("MODSHIB_SHOW_LOCAL_LOGIN", "1") == "1" else False
    )
    MODSHIB_SHOW_SSO_LOGIN = (
        True if os.getenv("MODSHIB_SHOW_SSO_LOGIN", "0") == "1" else False
    )
    INSTALLED_APPS.append("modshib.apps.ModshibConfig")


SHOW_SQL = True if os.getenv("JAMA_SHOW_SQL", False) == "1" else False

AUTO_REGISTER_APPS = []
STATICFILES_DIRS = []
for app in os.getenv("JAMA_APPS", "").split(","):
@@ -97,9 +103,6 @@ for app in os.getenv("JAMA_APPS", "").split(","):
        AUTO_REGISTER_APPS.append(app)


if DEBUG:
    INSTALLED_APPS.append("django_extensions")

MIDDLEWARE = [
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.security.SecurityMiddleware",
@@ -157,7 +160,7 @@ TEMPLATES = [
WSGI_APPLICATION = "jama.wsgi.application"


if JAMA_SQLITE_DB_PATH:
if JAMA_DB_ADAPTER == "sqlite":
    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.sqlite3",
@@ -189,8 +192,6 @@ else:
        }
    }

# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
@@ -207,8 +208,6 @@ AUTH_PASSWORD_VALIDATORS = [
    },
]

# Internationalization
# https://docs.djangoproject.com/en/3.1/topics/i18n/

LANGUAGE_CODE = "fr-fr"

@@ -220,8 +219,6 @@ USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/

STATIC_ROOT = "{}/static/".format(BASE_DIR)
STATIC_URL = JAMA_URL_BASE_PATH + "/static/"
@@ -255,7 +252,7 @@ LOGGING = {

HUEY = {
    "huey_class": "huey.SqliteHuey",  # Huey implementation to use.
    "filename": Path(BASE_DIR, "var", "huey.db").resolve(),
    "filename": Path(VAR_DIR, "huey.db").resolve(),
    "results": True,  # Store return values of tasks.
    "store_none": False,  # If a task returns None, do not save to results.
    "immediate": False,  # If DEBUG=True, run synchronously.
Loading