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