"Base class for all media item query sets"
def quick_search(self, pattern):
- "Perform a quick search on code, title and collector name"
+ "Perform a quick search on various fields"
+ from telemeta.models.media import MediaItem
pattern = pattern.strip()
- return self.filter(
- Q(code__contains=pattern.strip()) |
- Q(old_code__contains=pattern.strip()) |
- word_search_q('title', pattern) |
- self.by_fuzzy_collector_q(pattern)
- )
+ model = MediaItem()
+ fields = model.to_dict()
+ keys = fields.keys()
+ fields = []
+ for field in keys:
+ field_str = str(model._meta.get_field(field))
+ if 'CharField' in field_str:
+ fields.append(field)
+ q = Q(code__contains=pattern.strip()) | Q(old_code__contains=pattern.strip())
+ for field in fields:
+ q = q | word_search_q(field, pattern)
+ q = q | self.by_fuzzy_collector_q(pattern)
+ return self.filter(q)
def without_collection(self):
"Find items which do not belong to any collection"
class MediaCollectionQuerySet(CoreQuerySet):
def quick_search(self, pattern):
- "Perform a quick search on code, title and collector name"
+ "Perform a quick search on various fields"
+ from telemeta.models.media import MediaCollection
pattern = pattern.strip()
- return self.filter(
- Q(code__contains=pattern.strip()) |
- Q(old_code__contains=pattern.strip()) |
- word_search_q('title', pattern) |
- self.by_fuzzy_collector_q(pattern)
- )
+ model = MediaCollection()
+ fields = model.to_dict()
+ keys = fields.keys()
+ fields = []
+ for field in keys:
+ field_str = str(model._meta.get_field(field))
+ if 'CharField' in field_str:
+ fields.append(field)
+ q = Q(code__contains=pattern.strip()) | Q(old_code__contains=pattern.strip())
+ for field in fields:
+ q = q | word_search_q(field, pattern)
+ q = q | self.by_fuzzy_collector_q(pattern)
+ return self.filter(q)
def by_location(self, location):
"Find collections by location"
url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/visualize/(?P<visualizer_id>[0-9a-z_]+)/(?P<width>[0-9A-Z]+)x(?P<height>[0-9A-Z]+)/$',
web_view.item_visualize,
name="telemeta-item-visualize"),
- url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/analyze/(?P<analyzer_id>[0-9a-z_]+)/$',
- web_view.item_analyze,
- name="telemeta-item-analyze"),
+ url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/analyze/xml/$',
+ web_view.item_analyze_xml,
+ name="telemeta-item-analyze-xml"),
url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/item_xspf.xml$',
web_view.item_playlist,
dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"),
item.save()
else:
# process first waveform to speed up imports
- width = 360
- height = 130
- size = str(width) + '_' + str(height)
- grapher_id = 'waveform'
- image_file = '.'.join([public_id, grapher_id, size, 'png'])
-
+# width = 360
+# height = 130
+# size = str(width) + '_' + str(height)
+# grapher_id = 'waveform'
+# image_file = '.'.join([public_id, grapher_id, size, 'png'])
+#
analyzers = []
analyzers_sub = []
if item.file:
self.cache_data.write_analyzer_xml(analyzers, analyze_file)
return analyzers
+
+ def item_analyze_xml(self, request, public_id):
+ item = MediaItem.objects.get(public_id=public_id)
+ analyze_file = public_id + '.xml'
+ if not self.cache_data.exists(analyze_file):
+ self.item_analyze(item)
+ mime_type = 'text/xml'
+ response = HttpResponse(self.cache_data.read_stream_bin(analyze_file), mimetype=mime_type)
+ response['Content-Disposition'] = 'attachment; filename='+public_id+'.xml'
+ return response
def item_visualize(self, request, public_id, visualizer_id, width, height):
item = MediaItem.objects.get(public_id=public_id)