Subversion Repositories navi

Rev

Rev 287 | Rev 296 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
46 szabot 1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
176 muzer 3
#    This file is part of Tsim Apiak.
4
#
5
#    Tsim Apiak is free software: you can redistribute it and/or modify
6
#    it under the terms of the GNU General Public Licence as published by
7
#    the Free Software Foundation, either version 3 of the Licence, or
8
#    (at your option) any later version.
9
#
10
#    In addition to this, you must also comply with clause 4 of the
11
#    Apache Licence, version 2.0, concerning attribution. Where there
12
#    is a contradiction between the two licences, the GPL
13
#    takes preference.
14
#
186 szabot 15
#    Tsim Apiak is distributed in the hope that it will be useful,
176 muzer 16
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
#    GNU General Public License for more details.
19
#
20
#    You should have received a copy of the GNU General Public License
21
#    along with Tsim Apiak.  If not, see <http://www.gnu.org/licenses/>.
46 szabot 22
 
176 muzer 23
 
283 muzer 24
import mysql.connector as mysql
46 szabot 25
 
26
def getnavilist():
27
    ret = []
283 muzer 28
    db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi")
29
    cur = db.cursor(dictionary=True)
30
    cur.execute("""
103 szabot 31
    SELECT *
46 szabot 32
    FROM `metaWords`
275 muzer 33
    WHERE partOfSpeech <> 'num.' AND partOfSpeech <> 'prefix' AND partOfSpeech <> 'affix'
283 muzer 34
    ORDER BY CHAR_LENGTH(navi) DESC""")
35
    for row in cur:
284 muzer 36
        if row["infixes"] and row["infixes"] != "NULL": # yeah seriously
37
            ret.append({"id": row["id"], "navi": row["navi"].replace("+", "").replace("-", ""), "infix": row["infixes"].lower(), "type": row["partOfSpeech"]})
65 szabot 38
        else:
284 muzer 39
            ret.append({"id": row["id"], "navi": row["navi"].replace("+", "").replace("-", ""), "infix": row["navi"].lower(), "type": row["partOfSpeech"]})
283 muzer 40
    cur.close()
46 szabot 41
    db.close()
42
    return ret
43
 
283 muzer 44
def getaffixlists():
45
    ret = ([], [], [])
46
    db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi")
47
    cur = db.cursor(dictionary=True)
48
    cur.execute("""
49
    SELECT *
50
    FROM `metaInfixes`
51
    ORDER BY CHAR_LENGTH(navi) DESC""")
52
    for row in cur:
287 muzer 53
        endfix = False
283 muzer 54
        if row["navi"] and row["navi"][0] == "-":
55
            ret[2].append({"id": row["id"], "navi": row["navi"].replace("-", ""), "gloss": row["shorthand"].upper()})
287 muzer 56
            endfix = True
57
        if row["navi"] and row["navi"][-1] in ("-", "+"):
288 muzer 58
            ret[0].append({"id": row["id"], "navi": row["navi"].replace("-", "").replace("+", ""), "gloss": row["shorthand"].upper()})
287 muzer 59
            endfix = True
60
        if not endfix:
284 muzer 61
            if not row["position"] or row["position"] == "NULL":
283 muzer 62
                # not actually an affix
63
                continue
288 muzer 64
            ret[1].append({"id": row["id"], "navi": row["navi"], "gloss": row["shorthand"].upper(), "position": int(row["position"])})
283 muzer 65
    cur.close()
66
    db.close()
288 muzer 67
 
68
    for subret in ret:
69
        subret.sort(key=lambda x: len(x["navi"]), reverse=True)
70
 
283 muzer 71
    return ret
72
 
246 szabot 73
def translate(wid, language):
235 muzer 74
    ret = None
283 muzer 75
    db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi")
76
    cur = db.cursor(dictionary=True)
77
    cur.execute("""
136 muzer 78
    SELECT *
79
    FROM `localizedWords`
283 muzer 80
    WHERE id = %s AND languageCode = %s""", (wid, language))
81
    for row in cur:
136 muzer 82
        ret = row["localized"]
139 szabot 83
        break
235 muzer 84
    if ret == None:
85
        return u"ERROR: WORD NOT LOCALISED"
136 muzer 86
    db.close()
176 muzer 87
    return ret