Skip to content

Relationship

BackpopulatesRelationship

Bases: TemplateModel

A class representing a backpopulates relationship between two objects.

Parameters:

Name Type Description Default
name str

The name of the relationship.

required
obj AppObject

The object that this relationship is associated with.

required
type RelationshipType

The type of relationship.

required
back_populates_name str

The name of the backpopulates relationship on the related object.

required
back_populates_object AppObject

The related object.

required
optional bool

Whether the relationship is optional. Defaults to False.

False
Source code in warp_fastapi\relationships.py
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
class BackpopulatesRelationship(TemplateModel):
    """
    A class representing a backpopulates relationship between two objects.

    Args:
        name (str): The name of the relationship.
        obj (AppObject): The object that this relationship is associated with.
        type (RelationshipType): The type of relationship.
        back_populates_name (str): The name of the backpopulates relationship on the related object.
        back_populates_object (AppObject): The related object.
        optional (bool, optional): Whether the relationship is optional. Defaults to False.
    """

    related_object: AppObject
    relationship_type: RelationshipType
    optional: bool = False
    back_populates_name: str
    back_populates_object: AppObject

    def __init__(
        self,
        name: str,
        obj: AppObject,
        type: RelationshipType,
        back_populates_name: str,
        back_populates_object: AppObject,
        optional: bool = False,
    ) -> None:
        super().__init__(
            name=name,
            related_object=obj,
            relationship_type=type,
            optional=optional,
            back_populates_object=back_populates_object,
            back_populates_name=back_populates_name,
        )

Relationship

Bases: TemplateModel

A class representing a relationship between two objects.

Parameters:

Name Type Description Default
name str

The name of the relationship.

required
obj AppObject

The object that this relationship is associated with.

required
type RelationshipType

The type of relationship.

required
optional bool

Whether the relationship is optional. Defaults to False.

False

Raises:

Type Description
RelationshipException

If the relationship type is many_to_many.

Source code in warp_fastapi\relationships.py
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
class Relationship(TemplateModel):
    """
    A class representing a relationship between two objects.

    Args:
        name (str): The name of the relationship.
        obj (AppObject): The object that this relationship is associated with.
        type (RelationshipType): The type of relationship.
        optional (bool, optional): Whether the relationship is optional. Defaults to False.

    Raises:
        RelationshipException: If the relationship type is `many_to_many`.
    """

    related_object: AppObject
    relationship_type: RelationshipType
    optional: bool = False

    def __init__(
        self,
        name: str,
        obj: AppObject,
        type: RelationshipType,
        optional: bool = False,
    ) -> None:
        if type == many_to_many:
            raise RelationshipException(RelMsgErr.MANY_MANY_ERR)
        super().__init__(
            name=name,
            related_object=obj,
            relationship_type=type,
            optional=optional,
        )

create_relationship(name, obj, type, back_populates_object=None, back_populates_name=None, optional=False)

Creates a relationship between two objects.

Args: name (str): The name of the relationship. obj (AppObject): The object that this relationship is associated with. type (RelationshipType): The type of relationship. back_populates_object (AppObject | None): The related object. back_populates_name (str | None): The name of the backpopulates relationship on the related object. optional (bool): Whether the relationship is optional. Defaults to False.

Returns: Relationship | BackpopulatesRelationship: The created relationship.

Source code in warp_fastapi\relationships.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
def create_relationship(
    name: str,
    obj: AppObject,
    type: RelationshipType,
    back_populates_object: AppObject | None = None,
    back_populates_name: str | None = None,
    optional: bool = False,
) -> Relationship | BackpopulatesRelationship:
    """
    Creates a relationship between two objects.

    Args:
    name (str): The name of the relationship.
    obj (AppObject): The object that this relationship is associated with.
    type (RelationshipType): The type of relationship.
    back_populates_object (AppObject | None): The related object.
    back_populates_name (str | None): The name of the backpopulates relationship on the related object.
    optional (bool): Whether the relationship is optional. Defaults to False.

    Returns:
    Relationship | BackpopulatesRelationship: The created relationship.
    """
    if back_populates_name and back_populates_object:
        return BackpopulatesRelationship(name, obj, type, back_populates_name, back_populates_object, optional)
    return Relationship(name, obj, type)