]> git.parisson.com Git - telemeta.git/commitdiff
add all CharFields in search keywords for Collection and Item, add item_analyze_xml...
authoryomguy <yomguy@parisson.com>
Tue, 5 Apr 2011 12:14:19 +0000 (14:14 +0200)
committeryomguy <yomguy@parisson.com>
Tue, 5 Apr 2011 12:14:19 +0000 (14:14 +0200)
telemeta/models/query.py
telemeta/urls.py
telemeta/web/base.py

index 9c01f9ad8585c577cba89ae88e342b6d67b75419..839f5068a7fbe19f088c0663455a45fccecd739d 100644 (file)
@@ -43,14 +43,22 @@ class MediaItemQuerySet(CoreQuerySet):
     "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"
@@ -220,14 +228,22 @@ class MediaItemManager(CoreManager):
 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"
index 93dc42be7f2fadef72bb575c296097567c2be0d7..54c6bfa3513ef158742901443b7f35efde2ac089 100644 (file)
@@ -82,9 +82,9 @@ urlpatterns = patterns('',
     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"),
index e488e9f5af26d8fc25b69d0fe62f8dcd185d5238..cd8acb16148a5131555deb271cb8356a4b3bd016 100644 (file)
@@ -390,12 +390,12 @@ class WebView(object):
                         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:
@@ -440,6 +440,16 @@ class WebView(object):
                 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)