
from django.db import models
from django.contrib.auth.models import User

'''class User(models.Model):
    name = models.CharField(max_length=200)
    password = models.CharField(max_length=200)
    
    def __unicode__(self):
        return self.name'''
    
class Image(models.Model):
    url = models.CharField(max_length=200)

    def __unicode__(self):
        return self.url
    
class Document(models.Model):
    documentId = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=200)
    description = models.CharField(max_length=400)
    image = models.ForeignKey(Image)
    date= models.DateTimeField()
    def __unicode__(self):
        return str(self.documentId)

class Documentaryfile(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateTimeField()
    description = models.CharField(max_length=400)
    visibility = models.BooleanField(default=False)
    list_concepts = models.TextField()
    concepts_with_detailed_documents_list = models.TextField()
    image = models.ForeignKey(Image)
    user = models.ForeignKey(User)
    
    def __unicode__(self):
        return str(self.id)
           
class Annotationdocument(models.Model):
    description = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    document = models.ForeignKey(Document)
    visibility = models.BooleanField()
    annoted_text = models.CharField(max_length=200,blank=True,null=True)
    annoted_text_page = models.IntegerField(blank=True,null=True)
    annoted_text_offset = models.IntegerField(blank=True,null=True)
    documentaryfile =  models.ForeignKey(Documentaryfile)   
    def __unicode__(self):
        return self.description
    
class AnnotationDocumentaryFile(models.Model):
    description = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    documentaryFile = models.ForeignKey(Documentaryfile)
   
    def __unicode__(self):
        return self.description
    
class Cluster(models.Model):
    title = models.CharField(max_length=200)
    description = models.CharField(max_length=400)
    weight = models.FloatField()
    document = models.ManyToManyField(Document, through="Clusterdocumentweight")
    documentaryfile = models.ForeignKey(Documentaryfile)
    image = models.ForeignKey(Image)

    def __unicode__(self):
        return str(self.id)

class Annotationcluster(models.Model):
    description = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    cluster = models.OneToOneField(Cluster)
       
    def __unicode__(self):
        return self.description
    
class Clusterdocumentweight(models.Model):
    document = models.ForeignKey(Document)
    cluster = models.ForeignKey(Cluster)
    weight = models.FloatField()
    
    # Le couple cluster/document est unique
    class Meta:
        unique_together = ( 'cluster', 'document' )   

class Tag(models.Model):
    value = models.CharField(max_length=50)
    cluster = models.ForeignKey(Cluster,blank=True,null=True)
    annotationcluster = models.ForeignKey(Annotationcluster,blank=True,null=True)
    annotationdocument = models.ForeignKey(Annotationdocument,blank=True,null=True)
    annotationDocumentaryFile = models.ForeignKey(AnnotationDocumentaryFile,blank=True,null=True)
    document = models.ForeignKey(Document,blank=True,null=True)
    def __unicode__(self):
        return self.value
