Coverage for django_napse/core/models/fleets/managers/fleet.py: 80%

20 statements  

« prev     ^ index     » next       coverage.py v7.4.3, created at 2024-03-12 13:49 +0000

1from django.db import models 

2 

3from django_napse.core.models.fleets.cluster import Cluster 

4from django_napse.utils.errors import FleetError 

5 

6 

7class FleetManager(models.Manager): 

8 def create( 

9 self, 

10 name, 

11 exchange_account, 

12 clusters=None, 

13 ): 

14 clusters = clusters or [] 

15 

16 if sum(cluster["share"] for cluster in clusters) != 1: 

17 error_message = "The sum of all shares must be 1." 

18 raise FleetError.InvalidShares(error_message) 

19 

20 if len(clusters) == 0: 

21 error_msg = "A fleet must have at least one cluster." 

22 raise FleetError.InvalidClusters(error_msg) 

23 

24 fleet = self.model( 

25 name=name, 

26 exchange_account=exchange_account, 

27 ) 

28 

29 fleet.save() 

30 

31 for cluster in clusters: 

32 cluster["template_bot"] = cluster["template_bot"].copy() 

33 Cluster.objects.create(fleet=fleet, **cluster) 

34 

35 fleet.setup_finished = True 

36 fleet.save() 

37 return fleet