src/p4l/models/data.py
changeset 14 52fa6990e0bb
parent 13 6296aa12fd71
child 17 b31a67614f76
equal deleted inserted replaced
13:6296aa12fd71 14:52fa6990e0bb
    16     title = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    16     title = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    17     volume = models.CharField(max_length=2048, blank=True, null=True, db_index=True)
    17     volume = models.CharField(max_length=2048, blank=True, null=True, db_index=True)
    18 
    18 
    19 
    19 
    20 class ProjectName(P4lModel):
    20 class ProjectName(P4lModel):
       
    21     uri = models.URLField(max_length=2048, unique=True, db_index=True) 
    21     label = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    22     label = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    22     acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym
    23     acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym
    23     class Meta(P4lModel.Meta):
    24     class Meta(P4lModel.Meta):
    24         unique_together = ['label', 'acronym']
    25         unique_together = ['label', 'acronym']
    25 
    26 
    26 
    27 
    27 class CorporateAuthor(P4lModel):
    28 class CorporateAuthor(P4lModel):
    28     record = models.ForeignKey('p4l.Record', related_name="corporateAuthors", db_index=True)
    29     uri = models.URLField(max_length=2048, unique=True, db_index=True)
    29     label = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    30     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True)
    30     acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym
    31     acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym    
    31 
    32     class Meta(P4lModel.Meta):
       
    33         unique_together = ['label','acronym']
    32 
    34 
    33 class Url(P4lModel):
    35 class Url(P4lModel):
    34     record = models.ForeignKey('p4l.Record', related_name="urls", db_index=True)
    36     record = models.ForeignKey('p4l.Record', related_name="urls", db_index=True)
    35     address = models.CharField(max_length=2048, blank=False, null=False, db_index=True) #iiep:address
    37     address = models.CharField(max_length=2048, blank=False, null=False, db_index=True) #iiep:address
    36     display = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:display
    38     display = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:display
    37     accessLevel = models.CharField(max_length=512, blank=True, null=True, db_index=True) #iiep:accessLevel
    39     accessLevel = models.CharField(max_length=512, blank=True, null=True, db_index=True) #iiep:accessLevel
    38 
    40 
    39 
    41 
    40 class Subject(P4lModel):
    42 class Subject(P4lModel):
    41     subject = models.URLField(max_length=2048, unique=True, db_index=True)
    43     uri = models.URLField(max_length=2048, unique=True, db_index=True)
    42     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    44     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    43 
    45 
    44 class Theme(P4lModel):
    46 class Theme(P4lModel):
    45     theme = models.URLField(max_length=2048, unique=True, db_index=True)
    47     uri = models.URLField(max_length=2048, unique=True, db_index=True)
    46     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    48     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    47 
    49 
    48 
    50 
    49 class Country(P4lModel):
    51 class Country(P4lModel):
    50     country = models.URLField(max_length=2048, unique=True, db_index=True)
    52     uri = models.URLField(max_length=2048, unique=True, db_index=True)
    51     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    53     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    52 
    54 
    53 
    55 
    54 class Isbn(P4lModelLang):
    56 class Isbn(P4lModelLang):
    55     record = models.ForeignKey('p4l.Record', related_name="isbns", db_index=True)
    57     record = models.ForeignKey('p4l.Record', related_name="isbns", db_index=True)
    63 class DocumentCode(P4lModelLang):
    65 class DocumentCode(P4lModelLang):
    64     record = models.ForeignKey('p4l.Record', related_name="documentCodes", db_index=True)
    66     record = models.ForeignKey('p4l.Record', related_name="documentCodes", db_index=True)
    65     documentCode = models.CharField(max_length=128) #iiep:issn
    67     documentCode = models.CharField(max_length=128) #iiep:issn
    66 
    68 
    67 class Language(P4lModel):
    69 class Language(P4lModel):
    68     language = models.URLField(max_length=2048, unique=True, db_index=True)
    70     uri = models.URLField(max_length=2048, unique=True, db_index=True)
    69     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    71     label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import
    70 
       
    71 
       
    72 
    72 
    73 class BaseTitle(P4lModelLang):
    73 class BaseTitle(P4lModelLang):
    74     title = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    74     title = models.CharField(max_length=2048, blank=False, null=False, db_index=True)
    75     class Meta(P4lModelLang.Meta):
    75     class Meta(P4lModelLang.Meta):
    76         abstract = True
    76         abstract = True
   134 
   134 
   135 
   135 
   136 class SubjectMeeting(BaseMeeting):
   136 class SubjectMeeting(BaseMeeting):
   137     record = models.ForeignKey('p4l.Record', related_name="subjectMeetings", db_index=True)
   137     record = models.ForeignKey('p4l.Record', related_name="subjectMeetings", db_index=True)
   138 
   138 
   139 
       
   140 class CorporateBody(P4lModel):
       
   141     label = models.CharField(max_length=2048, blank=False, null=False, db_index=True) #rdfs:label
       
   142     acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym
       
   143     class Meta(P4lModel.Meta):
       
   144         unique_together = ['label','acronym']
       
   145 
   139 
   146 class Record(P4lModel):
   140 class Record(P4lModel):
   147     uri = models.URLField(max_length=2048, unique=True, db_index=True) #subject
   141     uri = models.URLField(max_length=2048, unique=True, db_index=True) #subject
   148     subjects = models.ManyToManyField('p4l.Subject') #dct:subject                                                       # Thesaurus with no country
   142     subjects = models.ManyToManyField('p4l.Subject') #dct:subject                                                       # Thesaurus with no country
   149     themes = models.ManyToManyField('p4l.Theme') #iiep:theme                                                            # Theme
   143     themes = models.ManyToManyField('p4l.Theme') #iiep:theme                                                            # Theme
   167     #periodicals = foreign key from 'p4l.Periodical' #iiep:periodical
   161     #periodicals = foreign key from 'p4l.Periodical' #iiep:periodical
   168     #meetings = foreign key from 'p4l.Meeting' #iiep:meeting
   162     #meetings = foreign key from 'p4l.Meeting' #iiep:meeting
   169     #series = foreign key from 'p4l.Serie'  #iiep:serie
   163     #series = foreign key from 'p4l.Serie'  #iiep:serie
   170     #authors = foreign key from 'p4l.Author' #iiep:author
   164     #authors = foreign key from 'p4l.Author' #iiep:author
   171     #subjectPersons = foreign key from 'p4l.SubjectPerson' #iiep:subjectPerson
   165     #subjectPersons = foreign key from 'p4l.SubjectPerson' #iiep:subjectPerson
   172     subjectCorporateBodies = models.ManyToManyField('p4l.CorporateBody') #iiep:subjectCorporateBody                       # Organisation ?
   166     subjectCorporateBodies = models.ManyToManyField('p4l.CorporateAuthor', related_name='recordsSubjectCorporateBody') #iiep:subjectCorporateBody
   173     #subjectMeetings = foreign key from 'p4l.SubjectMeeting' #iiep:subjectMeeting
   167     #subjectMeetings = foreign key from 'p4l.SubjectMeeting' #iiep:subjectMeeting
   174     #corporateAuthors = foreign key from 'p4l.CorporateAuthor' #iiep:corporateAuthor                                # Organisation ?
   168     corporateAuthors = models.ManyToManyField('p4l.CorporateAuthor', related_name='recordsCorporateAuthor') #iiep:subjectCorporateBody
   175     #urls foreign Key from Url #iiep:url
   169     #urls foreign Key from Url #iiep:url
   176     recordType = models.URLField(max_length=2048) #dct:type
   170     recordType = models.URLField(max_length=2048) #dct:type
       
   171     
   177     isDocumentPart = models.BooleanField() #iiep:isDocumentPart
   172     isDocumentPart = models.BooleanField() #iiep:isDocumentPart
       
   173     isMultilingual = models.BooleanField() #iiep:isMultilingual
   178 
   174 
   179     def __unicode__(self):
   175     def __unicode__(self):
   180         return "Record id %s { identifier: %s, uri: %s, editionStatement: %s,  recordType: %s, isDocumentPart: %s, notes: %s, language : %s}" \
   176         return "Record id %s { identifier: %s, uri: %s, editionStatement: %s,  recordType: %s, isDocumentPart: %s, notes: %s, language : %s}" \
   181             % (
   177             % (
   182                 self.id,
   178                 self.id,