from django.conf import settings
from ldt.ldt_utils import ANALYZER, STORE
import base64
import django.core.urlresolvers
import lucene
import lxml.etree
import urllib
import uuid

__BOOLEAN_DICT = {
    'false':False,
    'true':True,
    '0':False,
    '1':True,
    't': True,
    'f':False
}

def boolean_convert(bool):
    if bool is None:
        return False
    if bool is True or bool is False:
        return bool
    key = str(bool).lower()
    return __BOOLEAN_DICT.get(key, False)


def generate_uuid():
    return unicode(uuid.uuid1())


def normalize_tags(list):
    nlist=[]
    for tag in list:
        tag = tag.lower()
        nlist.append(tag)
    taglist = dict().fromkeys(nlist).keys()    
    
    return taglist


class LdtSearch(object):

    def query(self, field, query):
        indexSearcher = lucene.IndexSearcher(STORE)
        queryParser = lucene.QueryParser(lucene.Version.LUCENE_30, field, lucene.FrenchAnalyzer(lucene.Version.LUCENE_30))
        queryParser.setDefaultOperator(lucene.QueryParser.Operator.AND)
        queryObj = queryParser.parse(query)
        hits = indexSearcher.search(queryObj, settings.LDT_MAX_SEARCH_NUMBER)
    
        res = []
        for hit in hits.scoreDocs:
            doc = indexSearcher.doc(hit.doc)
            res.append({"external_id":doc.get("external_id"),"title":doc.get("title")})
        indexSearcher.close()
        return res

    def queryAll(self, query):        
        return self.query("all", query)
    

