-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathrocket.py
More file actions
63 lines (53 loc) · 1.62 KB
/
rocket.py
File metadata and controls
63 lines (53 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from typing import Optional, Tuple, List, Union, Self, ClassVar, Literal
from src.models.interface import ApiBaseModel
from src.models.motor import MotorModel
from src.models.sub.aerosurfaces import (
Fins,
NoseCone,
Tail,
RailButtons,
Parachute,
)
class RocketModel(ApiBaseModel):
NAME: ClassVar = "rocket"
METHODS: ClassVar = ("POST", "GET", "PUT", "DELETE")
# Required parameters
motor: MotorModel
radius: float
mass: float
motor_position: float
center_of_mass_without_motor: float
inertia: Union[
Tuple[float, float, float],
Tuple[float, float, float, float, float, float],
] = (0, 0, 0)
power_off_drag: List[Tuple[float, float]] = [(0, 0)]
power_on_drag: List[Tuple[float, float]] = [(0, 0)]
coordinate_system_orientation: Literal['tail_to_nose', 'nose_to_tail'] = (
'tail_to_nose'
)
nose: NoseCone
fins: List[Fins]
# Optional parameters
parachutes: Optional[List[Parachute]] = None
rail_buttons: Optional[RailButtons] = None
tail: Optional[Tail] = None
@staticmethod
def UPDATED():
return
@staticmethod
def DELETED():
return
@staticmethod
def CREATED(model_id: str):
from src.views.rocket import RocketCreated
return RocketCreated(rocket_id=model_id)
@staticmethod
def RETRIEVED(model_instance: type(Self)):
from src.views.rocket import RocketRetrieved, RocketView
return RocketRetrieved(
rocket=RocketView(
rocket_id=model_instance.get_id(),
**model_instance.model_dump(),
)
)