Skip to content

Models

Dependencies

SingletonModel

Model representing a singleton model.

Attributes:

Source code in backend/api/models.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class SingletonModel(models.Model):
    """
    Model representing a singleton model.

    Attributes:
    """

    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        """
        Override save method to validate only one instance exists.
        """
        if not self.pk and self.__class__.objects.exists():
            raise ValidationError("There is already one instance of this model")
        return super(SingletonModel, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        """
        Override delete method to block deletes.
        """
        raise ValidationError("You cannot delete this object")

save(*args, **kwargs)

Override save method to validate only one instance exists.

Source code in backend/api/models.py
16
17
18
19
20
21
22
def save(self, *args, **kwargs):
    """
    Override save method to validate only one instance exists.
    """
    if not self.pk and self.__class__.objects.exists():
        raise ValidationError("There is already one instance of this model")
    return super(SingletonModel, self).save(*args, **kwargs)

delete(*args, **kwargs)

Override delete method to block deletes.

Source code in backend/api/models.py
24
25
26
27
28
def delete(self, *args, **kwargs):
    """
    Override delete method to block deletes.
    """
    raise ValidationError("You cannot delete this object")

Store

Store

Model representing a Store.

Attributes:

Name Type Description
name CharField

The name of a store. Required. Unique.

Source code in backend/api/models.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Store(models.Model):
    """
    Model representing a Store.

    Attributes:
        name (CharField): The name of a store. Required. Unique.
    """

    name = models.CharField(max_length=50, unique=True)

    def __str__(self):
        """
        Returns:
            (String): The Store Object name.
        """
        return self.name

__str__()

Returns:

Type Description
String

The Store Object name.

Source code in backend/api/models.py
41
42
43
44
45
46
def __str__(self):
    """
    Returns:
        (String): The Store Object name.
    """
    return self.name

Aisle

Aisle

Model representing an aisle in a store.

Attributes:

Name Type Description
name CharField

The name of the Aisle.

order IntegerField

The order of appearance for Aisle.

store Store

An object respresenting a store.

Source code in backend/api/models.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class Aisle(models.Model):
    """
    Model representing an aisle in a store.

    Attributes:
        name (CharField): The name of the Aisle.
        order (IntegerField): The order of appearance for Aisle.
        store (Store): An object respresenting a store.
    """

    name = models.CharField(max_length=50)
    order = models.IntegerField(default=1)
    store = models.ForeignKey(Store, on_delete=models.CASCADE)

    def __str__(self):
        """
        Returns:
            (String): The Aisle Object name.
        """
        return f"{self.store.name} | {self.name}"

__str__()

Returns:

Type Description
String

The Aisle Object name.

Source code in backend/api/models.py
63
64
65
66
67
68
def __str__(self):
    """
    Returns:
        (String): The Aisle Object name.
    """
    return f"{self.store.name} | {self.name}"

Item

Item

Model representing an item.

Attributes:

Name Type Description
name CharField

The name of the Item. Unique.

matches CharField

Alternate spelling that matches.

plural CharField

Plural spelling of item name.

aisle Aisle

An object representing an aisle.

Source code in backend/api/models.py
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
class Item(models.Model):
    """
    Model representing an item.

    Attributes:
        name (CharField): The name of the Item. Unique.
        matches (CharField): Alternate spelling that matches.
        plural (CharField): Plural spelling of item name.
        aisle (Aisle): An object representing an aisle.
    """

    name = models.CharField(max_length=50, unique=True)
    matches = models.CharField(max_length=254, null=True, blank=True)
    plural = models.CharField(max_length=50, null=True, blank=True)
    aisle = models.ForeignKey(
        Aisle, on_delete=models.SET_NULL, null=True, blank=True, default=None
    )

    def __str__(self):
        """
        Returns:
            (String): The Item Object name.
        """
        return self.name

__str__()

Returns:

Type Description
String

The Item Object name.

Source code in backend/api/models.py
89
90
91
92
93
94
def __str__(self):
    """
    Returns:
        (String): The Item Object name.
    """
    return self.name

ShoppingList

ShoppingList

Model representing a ShopingList object.

Attributes:

Name Type Description
name CharField

The name of the shopping list.

store Store

An object representing a store.

Source code in backend/api/models.py
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class ShoppingList(models.Model):
    """
    Model representing a ShopingList object.

    Attributes:
        name (CharField): The name of the shopping list.
        store (Store): An object representing a store.
    """

    name = models.CharField(max_length=50)
    store = models.ForeignKey(Store, on_delete=models.CASCADE)

    def __str__(self):
        """
        Returns:
            (String): The ShoppingList Object name.
        """
        return f"{self.store.name} | {self.name}"

__str__()

Returns:

Type Description
String

The ShoppingList Object name.

Source code in backend/api/models.py
109
110
111
112
113
114
def __str__(self):
    """
    Returns:
        (String): The ShoppingList Object name.
    """
    return f"{self.store.name} | {self.name}"

ListItem

ListItem

Model representing a ListItem object.

Attributes:

Name Type Description
qty IntegerField

The numder of items for this list item.

purchased BooleanField

Wether this list item has been purchased.

notes TextField

Notes associated with this list item.

purch_date(DateFild) TextField

The date this list item was purchased.

item Item

An object representing an Item.

aisle Aisle

An object representing an Aisle.

shopping_list ShoppingList

An object representing a ShoppingList.

Source code in backend/api/models.py
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
class ListItem(models.Model):
    """
    Model representing a ListItem object.

    Attributes:
        qty (IntegerField): The numder of items for this list item.
        purchased (BooleanField): Wether this list item has been purchased.
        notes (TextField): Notes associated with this list item.
        purch_date(DateFild): The date this list item was purchased.
        item (Item): An object representing an Item.
        aisle (Aisle): An object representing an Aisle.
        shopping_list (ShoppingList): An object representing a ShoppingList.

    """

    qty = models.IntegerField(default=1)
    purchased = models.BooleanField(default=False)
    notes = models.TextField(null=True, blank=True)
    purch_date = models.DateField(
        auto_now=False, auto_now_add=False, null=True, blank=True
    )
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    aisle = models.ForeignKey(Aisle, on_delete=models.CASCADE, null=True)
    shopping_list = models.ForeignKey(ShoppingList, on_delete=models.CASCADE)

    def __str__(self):
        """
        Returns:
            (String): The ListItem Object name.
        """
        return self.item.name

__str__()

Returns:

Type Description
String

The ListItem Object name.

Source code in backend/api/models.py
142
143
144
145
146
147
def __str__(self):
    """
    Returns:
        (String): The ListItem Object name.
    """
    return self.item.name

Version

Version

Model representing app version.

Fields: - version_number (CharField): The current version of the app.

Source code in backend/api/models.py
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
class Version(SingletonModel):
    """
    Model representing app version.

    Fields:
    - version_number (CharField): The current version of the app.
    """

    version_number = models.CharField(max_length=10)

    def __str__(self):
        """
        Returns:
            (String): The version number.
        """
        return self.version_number

__str__()

Returns:

Type Description
String

The version number.

Source code in backend/api/models.py
160
161
162
163
164
165
def __str__(self):
    """
    Returns:
        (String): The version number.
    """
    return self.version_number