# HG changeset patch # User verrierj # Date 1326359361 -3600 # Node ID 74f898bd09833a948d3838ac8b9369482dd9f085 # Parent c6953232099f6ed71d38e5981538b6d4de0a8aed Fix bug when computing stat on a project where the media is referenced in the xml but is not included in the contents field diff -r c6953232099f -r 74f898bd0983 src/ldt/ldt/ldt_utils/stat.py --- 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)