~brunogirin/charms/precise/python-django/repos-branch

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
set -e

UNIT_NAME=`echo $JUJU_UNIT_NAME | cut -d/ -f1`

VCS=$(config-get vcs)
REPOS_URL=$(config-get repos_url)
REQUIREMENTS=$(config-get requirements)

SITE_USERNAME=$(config-get site_username)
SITE_DOMAIN=$(config-get site_domain)
SITE_PASSWORD=$(config-get site_password)
SITE_ADMIN_EMAIL=$(config-get site_admin_email)
SITE_SECRET_KEY=$(config-get site_secret_key)
AUTH_URL=$(config-get auth_url)
API_KEY=$(config-get api_key)

SWIFT_CONTAINER_NAME=$(config-get swift_container_name)
SWIFT_USERNAME=$(config-get swift_username)
SWIFT_VERSION=$(config-get swift_version)
SWIFT_PREFIX=$(config-get swift_prefix)
SWIFT_USERNAME=$(config-get swift_username)

name=`basename $0`

juju-log "Executing $name"

juju-log "django: Repos with $VCS and url: $REPOS_URL"

cd /srv/${UNIT_NAME}

case $VCS in
hg)
    hg pull ${REPOS_URL}
    hg update ${REPOS_URL}
    ;;
git)
    git pull ${REPOS_URL}
    ;;
bzr)
    bzr pull ${REPOS_URL}
    ;;
svn)
    svn co ${REPOS_URL}
    ;;
esac

cat > /srv/${UNIT_NAME}/initial_data.json << EOF
[
   {
       "pk": 1,
       "model": "sites.site",
       "fields": {
           "domain": "$SITE_DOMAIN",
           "name": "$SITE_DOMAIN"
       }
   },
   {
      "pk": 1, 
      "model": "auth.user", 
      "fields": {
         "username": "$SITE_USERNAME",
         "first_name": "", 
         "last_name": "", 
         "is_active": true, 
         "is_superuser": true, 
         "is_staff": true, 
         "last_login": "2010-10-14 23:45:54", 
         "groups": [], 
         "user_permissions": [], 
         "password": "$SITE_PASSWORD",
         "email": "$SITE_ADMIN_EMAIL", 
         "date_joined": "1990-01-01 00:00"
      }
   }
]
EOF

cat > /srv/${UNIT_NAME}/prod_settings.py << EOF
# Settings for production server
import os

PROJECT_ROOT = os.path.dirname(__file__)

ADMINS = (
     ('$SITE_USERNAME', '$SITE_ADMIN_EMAIL'),
)

MANAGERS = ADMINS

DEBUG = False
LOCAL = False
SERVE_MEDIA = False

SEND_BROKEN_LINK_EMAILS = True

SECRET_KEY = '$SITE_SECRET_KEY'

MEDIA_ROOT = os.path.join(PROJECT_ROOT, "site_media", "media")
MEDIA_URL = "$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/"

STATICFILES_STORAGE = 'cumulus.storage.CloudFilesStorage'
STATICFILES_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
STATIC_ROOT =  STATICFILES_ROOT
STATICFILES_URL = "$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/./"
STATIC_URL =  STATICFILES_URL
ADMIN_MEDIA_PREFIX = '$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/admin/'

DEFAULT_FILE_STORAGE = 'cumulus.storage.CloudFilesStorage'
CUMULUS = {
    'API_KEY': '$API_KEY',
    'AUTH_URL': '$AUTH_URL',
    'CONTAINER': '$SWIFT_CONTAINER_NAME',
    'USE_SSL': False,
    'USERNAME': '$SWIFT_USERNAME',
    'USE_SWIFT_BACKEND' : True,
} 

try:
    from db_settings import *
except ImportError:
    pass

EOF

python manage.py collectstatic -v 0 --noinput || true

chown www-data /srv/${UNIT_NAME}/ -R
chmod g+rw /srv/${UNIT_NAME}/ -R

# Trigger the wsgi server reload
for relid in `relation-ids wsgi` ; do
  relation-set -r $relid wsgi_timestamp=`date +%s`
done