Ejemplo n.º 1
0
class NotificationModel(Document):
    order = MyReferenceField('OrderModel')
    table = MyReferenceField('TableModel')
    meal_ready = MyBooleanField(default=False)
    call_waitstaff = MyBooleanField(default=False)
    call_management = MyBooleanField(defaul=False)
    request_refill = MyBooleanField(default=False)
    refill_list = ListField(StringField(), default=[])
    request_help = MyBooleanField(default=False)
    request_cash_payment = MyBooleanField(default=False)
    time_created = IntField(required=True)

    def clean(self):
        if not (self.meal_ready or self.request_cash_payment or self.call_waitstaff or self.call_management or self.request_refill or self.request_help):
            msg = 'At least one of the bools must be set'
            raise ValidationError(msg)
Ejemplo n.º 2
0
class OrderObj(EmbeddedDocument):
    order = MyReferenceField('OrderModel')

    def clean(self):
        try:
            if OrderModel.objects(id=self.order.id) is None:
                msg = 'Object does not exist'
                raise ValidationError(msg)
        except:
            msg = 'Malformated request'
            raise ValidationError(msg)
Ejemplo n.º 3
0
class ItemList(EmbeddedDocument):
    item = MyReferenceField('MenuItemModel', required=True)

    def clean(self):
        try:
            if MenuItemModel.objects(id=self.item.id) is None:
                msg = 'Object does not exist'
                raise ValidationError(msg)
        except:
            msg = 'Malformated request'
            raise ValidationError(msg)
Ejemplo n.º 4
0
class IngredientAmount(EmbeddedDocument):

    ingredient = MyReferenceField('IngredientModel', required=True)
    count = IntField(required=True)

    def clean(self):
        try:
            if IngredientModel.objects(id=self.ingredient.id) is None:
                msg = 'Object does not exist'
                raise ValidationError(msg)
        except:
            msg = 'Malformated request'
            raise ValidationError(msg)
Ejemplo n.º 5
0
class TimeSheetModel(Document):
    employee = MyReferenceField('EmployeeModel')
    # Stores times in utc format (milliseconds since epoch)
    utc_start_time = IntField(required=True)
    utc_end_time = IntField()
    ongoing = MyBooleanField(default=True)
    accrued_tips = FloatField(default=0)

    def clean(self):
        try:
            if EmployeeModel.objects(id=self.employee.id) is None:
                msg = 'Object does not exist'
                raise ValidationError(msg)
        except:
            msg = 'Malformated request'
            raise ValidationError(msg)
Ejemplo n.º 6
0
class OrderModel(Document):

    def clean(self):
        if self.comped:
            if self.staff_comped is None:
                msg = 'comped flag set so staff_comped must reference an employee'
                raise ValidationError(msg)

        
        # Increment times ordered for each item in the order
        
        # Calculate the total cost for this meal
        self.total_cost=0
        for item in self.items:
            self.total_cost += item.item.cost * item.count
        # Set a random id for the order
        if (self.order_id == -1):
            self.order_id = randint(0,10000)

        # Update counts of all items
        if not self.item_counts_updated and self.status == 'payment_recieved':
            self.item_counts_updated = True
            for item in self.items:
                item.item.times_ordered += item.count
                item.item.save()

    # Epoch_time
    time_ordered = IntField()
    time_modified = IntField()
    gratuity = FloatField()
    table = IntField()
    special_notes = StringField()
    to_go = MyBooleanField(required=True)
    items = EmbeddedDocumentListField(ItemList, required=True)
    status = StringField(required=True, choices=['ordered','ready','delivered','payment_recieved', 'changed'])
    # If the meal was given away for free
    comped = MyBooleanField(default=False)
    # Who comped the meal
    staff_comped = MyReferenceField('EmployeeModel')
    total_cost = FloatField(default=0)
    amount_paid = FloatField(default=0)
    paid_off = MyBooleanField(default=False)
    # This is a numerical identifier for the staff (they could potentially be duplicated)
    order_id = IntField(default=-1)
    item_counts_updated = MyBooleanField(default=False, required=False)
Ejemplo n.º 7
0
class ItemDiscount(EmbeddedDocument):
    item = MyReferenceField('MenuItemModel', required=True)
    percent_discount = FloatField(min_value=0, max_value=100)
    constant_discount = FloatField(min_value=0)

    def clean(self):
        try:
            if MenuItemModel.objects(id=self.item.id) is None:
                msg = 'Object does not exist'
                raise ValidationError(msg)

            if self.percent_discount == 0 and self.constant_discount == 0:
                msg = 'Discount of at least one type must be set'
                raise ValidationError(msg)

        except:
            msg = 'Malformated request'
            raise ValidationError(msg)
Ejemplo n.º 8
0
class CouponObj(EmbeddedDocument):
    coupon = MyReferenceField('CouponModel', required=True)