From d503d52260f6c5f4119a1af5956cda87f29b351e Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 17 Sep 2011 10:17:26 +0200
Subject: [PATCH] add the search log

---
 server/djrandom/database.py           |  1 +
 server/djrandom/frontend/api_views.py |  6 +++++-
 server/djrandom/model/mp3.py          | 14 ++++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/server/djrandom/database.py b/server/djrandom/database.py
index 14d09e2..dc5f4cb 100644
--- a/server/djrandom/database.py
+++ b/server/djrandom/database.py
@@ -18,6 +18,7 @@ class SetTextFactory(PoolListener):
 
 
 def init_db(uri):
+    # Import all ORM modules here, so that 'create_all' can find them.
     from djrandom.model import mp3, playlist
     engine = create_engine(uri, listeners=[SetTextFactory()],
                            pool_recycle=1800)
diff --git a/server/djrandom/frontend/api_views.py b/server/djrandom/frontend/api_views.py
index 05d9ba2..461724b 100644
--- a/server/djrandom/frontend/api_views.py
+++ b/server/djrandom/frontend/api_views.py
@@ -4,7 +4,7 @@ from flask import Flask, request, Response, abort, jsonify, render_template, g
 from flask.helpers import send_file
 from djrandom import utils
 from djrandom.database import Session
-from djrandom.model.mp3 import MP3, PlayLog
+from djrandom.model.mp3 import MP3, PlayLog, SearchLog
 from djrandom.model.playlist import Playlist
 from djrandom.frontend import app, svcs, require_auth
 from sqlalchemy import distinct
@@ -131,6 +131,10 @@ def search_json():
         resultiter = svcs['searcher'].search(query, n=num_results)
         results = [{'score': score, 'sha1': sha1}
                    for (score, sha1) in resultiter]
+        if results:
+            # Save this query in the search log.
+            Session.add(SearchLog.add(query, g.userid))
+            Session.commit()
     return jsonify(results=results)
 
 
diff --git a/server/djrandom/model/mp3.py b/server/djrandom/model/mp3.py
index 0e570ab..7832886 100644
--- a/server/djrandom/model/mp3.py
+++ b/server/djrandom/model/mp3.py
@@ -1,4 +1,5 @@
 from sqlalchemy import *
+from datetime import datetime
 from djrandom.database import Base
 
 
@@ -63,3 +64,16 @@ class PlayLog(Base):
                 hashes = [None] * n
             yield (plog.sha1, hashes)
 
+
+class SearchLog(Base):
+
+    __tablename__ = 'searchlog'
+
+    userid = Column(String(40), index=True)
+    query = Column(String(256))
+    stamp = Column(DateTime())
+
+    @classmethod
+    def add(cls, query_str, userid):
+        return cls(query=query_str, userid=userid, stamp=datetime.now())
+
-- 
GitLab