diff options
| -rw-r--r-- | debian/python-django-ishtar.postinst | 63 | 
1 files changed, 63 insertions, 0 deletions
| diff --git a/debian/python-django-ishtar.postinst b/debian/python-django-ishtar.postinst new file mode 100644 index 000000000..a92b034ed --- /dev/null +++ b/debian/python-django-ishtar.postinst @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e +set -x + +DATA_DIR=/var/lib/python-django-ishtar +INSTANCES_FILE=$DATA_DIR/INSTANCES + +case "$1" in +    configure) +        instances="$( (cat $INSTANCES_FILE 2>/dev/null || true) | xargs )" +        if [ -n "$instances" ]; then +            echo "updading instances found in $INSTANCES_FILE: $instances" +            for instance in $instances; do +                # The upgrade procedure below was built from the "update" +                # target and its dependencies in the upstream Makefile: +                echo "updating $instance" +                cd $DATA_DIR/$instance + +                # from "syncdb" target: +                python manage.py syncdb --noinput +                python manage.py migrate + +                # from "compilemessages" target: +                # +                # NOTE: Instead of hardcoding an "apps" variable here, let's +                # look at candidates with find, and check whether each of +                # them indeed contains PO files as a second check: +                maybe_localized=$(cd $DATA_DIR; find -maxdepth 2 -name 'locale') +                for candidate in $maybe_localized; do +                    if find $DATA_DIR/$candidate -name '*.po' >/dev/null 2>&1; then +                        # Really looks like a valid app, let's strip the last +                        # directory, cd into it, and compile messages using +                        # the instance's manage.py script: +                        app=${candidate%%/locale} +                        (cd $DATA_DIR/$app; python $DATA_DIR/$instance/manage.py compilemessages) +                    fi +                done +                # XXX: Doing this only once is likely sufficient, so +                # we could remember having performed that update while +                # taking care of the first instance, to avoid +                # extraneous reruns? + +                # from "collectstatic" target: +                python manage.py collectstatic --noinput + +                echo "updating $instance: OK" +            done +            echo "updating all instances: OK" +        else +            echo "found no instances to upgrade in $INSTANCES_FILE" +        fi +    ;; + +    abort-upgrade|abort-remove|abort-deconfigure) + +    ;; + +    *) +        echo "postinst called with unknown argument \`$1'" >&2 +        exit 1 +    ;; +esac | 
