Merge branch 'develop' into feature/21-add-package-params

This commit is contained in:
Mario Hüttel 2024-11-24 00:18:45 +01:00
commit 26b001d983
11 changed files with 49 additions and 7 deletions

View File

@ -1 +1,2 @@
start_server.sh start_server.sh
run/*

View File

@ -2,6 +2,12 @@
# Example configuration. Must be edited and copied to ".env" next to the compose.yaml # Example configuration. Must be edited and copied to ".env" next to the compose.yaml
#################################################################################################### ####################################################################################################
# User id to use for the web application. This determines the user id, the media and static files are written to the volumes.
# Make sure the user has rw access to these directories.
DJANGO_USER_ID=1000
# Group id to use for the web application
DJANGO_USER_GID=1000
# Path to to mount as the directory for static data. Must be served by a webserver on the /static path # Path to to mount as the directory for static data. Must be served by a webserver on the /static path
DJANGO_STATIC_VOL=/path/to/static/root DJANGO_STATIC_VOL=/path/to/static/root

View File

@ -1,6 +1,11 @@
x-op-restart-policy: &restart_policy
restart: unless-stopped
services: services:
shimatta-kenkyusho-web: shimatta-kenkyusho-web:
<<: *restart_policy
build: . build: .
user: "${DJANGO_USER_ID}:${DJANGO_USER_GID}"
volumes: volumes:
- "${DJANGO_STATIC_VOL:-./run/static}:/var/static" - "${DJANGO_STATIC_VOL:-./run/static}:/var/static"
- "${DJANGO_MEDIA_VOL:-./run/media}:/var/media" - "${DJANGO_MEDIA_VOL:-./run/media}:/var/media"
@ -30,6 +35,7 @@ services:
start_period: 30s start_period: 30s
shimatta-kenkyusho-db: shimatta-kenkyusho-db:
<<: *restart_policy
image: postgres:16.5-alpine image: postgres:16.5-alpine
environment: environment:
POSTGRES_PASSWORD: "${DJANGO_POSTGRESQL_PW:-p4ssw0rd}" POSTGRES_PASSWORD: "${DJANGO_POSTGRESQL_PW:-p4ssw0rd}"

View File

@ -3,4 +3,6 @@ source /home/shimatta/kenkyusho/.venv/bin/activate
cd /home/shimatta/kenkyusho/shimatta_kenkyusho cd /home/shimatta/kenkyusho/shimatta_kenkyusho
python manage.py migrate --settings shimatta_kenkyusho.settings_production python manage.py migrate --settings shimatta_kenkyusho.settings_production
python manage.py collectstatic --settings shimatta_kenkyusho.settings_production --noinput python manage.py collectstatic --settings shimatta_kenkyusho.settings_production --noinput
python manage.py create_kenkyusho_admin_user --settings shimatta_kenkyusho.settings_production
gunicorn -w 4 --bind 0.0.0.0:8000 shimatta_kenkyusho.wsgi:application gunicorn -w 4 --bind 0.0.0.0:8000 shimatta_kenkyusho.wsgi:application

View File

@ -2,5 +2,6 @@
source /home/shimatta/kenkyusho/.venv/bin/activate source /home/shimatta/kenkyusho/.venv/bin/activate
cd /home/shimatta/kenkyusho/shimatta_kenkyusho cd /home/shimatta/kenkyusho/shimatta_kenkyusho
python manage.py migrate --settings shimatta_kenkyusho.settings_production python manage.py migrate --settings shimatta_kenkyusho.settings_production
python manage.py create_kenkyusho_admin_user --settings shimatta_kenkyusho.settings_production
python manage.py runserver 0.0.0.0:8000 --settings shimatta_kenkyusho.settings_production python manage.py runserver 0.0.0.0:8000 --settings shimatta_kenkyusho.settings_production

View File

@ -31,5 +31,6 @@ setuptools==75.3.0
sqlparse==0.4.1 sqlparse==0.4.1
toml==0.10.2 toml==0.10.2
typing_extensions==4.12.2 typing_extensions==4.12.2
tzdata==2024.2
urllib3==2.2.3 urllib3==2.2.3
wrapt==1.12.1 wrapt==1.12.1

View File

@ -0,0 +1,23 @@
from django.core.management.base import BaseCommand, CommandParser
from django.contrib.auth import get_user_model
class Command(BaseCommand):
help = "Create a default superuser if no superuser is already present. This aids automatic deployment inside a container."
def add_arguments(self, parser: CommandParser):
parser.add_argument('--user',
help='Username to create if no admin account is present',
default='admin')
parser.add_argument('--password',
help='Password to set for newly created user. Ignored, if any admin user is already present',
default='admin')
def handle(self, *args, **options):
User = get_user_model()
# Query if there is any admin user
if not User.objects.filter(is_superuser=True).exists():
self.stdout.write(f'No superuser present. Creating {options['user']} with supplied password')
User.objects.create_superuser(username=options['user'], password=options['password'])
else:
self.stdout.write('At least one superuser already exists. Skipping superuser creation')

View File

@ -56,7 +56,6 @@ if get_env_value('DJANGO_FORCE_DEV_MODE', default=False) == 'True':
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', get_env_value('DJANGO_ALLOWED_HOST')] ALLOWED_HOSTS = ['127.0.0.1', 'localhost', get_env_value('DJANGO_ALLOWED_HOST')]
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
@ -239,4 +238,7 @@ CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = False SECURE_SSL_REDIRECT = False
# allow detection of https behind "old" nginx
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
SECURE_HSTS_SECONDS = get_env_value('DJANGO_SECURE_HSTS_SECONDS', default=120) SECURE_HSTS_SECONDS = get_env_value('DJANGO_SECURE_HSTS_SECONDS', default=120)

View File

@ -75,7 +75,7 @@
'component-parameter-type-list': '{% url 'componentparametertype-list' %}', 'component-parameter-type-list': '{% url 'componentparametertype-list' %}',
}; };
</script> </script>
<script type="text/javascript" src="{% static 'js/kenyusho-api-v1.js' %}"></script> <script type="text/javascript" src="{% static 'js/kenkyusho-api-v1.js' %}"></script>
<script type="text/javascript" src="{% static 'js/autocomplete.js' %}"></script> <script type="text/javascript" src="{% static 'js/autocomplete.js' %}"></script>
<script type="text/javascript" src="{% static 'js/autocomplete-foreign-key-field.js' %}"></script> <script type="text/javascript" src="{% static 'js/autocomplete-foreign-key-field.js' %}"></script>
<!-- Initialize bootstrap popovers --> <!-- Initialize bootstrap popovers -->

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Startup the db container # Startup the db container
docker-compose start shimatta-kenkyusho-db docker compose start shimatta-kenkyusho-db
# Override entrypoint to get interactive shell # Override entrypoint to get interactive shell
docker-compose run --entrypoint="/bin/sh" -p 8000:8000 shimatta-kenkyusho-web docker compose run --entrypoint="/bin/sh" -p 8000:8000 shimatta-kenkyusho-web