| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  | from flask_restful import Resource, reqparse | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-01 15:51:22 +08:00
										 |  |  | from controllers.console.wraps import setup_required | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  | 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() | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  |         parser.add_argument("name", type=str, required=True, location="json") | 
					
						
							|  |  |  |         parser.add_argument("owner_email", type=str, required=True, location="json") | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  |         account = Account.query.filter_by(email=args["owner_email"]).first() | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  |         if account is None: | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  |             return {"message": "owner account not found."}, 404 | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-28 11:48:16 +08:00
										 |  |  |         tenant = TenantService.create_tenant(args["name"], is_from_dashboard=True) | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  |         TenantService.create_tenant_member(tenant, account, role="owner") | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         tenant_was_created.send(tenant) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  |         return {"message": "enterprise workspace created."} | 
					
						
							| 
									
										
										
										
											2024-04-18 17:33:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 15:29:10 +08:00
										 |  |  | api.add_resource(EnterpriseWorkspace, "/enterprise/workspace") |