summaryrefslogtreecommitdiff
path: root/debian/python3-django-ishtar.postinst
blob: f2288a49cc9555ff884eafced364b498b46ee9e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/bash

set -e
#set -x

cecho() {
  local code="\033["
  case "$1" in
    black  | bk) color="${code}0;30m";;
    red    |  r) color="${code}1;31m";;
    green  |  g) color="${code}1;32m";;
    yellow |  y) color="${code}1;33m";;
    blue   |  b) color="${code}1;34m";;
    purple |  p) color="${code}1;35m";;
    cyan   |  c) color="${code}1;36m";;
    gray   | gr) color="${code}0;37m";;
    *) local text="$1"
  esac
  [ -z "$text" ] && local text="$color$2${code}0m"
  echo -e "$text"
}

DATA_DIR=/srv/ishtar
CONFIG_PATH=/etc/ishtar
INSTANCES_FILE=$CONFIG_PATH/instances

case "$1" in
    configure)
        mkdir -p $CONFIG_PATH 2> /dev/null
        if [ ! -f $CONFIG_PATH/config ]; then
            cp /usr/share/python3-django-ishtar/install/config.template $CONFIG_PATH/config ;
        fi
        source $CONFIG_PATH/config
        export LANG=$ISHTAR_LOCALE.UTF-8
        if [ "$(locale 2>&1 >/dev/null|wc -l)" != 0 ]; then
            cecho r "Unable to set LANG=$LANG properly"
            cecho y "Try: 'dpkg-reconfigure locales' or install the 'locales-all' package."
            cecho y "If you want to use another locale, modify /etc/ishtar/config properly."
            exit 1
        fi
        instances="$( (cat $INSTANCES_FILE 2>/dev/null || true) | xargs )"
        if [ -n "$instances" ]; then
            if [ -f /usr/sbin/rabbitmqctl ]; then  # assume queues are configured
                cecho c "Verify rabbitmq queues are empty"
                for instance in $instances; do
                    for res in `rabbitmqctl list_queues -p /ishtar$instance -q messages`; do
                        if [ $res != 0 ] && [ $res != 'messages' ]; then
                            cecho r "The queue for $instance is not empty ($res messages)."
                            cecho y "Wait a few minutes (hours?) for update."
                            exit 1
                        fi;
                    done
                done
            fi
            messages_compiled="";
            for instance in $instances; do
                if [ ! $messages_compiled ]; then
                  cecho c "Compile i18n messages"
                  (cd $DATA_DIR; python3 $DATA_DIR/$instance/manage.py compilemessages);
                  messages_compiled="ok";
                  cecho c "Updating instances found in $INSTANCES_FILE: $instances"
                fi
                # The upgrade procedure below was built from the "update"
                # target and its dependencies in the upstream Makefile:
                cecho c "* Updating $instance"
                cd $DATA_DIR/$instance
                # migrate
                python3 manage.py migrate
                # "collectstatic"
                python3 manage.py collectstatic --noinput
                cecho g "Updating $instance: OK"
            done
            cecho g "Updating all instances: OK"

            # the assumption is that nginx and uwsgi were configured
            # through ishtar-prepare-instance, so let's restart them
            # unconditionally:
            cecho c "Restarting uwsgi and nginx"
            invoke-rc.d uwsgi restart
            invoke-rc.d nginx restart
            cecho g "Restarting uwsgi and nginx: OK"
            SUPERVISOR=/usr/bin/supervisorctl
            if [ -f "$SUPERVISOR" ]; then
                cecho c "Restarting supervisor service"
                $SUPERVISOR restart all
                cecho g "Restarting supervisor service: OK"
            fi
        else
            cecho g "Found no instances to update in $INSTANCES_FILE"
            cecho y "To create a new instance:"
            cecho y "    ishtar-prepare-instance"
        fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

#DEBHELPER#