--- a/src/ldt/ldt/ldt_utils/models.py Wed Jan 04 12:17:47 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py Wed Jan 04 17:28:54 2012 +0100
@@ -10,7 +10,7 @@
from ldt.security.manager import SafeManager
from sorl.thumbnail import ImageField
from utils import (create_ldt, copy_ldt, create_empty_iri, update_iri,
- generate_uuid, clean_description)
+ generate_uuid)
import lucene
import lxml.etree
import mimetypes
@@ -18,6 +18,7 @@
import tagging.fields
import uuid
+
class Author(SafeModel):
handle = models.CharField(max_length=512, unique=True, blank=True, null=True)
@@ -127,7 +128,7 @@
tags = tagging.fields.TagField(max_length=2048, null=True, blank=True)
media_obj = models.ForeignKey('Media', blank=True, null=True)
- image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/contents/", default="thumbnails/contents/content_default_icon.png")
+ image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/contents/", default=settings.DEFAULT_CONTENT_ICON)
class Meta:
ordering = ["title"]
@@ -354,7 +355,7 @@
state = models.IntegerField(choices=STATE_CHOICES, default=1)
description = models.TextField(null=True, blank=True)
- image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/projects/", default="thumbnails/projects/project_default_icon.png")
+ image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/projects/", default=settings.DEFAULT_PROJECT_ICON)
class Meta:
ordering = ["title"]
@@ -410,12 +411,17 @@
project.ldt_id = str(uuid.uuid1()) #@UndefinedVariable
project.created_by = user.username
project.changed_by = user.username
- project.state = 1
+ project.state = 1
project.save()
assign('view_project', user, project)
- assign('change_project', user, project)
+ assign('change_project', user, project)
+
for content in contents:
project.contents.add(content)
+
+ project.set_icon()
+ project.save()
+
return create_ldt(project, user)
def copy_project(self, user, title, description='', group=None):
@@ -430,14 +436,31 @@
return project
def publish(self):
+ if not self.pk:
+ self.save()
self.state = 2
everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
assign('ldt_utils.view_project', everyone, self)
+ self.save()
def unpublish(self):
+ if not self.pk():
+ self.save()
self.state = 1
everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
remove_perm('ldt_utils.view_project', everyone, self)
+ self.save()
+
+ def set_icon(self):
+ default_image = os.path.basename(settings.DEFAULT_CONTENT_ICON)
+
+ for content in self.contents.all():
+ if os.path.basename(content.image.file.name) != default_image:
+ self.image = content.image
+ return True
+
+ self.image = settings.DEFAULT_PROJECT_ICON
+ return False
def check_access(self, user):
if (user and user.is_staff) or self.state == 2:
@@ -445,45 +468,6 @@
else:
return False
- def save(self):
- if self.pk and self.ldt:
- doc = lxml.etree.fromstring(self.ldt)
- new_contents = []
- contents = doc.xpath("/iri/medias/media")
- for elem in contents:
- id = elem.get("id")
- new_contents.append(id)
-
- for c in self.contents.all():
- if not c.iri_id in new_contents:
- self.contents.remove(c)
-
- contents_id = [c.id for c in self.contents.all()]
- for c in new_contents:
- if c not in contents_id:
- content = Content.objects.get(iri_id=c)
- self.contents.add(content)
-
- description = self.get_description(doc)
- new_desc = clean_description(description)
-
- if new_desc:
- desc_node = doc.xpath('/iri/project')[0]
- desc_node.set('abstract', new_desc)
- self.ldt = lxml.etree.tostring(doc, pretty_print=True)
-
- self.description = new_desc if new_desc else description
-
- super(Project, self).save()
-
- if self.state == 2:
- self.publish()
- elif self.state == 1:
- self.unpublish()
-
- super(Project, self).save()
-
-
class Segment(SafeModel):