from django.db import models
import os

class AuthUser(models.Model):
    id = models.IntegerField(primary_key=True)  # AutoField?
    password = models.CharField(max_length=128)
    last_login = models.DateTimeField()
    is_superuser = models.IntegerField()
    username = models.CharField(unique=True, max_length=30)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.CharField(max_length=75)
    is_staff = models.IntegerField()
    is_active = models.IntegerField()
    date_joined = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'auth_user'

class Lldevicenoatifications(models.Model):
    idlldevicenoatifications = models.IntegerField(db_column='idLLDeviceNoatifications', primary_key=True)  # Field name made lowercase.
    header_en = models.CharField(db_column='Header_EN', max_length=45, blank=True)  # Field name made lowercase.
    title_en = models.CharField(db_column='Title_EN', max_length=45, blank=True)  # Field name made lowercase.
    text_en = models.CharField(db_column='Text_EN', max_length=255, blank=True)  # Field name made lowercase.
    expirationdate = models.DateTimeField(db_column='ExpirationDate', blank=True, null=True)  # Field name made lowercase.
    creationdate = models.DateTimeField(db_column='CreationDate', blank=True, null=True)  # Field name made lowercase.
    header_hr = models.CharField(db_column='Header_HR', max_length=45, blank=True)  # Field name made lowercase.
    title_hr = models.CharField(db_column='Title_HR', max_length=45, blank=True)  # Field name made lowercase.
    text_hr = models.CharField(db_column='Text_HR', max_length=255, blank=True)  # Field name made lowercase.
    type = models.CharField(db_column='Type', max_length=45, blank=True)  # Field name made lowercase.
    icon = models.CharField(db_column='Icon', max_length=45, blank=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'LLDeviceNoatifications'

class Lldevicenoatificationsack(models.Model):
    idlldevicenoatificationsack = models.IntegerField(db_column='idLLDeviceNoatificationsAck', primary_key=True)  # Field name made lowercase.
    userid = models.ForeignKey(AuthUser, db_column='UserID', blank=True, null=True)  # Field name made lowercase.
    noatificationid = models.ForeignKey(Lldevicenoatifications, db_column='NoatificationID', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'LLDeviceNoatificationsAck'

class Lldevicelist(models.Model):
    id = models.CharField(primary_key=True, db_column='ID', unique=True, max_length=45)  # Field name made lowercase.
    rem_identifier = models.CharField(db_column='Rem_Identifier', max_length=45, blank=True)  # Field name made lowercase.
    loc_active = models.IntegerField(db_column='Loc_Active', blank=True, null=True)  # Field name made lowercase.
    loc_type = models.CharField(db_column='Loc_Type', max_length=10, blank=True)  # Field name made lowercase.
    loc_lat = models.CharField(db_column='Loc_Lat', max_length=45, blank=True)  # Field name made lowercase.
    loc_long = models.CharField(db_column='Loc_Long', max_length=45, blank=True)  # Field name made lowercase.
    loc_permissions = models.CharField(db_column='Loc_Permissions', max_length=45, blank=True)  # Field name made lowercase.
    rem_info = models.CharField(db_column='Rem_Info', max_length=145, blank=True)  # Field name made lowercase.
    loc_pressurerecalculateunit = models.CharField(db_column='Loc_PressureRecalculateUnit', max_length=15, blank=True)  # Field name made lowercase.
    loc_flowrecalculateunit = models.CharField(db_column='Loc_FlowRecalculateUnit', max_length=15, blank=True)  # Field name made lowercase.
    loc_totalflowrecalculateunit = models.CharField(db_column='Loc_TotalFlowRecalculateUnit', max_length=15, blank=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'LLDeviceList'
    def __unicode__(self):
        return self.id

class Document(models.Model):
    device_id = models.CharField(max_length=45)
    numberOfFile = models.IntegerField(db_column='number_of_file')  # Field name made lowercase.
    docfile = models.FileField(upload_to='files/')
    class Meta:
        unique_together = ('device_id', 'numberOfFile',)
        
    def filename(self):
        return os.path.basename(self.docfile.name)

# Receive the pre_delete signal and delete the file associated with the model instance.
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver

@receiver(pre_delete, sender=Document)
def mymodel_delete(sender, instance, **kwargs):
    # Pass false so FileField doesn't save the model.
    instance.docfile.delete(False)
        