Fix bug when computing stat on a project where the media is referenced in the xml but is not included in the contents field
--- a/src/ldt/ldt/ldt_utils/stat.py Wed Jan 11 14:57:33 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/stat.py Thu Jan 12 10:09:21 2012 +0100
@@ -5,6 +5,7 @@
def update_stat_project(project, contents=None, doc=None, update_contents=[]):
+
if not contents:
contents = project.contents.all()
@@ -16,29 +17,34 @@
for content_node in doc.xpath('/iri/annotations/content'):
content_name = content_node.get('id')
- content = contents.get(iri_id=content_name)
- contribution_to_content = contributions.get(content=content)
-
- size_division = content.duration / number_division
- limits = [x * size_division for x in range(number_division+1)]
- buckets = [0] * number_division
- nb_annotation = 0
+ content = contents.filter(iri_id=content_name)
- for ann in content_node.xpath('ensemble/decoupage/elements/element'):
-
- begin = int(ann.get('begin'))
- end = int(ann.get('dur')) + begin
-
- buckets = find_buckets(buckets, limits, begin, end)
- nb_annotation += 1
-
- buckets = get_string_from_buckets(buckets)
-
- if contribution_to_content.stat != buckets or contribution_to_content.nb_annotation != nb_annotation:
- contribution_to_content.stat = buckets
- contribution_to_content.nb_annotation = nb_annotation
- contribution_to_content.save()
- update_stat_content(content)
+ # if the content referenced in the xml belongs to the
+ # fields contents of the project
+ if len(content) != 0:
+ content = content[0]
+ contribution_to_content = contributions.get(content=content)
+
+ size_division = content.duration / number_division
+ limits = [x * size_division for x in range(number_division+1)]
+ buckets = [0] * number_division
+ nb_annotation = 0
+
+ for ann in content_node.xpath('ensemble/decoupage/elements/element'):
+
+ begin = int(ann.get('begin'))
+ end = int(ann.get('dur')) + begin
+
+ buckets = find_buckets(buckets, limits, begin, end)
+ nb_annotation += 1
+
+ buckets = get_string_from_buckets(buckets)
+
+ if contribution_to_content.stat != buckets or contribution_to_content.nb_annotation != nb_annotation:
+ contribution_to_content.stat = buckets
+ contribution_to_content.nb_annotation = nb_annotation
+ contribution_to_content.save()
+ update_stat_content(content)
for content in update_contents:
update_stat_content(content)