from flask_restful import Resource, reqparse from controllers.console.setup import setup_required from controllers.inner_api import api from controllers.inner_api.wraps import inner_api_only from events.tenant_event import tenant_was_created from models.account import Account from services.account_service import TenantService class EnterpriseWorkspace(Resource): @setup_required @inner_api_only def post(self): parser = reqparse.RequestParser() parser.add_argument('name', type=str, required=True, location='json') parser.add_argument('owner_email', type=str, required=True, location='json') args = parser.parse_args() account = Account.query.filter_by(email=args['owner_email']).first() if account is None: return { 'message': 'owner account not found.' }, 404 tenant = TenantService.create_tenant(args['name']) TenantService.create_tenant_member(tenant, account, role='owner') tenant_was_created.send(tenant) return { 'message': 'enterprise workspace created.' } api.add_resource(EnterpriseWorkspace, '/enterprise/workspace')