from django.db import models
from django.conf import settings
from django.contrib.auth.models import User, Group
from django.template.defaultfilters import slugify
from django.contrib.postgres.fields import JSONField

# Create your models here.
class File(models.Model):

    def get_upload_path(self, filename):
        if self.user != None:
            string = "%s/media/%s/%s/%s" % (settings.BASE_DIR, slugify(self.user.username), self.id, filename)
        else:
            string = "%s/media/public/%s/%s" % (settings.BASE_DIR, self.id, filename)
        return string

    def get_absolute_url(self):
        return "/files/"

    def __str__(self):
        return self.name

    user = models.ForeignKey(User, editable=False, null=True, on_delete=models.CASCADE)
    
    name = models.CharField(max_length=600, blank=True)
    
    size = models.BigIntegerField(null=True, blank=True)
    
    file_type = models.TextField(null=True, blank=True)
    extension = models.TextField(null=True, blank=True)

    location = models.TextField(null=True, blank=True)    
    local_file = models.FileField(upload_to=get_upload_path, blank=True, help_text="File Format: VCF",max_length=600)
    remote_location = models.TextField(null=True, blank=True)
    url = models.TextField(null=True, blank=True)
    
    status = models.TextField(null=True, blank=True)
    last_output = models.TextField(null=True, blank=True)
    params = JSONField(null=True, blank=True)

    md5 = models.TextField(null=True, blank=True)

    last_modified = models.DateTimeField(null=True, blank=True)

    creation_date = models.DateTimeField(auto_now_add=True,null=True, blank=True)
    modified_date = models.DateTimeField(auto_now=True, null=True, blank=True)