55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
|
import textwrap
|
||
|
|
||
|
from django.utils.translation import ugettext_lazy as _
|
||
|
|
||
|
from orchestra.contrib.orchestration import ServiceController
|
||
|
|
||
|
from .. import settings
|
||
|
|
||
|
|
||
|
class BSCWBackend(ServiceController):
|
||
|
verbose_name = _("BSCW SaaS")
|
||
|
model = 'saas.SaaS'
|
||
|
default_route_match = "saas.service == 'bscw'"
|
||
|
actions = ('save', 'delete', 'validate_creation')
|
||
|
|
||
|
def validate_creation(self, saas):
|
||
|
context = self.get_context(saas)
|
||
|
self.append(textwrap.dedent("""\
|
||
|
if [[ $(%(bsadmin)s register %(email)s) ]]; then
|
||
|
echo 'ValidationError: email-exists'
|
||
|
elif [[ $(%(bsadmin)s users -n %(username)s) ]]; then
|
||
|
echo 'ValidationError: username-exists'
|
||
|
fi""") % context
|
||
|
)
|
||
|
|
||
|
def save(self, saas):
|
||
|
context = self.get_context(saas)
|
||
|
if hasattr(saas, 'password'):
|
||
|
self.append(textwrap.dedent("""\
|
||
|
if [[ ! $(%(bsadmin)s register %(email)s) && ! $(%(bsadmin)s users -n %(username)s) ]]; then
|
||
|
# Create new user
|
||
|
%(bsadmin)s register -r %(email)s %(username)s '%(password)s'
|
||
|
else
|
||
|
# Change password
|
||
|
%(bsadmin)s chpwd %(username)s '%(password)s'
|
||
|
fi
|
||
|
""") % context
|
||
|
)
|
||
|
elif saas.active:
|
||
|
self.append("%(bsadmin)s chpwd -u %(username)s" % context)
|
||
|
else:
|
||
|
self.append("%(bsadmin)s chpwd -l %(username)s" % context)
|
||
|
|
||
|
def delete(self, saas):
|
||
|
context = self.get_context(saas)
|
||
|
self.append("%(bsadmin)s rmuser -n %(username)s" % context)
|
||
|
|
||
|
def get_context(self, saas):
|
||
|
return {
|
||
|
'bsadmin': settings.SAAS_BSCW_BSADMIN_PATH,
|
||
|
'email': saas.data.get('email'),
|
||
|
'username': saas.name,
|
||
|
'password': getattr(saas, 'password', None),
|
||
|
}
|