Newer
Older
GestionHoteleriaApi / apps / hotel / models.py
Humberto Vergel on 15 Jun 2021 2 KB Listar habitaciones disponibles
from django.db import models

# Create your models here.
from apps.user.models import User, Region, TypeId
from hotelApi.tricks import UploadToPathAndRename, compress


class Hotel(models.Model):
    admin = models.ManyToManyField(User, blank=True, related_name='administrator')
    code = models.CharField(max_length=60)
    name = models.CharField(max_length=60)
    description = models.CharField(max_length=200, blank=True, null=True)
    phone = models.CharField(max_length=50, blank=True, null=True)
    email = models.CharField(max_length=70, blank=True, null=True)
    logo = models.ImageField(blank=True, null=True, upload_to=UploadToPathAndRename('logos/'))
    direction = models.CharField(max_length=100)
    reference = models.CharField(max_length=100, null=True, blank=True)
    barrio = models.CharField(max_length=50, null=True, blank=True)
    latitude = models.FloatField(null=True, blank=True)
    longitude = models.FloatField(null=True, blank=True)
    region = models.ForeignKey(Region, null=True, blank=True, on_delete=models.PROTECT)
    active = models.BooleanField(blank=True, null=True)
    available = models.BooleanField(default=True)
    terms = models.BooleanField(blank=True, null=True)
    open_time = models.CharField(max_length=100, null=True, blank=True)
    close_time = models.CharField(max_length=100, null=True, blank=True)


class TypeRoom(models.Model):
    name = models.CharField(max_length=100)
    acronym = models.CharField(max_length=50)
    active = models.BooleanField(blank=True, null=True)


class Room(models.Model):
    name = models.CharField(max_length=150)
    description = models.TextField(null=True, blank=True)
    active = models.BooleanField(default=True)
    price = models.FloatField(null=True, blank=True)
    discount = models.FloatField(null=True, blank=True)
    hotel = models.ForeignKey(Hotel, null=False, blank=False, on_delete=models.PROTECT)
    photo = models.ImageField(upload_to=UploadToPathAndRename('room/'), blank=True, null=True)
    type_room = models.ForeignKey(TypeRoom, null=True, blank=True, on_delete=models.PROTECT)

    __original_photo = None

    def __init__(self, *args, **kwargs):
        super(Room, self).__init__(*args, **kwargs)
        self.__original_photo = self.photo

    def save(self, *args, **kwargs):
        if self.id is None or self.photo != self.__original_photo:
            new_image = compress(self.photo)
            self.photo = new_image
        super(Room, self).save(*args, **kwargs)