# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.conf.urls import url from tastypie.resources import Resource from tastypie.utils import trailing_slash from simplejson import JSONDecodeError from api.utils.odoo_api import ( normalize_name, check_name, randomize_port, create_folders, create_configuration, create_database, create_odoo_container, apply_permissions ) import simplejson as json class OdooResource(Resource): class Meta: pass ''' ''' def prepend_urls(self): return [ url(r'^(?P%s)/create%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('odoo_create'), name='api_odoo_create'), ] ''' ''' def odoo_create(self, request, **kwargs): self.method_check(request, allowed='post') self.is_authenticated(request) name = None try: data = json.loads(request.body) name = data['name'] except JSONDecodeError: name = None except KeyError: name = None if not name: return self.create_response(request, { 'error_message': 'name is required' }) # Check and get name name = normalize_name(name) name_exists = check_name(name) if name_exists: return self.create_response(request, { 'error_message': 'name is already exists' }) # Get port port = randomize_port() # Folder structure create folders_created = create_folders(name) if not folders_created: return self.create_response(request, { 'error_message': 'folders structure cannot be created' }) # Configuration create conf_created = create_configuration(name) if not conf_created: return self.create_response(request, { 'error_message': 'configuration cannot be created' }) # Database create db_created = create_database(name) if not db_created: return self.create_response(request, { 'error_message': 'database cannot be created' }) # Odoo create odoo_created = create_odoo_container(name, [port]) if not odoo_created: return self.create_response(request, { 'error_message': 'odoo container cannot be created' }) apply_permissions(name) return self.create_response(request, { 'odoo': { 'name': name, 'port': port } })