--- a/src/iconolab/models.py Tue Jun 28 12:52:33 2016 +0200
+++ b/src/iconolab/models.py Tue Jun 28 15:50:57 2016 +0200
@@ -3,6 +3,7 @@
from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
+from django_comments_xtd.models import XtdComment
import uuid, json
@@ -13,16 +14,16 @@
collection = models.ForeignKey('Collection', blank=True, null=True)
def is_internal(self):
- return link.startswith(settings.BASE_URL)
+ return self.link.startswith(settings.BASE_URL)
+
class TaggingInfo(models.Model):
revision = models.ForeignKey('AnnotationRevision', on_delete=models.CASCADE)
tag = models.ForeignKey('Tag', on_delete=models.CASCADE)
accuracy = models.IntegerField()
relevancy = models.IntegerField()
-
-# fonds Ingres - Musee de la Poste
+
class Collection(models.Model):
name = models.CharField(max_length=50, unique=True)
description = models.CharField(max_length=255)
@@ -33,7 +34,8 @@
class Item(models.Model):
collection = models.ForeignKey(Collection, related_name="items")
-
+
+
class ItemMetadata(models.Model):
item = models.OneToOneField('Item', related_name='metadatas')
joconde_ref = models.CharField(max_length=20, null=False, blank=False, unique=True)
@@ -42,7 +44,6 @@
description = models.CharField(max_length=255)
-
class ImageStats(models.Model):
image = models.OneToOneField('Image', related_name='stats', blank=False, null=False)
views_count = models.IntegerField(blank=True, null=True, default=0)
@@ -177,6 +178,7 @@
self.current_revision=merged_revision
self.save()
+
class AnnotationRevision(models.Model):
AWAITING = 0
@@ -189,7 +191,6 @@
(REJECTED, 'rejected')
)
-
revision_guid = models.UUIDField(default=uuid.uuid4)
annotation = models.ForeignKey('Annotation', related_name='revisions', null=False, blank=False)
parent_revision = models.ForeignKey('AnnotationRevision', related_name='reverse_parent_revision', blank=True, null=True)
@@ -198,7 +199,7 @@
title = models.CharField(max_length=255)
description = models.TextField(null=True)
fragment = models.TextField()
- tags = models.ManyToManyField('Tag', through='TaggingInfo', through_fields=('revision', 'tag'), blank=True, null=True)
+ tags = models.ManyToManyField('Tag', through='TaggingInfo', through_fields=('revision', 'tag'))
state = models.IntegerField(choices=REVISION_STATES, default=AWAITING)
created = models.DateTimeField(auto_now_add=True, null=True)
@@ -209,11 +210,11 @@
pass
for tag_data in tags_dict:
tag_string = tag_data.get("tag_input")
- tag_accuracy = tag_data.get("accuracy")
- tag_relevancy = tag_data.get("relevancy")
+ tag_accuracy = tag_data.get("accuracy", 0)
+ tag_relevancy = tag_data.get("relevancy", 0)
if tag_string.startswith("http://"): #check if url
- if Tag.objects.exists(link=tag_string): #check if tag already exists
+ if Tag.objects.filter(link=tag_string).exists(): #check if tag already exists
tag_obj = Tag.objects.get(link=tag_string)
else:
tag_obj = Tag.objects.create(
@@ -232,97 +233,37 @@
accuracy = tag_accuracy,
relevancy = tag_relevancy
)
-
-
+
+
+class IconolabComment(XtdComment):
+ revision = models.ForeignKey('AnnotationRevision', related_name='creation_comment', null=True, blank=True)
+ metacategories = models.ManyToManyField('MetaCategory', through='MetaCategoryInfo', through_fields=('comment', 'metacategory'))
+
+
+class MetaCategory(models.Model):
+ collection = models.ForeignKey(Collection)
+ label = models.CharField(max_length=255)
+
+ def __str__(self):
+ return self.label
-#class MetaCategory(models.Model):
-# collection = models.ForeignKey(Collection)
-# label = models.CharField(max_length=200)
-#
-# def __str__(self):
-# return self.label
-#
-# class Meta:
-# verbose_name_plural = 'Metacategories'
-#
-#
-# class Comment(models.Model):
-# author = models.ForeignKey(User)
-# created = models.DateTimeField(blank=False, null=False, auto_now_add=True)
-# annotation_revision = models.ForeignKey(AnnotationRevision, blank=True, null=True)
-# target = models.ForeignKey('Comment', blank=True, null=True)
-# content = models.TextField(blank=True)
-# metacategories = models.ManyToManyField(MetaCategory)
-#
-#
-# class CommentAttachement(models.Model):
-#
-# LINK = 0
-# IMAGE = 1
-# PDF = 2
-# COMMENT_CHOICES = (
-# (LINK, 'link'),
-# (IMAGE, 'image'),
-# (PDF, 'pdf')
-# )
-# comment = models.ForeignKey(Comment, on_delete=models.CASCADE, related_name='attachments')
-# main_annotation = models.ForeignKey(Annotation)
-# attachment_type = models.IntegerField(choices=COMMENT_CHOICES, default=0)
-# created_date = models.DateTimeField(auto_now_add=True)
-# data = models.TextField(blank=False)
-#
-#
-# # Activity & Notification
-#
-# class Activity(models.Model):
-#
-# NEW_COMMENT = 0
-# NEW_REVISION = 1
-# NEW_COMMENT_ON_REVISION = 2
-# NEW_EXPERT_CALL = 3
-# NEW_EXPERT_ANSWER = 4
-# NEW_REFERENCE = 5
-#
-# ACTIVITY_VERBS = (
-# (NEW_COMMENT, 'New comment'),
-# (NEW_REVISION, 'New revision'),
-# (NEW_COMMENT_ON_REVISION, 'New comment on a revision'),
-# (NEW_EXPERT_CALL, 'New expert call'),
-# (NEW_EXPERT_ANSWER, 'New expert answer'),
-# (NEW_REFERENCE, 'New reference'),
-# )
-#
-# verb = models.IntegerField(choices=ACTIVITY_VERBS)
-# actor = models.ForeignKey(User)
-#
-# target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
-# target_object_id = models.PositiveIntegerField()
-# target = GenericForeignKey('target_content_type', 'target_object_id')
-#
-# action_content_type = models.ForeignKey(ContentType, related_name='activity_action', on_delete=models.CASCADE, null=True, blank=True)
-# action_object_id = models.PositiveIntegerField(null=True, blank=True)
-# action_content = GenericForeignKey('action_content_type', 'action_object_id')
-#
-# created_date = models.DateTimeField(auto_now_add=True)
-#
-# def __str__(self):
-# return '%s:%s' % (author.name, verbe)
-#
-#
-# class Notification(models.Model):
-#
-# UNREAD = 0
-# READ = 1
-# DELETED = 2
-#
-# STATUS = (
-# (UNREAD, 'Unread'),
-# (READ, 'Read'),
-# (DELETED, 'Deleted')
-# )
-#
-# activity = models.ForeignKey(Activity)
-# user = models.ForeignKey(User)
-# status = models.IntegerField(choices=STATUS, default=UNREAD)
-# created_date = models.DateTimeField(auto_now_add=True)
+
+class MetaCategoryInfo(models.Model):
+ comment = models.ForeignKey('IconolabComment', on_delete=models.CASCADE)
+ metacategory = models.ForeignKey('MetaCategory', on_delete=models.CASCADE)
+
+class CommentAttachement(models.Model):
+
+ LINK = 0
+ IMAGE = 1
+ PDF = 2
+ COMMENT_CHOICES = (
+ (LINK, 'link'),
+ (IMAGE, 'image'),
+ (PDF, 'pdf')
+ )
+
+ comment = models.ForeignKey('IconolabComment', related_name='attachments', on_delete=models.CASCADE)
+ attachment_type = models.IntegerField(choices=COMMENT_CHOICES, default=0)
+ data = models.TextField(blank=False)
\ No newline at end of file