django-orchestra/orchestra/contrib/saas/backends/nextcloud.py

61 lines
1.8 KiB
Python

from django.utils.translation import gettext_lazy as _
from orchestra.contrib.orchestration import ServiceController
from . import ApacheTrafficByName, NextCloudAPIMixin
from .. import settings
class NextCloudController(NextCloudAPIMixin, ServiceController):
"""
Creates a wordpress site on a WordPress MultiSite installation.
You should point it to the database server
"""
verbose_name = _("nextCloud SaaS")
model = 'saas.SaaS'
default_route_match = "saas.service == 'nextcloud'"
doc_settings = (settings,
('SAAS_NEXTCLOUD_API_URL',)
)
def update_or_create(self, saas, server):
try:
self.api_get('users/%s' % saas.name)
except RuntimeError:
if getattr(saas, 'password', None):
self.create(saas)
self.update_group(saas)
self.update_quota(saas)
else:
raise
else:
if getattr(saas, 'password', None):
self.update_password(saas)
else:
self.update_group(saas)
self.update_quota(saas)
if saas.is_active:
self.enable_user(saas)
else:
self.disable_user(saas)
def remove(self, saas, server):
self.api_delete('users/%s' % saas.name)
def save(self, saas):
self.append(self.update_or_create, saas)
def delete(self, saas):
self.append(self.remove, saas)
class NextcloudTraffic(ApacheTrafficByName):
__doc__ = ApacheTrafficByName.__doc__
verbose_name = _("nextCloud SaaS Traffic")
default_route_match = "saas.service == 'nextcloud'"
doc_settings = (settings,
('SAAS_TRAFFIC_IGNORE_HOSTS', 'SAAS_NEXTCLOUD_LOG_PATH')
)
log_path = settings.SAAS_NEXTCLOUD_LOG_PATH