django-orchestra-test/orchestra/apps/webapps/backends/wordpress.py

49 lines
1.9 KiB
Python

import textwrap
from django.utils.translation import ugettext_lazy as _
from orchestra.apps.orchestration import ServiceController
from .. import settings
from . import WebAppServiceMixin
class WordPressBackend(WebAppServiceMixin, ServiceController):
verbose_name = _("Wordpress")
model = 'webapps.WebApp'
default_route_match = "webapp.type == 'wordpress'"
def save(self, webapp):
context = self.get_context(webapp)
self.create_webapp_dir(context)
self.append(textwrap.dedent("""\
# Check if directory is empty befor doing anything
if [[ ! $(ls -A %(app_path)s) ]]; then
wget http://wordpress.org/latest.tar.gz -O - --no-check-certificate \\
| tar -xzvf - -C %(app_path)s --strip-components=1
cp %(app_path)s/wp-config-sample.php %(app_path)s/wp-config.php
sed -i "s/database_name_here/%(db_name)s/" %(app_path)s/wp-config.php
sed -i "s/username_here/%(db_user)s/" %(app_path)s/wp-config.php
sed -i "s/password_here/%(db_pass)s/" %(app_path)s/wp-config.php
sed -i "s/localhost/%(db_host)s/" %(app_path)s/wp-config.php
mkdir %(app_path)s/wp-content/uploads
chmod 750 %(app_path)s/wp-content/uploads
chown -R %(user)s:%(group)s %(app_path)s
fi""") % context
)
def delete(self, webapp):
context = self.get_context(webapp)
self.delete_webapp_dir(context)
def get_context(self, webapp):
context = super(WordPressBackend, self).get_context(webapp)
context.update({
'db_name': webapp.data['db_name'],
'db_user': webapp.data['db_user'],
'db_pass': webapp.data['db_pass'],
'db_host': settings.WEBAPPS_DEFAULT_MYSQL_DATABASE_HOST,
})
return context