views.py 5.29 KB
Newer Older
Sylvain Coulange's avatar
Sylvain Coulange committed
1
2
from django.shortcuts import render, HttpResponseRedirect
from static.scripts import textPhonographer as txtphono
3
from .models import Phonograph, Data, Entree, commitData
4
5
from django.http import JsonResponse
import json
Sylvain Coulange's avatar
Sylvain Coulange committed
6
import spacy
7
import subprocess
8
import re
9

10
nlpFr = spacy.load('fr')
Sylvain Coulange's avatar
Sylvain Coulange committed
11
nlpEn = spacy.load("en_core_web_sm")
12
logFile = "../logs/dico_frwiktionary-20200301_v2.log"
Sylvain Coulange's avatar
Sylvain Coulange committed
13
14

def redirApp(request):
Sylvain Coulange's avatar
Sylvain Coulange committed
15
    return HttpResponseRedirect('/')
Sylvain Coulange's avatar
Sylvain Coulange committed
16
17

def main(request):
18
19
    data = Data()
    data.update = updateTime()
Sylvain Coulange's avatar
Sylvain Coulange committed
20
21
    return render(request, 'coloriseur.html', {'data': data})

22
23
24
25
def colorize(request):
    colis = json.loads(request.body)
    text = colis['inText']
    lang = colis['lang']
Sylvain Coulange's avatar
Sylvain Coulange committed
26
27
28
29
    if lang == "fr":
        nlpText = nlpFr(text)
    elif lang == "en":
        nlpText = nlpEn(text)
30
31
32
33
34
35
36
37
38
39
40
    outText = []

    for token in nlpText:
        sdl = re.findall(r'\r\n',token.text)
        print("sdl =",sdl)
        if len(sdl) > 0:
            for s in sdl:
                print("Saut de ligne.")
                outText.append('§')
        else:
            print("Mot en entrée :",token.text)
Sylvain Coulange's avatar
Sylvain Coulange committed
41
42
43
44
            if lang == "en":
                result = txtphono.mimi(token.text,lang)
            else:
                result = txtphono.mimi(token.text,lang)
45
46
47
48
49
            print(result)
        
            phonographieList = []
            for r in result:      
                phonographie = []
Sylvain Coulange's avatar
Sylvain Coulange committed
50
                for i in r[0]:
51
52
53
54
                    ph = {}
                    ph['phon'] = i[0]
                    ph['graph'] = i[1]
                    phonographie.append(ph)
Sylvain Coulange's avatar
Sylvain Coulange committed
55
                phonographieList.append((phonographie,r[1],r[2],r[3]))
56
57
58
59
60
61
            outText.append(phonographieList)
    rep = {
        'outText': outText
    }
    return JsonResponse(rep)

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

def getPhonoOf(request):
    # Renvoie une liste(texte) de listes(phonographiesPossibles) de listes(phonographie) de phonèmes à partir d'un mot ou d'une expression
    # ex. input="chat" → output=[[[phon_s_maj, phon_a], [phon_ts_maj, phon_a, phon_t]]]
    # ex. input="le chat" → output= [
    #   [
    #       [phon_l,phon_2],
    #       [phon_e_maj,phon_l,phon_2]
    #   ],
    #   [
    #       [phon_s_maj, phon_a],
    #       [phon_ts_maj, phon_a, phon_t]
    #   ]
    # ]
     
    colis = json.loads(request.body)
    text = colis['inText']
    lang = colis['lang']
    if lang == "fr":
        nlpText = nlpFr(text)
    elif lang == "en":
        nlpText = nlpEn(text)
    outPhono = []

    for token in nlpText:
        sdl = re.findall(r'\r\n',token.text)
        print("sdl =",sdl)
        if len(sdl) > 0:
            for s in sdl:
                print("Saut de ligne.")
                outText.append('§')
        else:
            print("Mot en entrée :",token.text)
            if lang == "en":
                result = txtphono.mimi(token.text,lang)
            else:
                result = txtphono.mimi(token.text,lang)
            print(result)
        
            phonographieList = []
            for r in result:      
                phonoliste = []
                for i in r[0]:
                    phonoliste.append(i[0])
                    
                phonographieList.append(phonoliste)
            outPhono.append(phonographieList)
    rep = {
        'outText': outPhono
    }
    return JsonResponse(rep)

114
115
def updateTime():
    upd = str(subprocess.check_output(["git", "log", "-1", "--format=%cd", "--date=short"]))
116
    #ver = str(subprocess.check_output(["git", "rev-list", "--all", "--count"]))
Sylvain Coulange's avatar
Sylvain Coulange committed
117
    return 'Version 4.0 (mis à jour le '+upd[2:-3]+')'
Sylvain Coulange's avatar
Sylvain Coulange committed
118

119
120
121
def main0(request):
    data = Data()
    data.text = ''
Sylvain Coulange's avatar
Sylvain Coulange committed
122
    data.pphh = [[[]]]
123
    data.update = updateTime()
Sylvain Coulange's avatar
Sylvain Coulange committed
124
    data.colorType = 'sw'
125
    data.defaultBg = 'black'
126
127
128
    return render(request, 'coloriseur.html', {'data': data})


Sylvain Coulange's avatar
Sylvain Coulange committed
129
130
def dicoView(request):
    data = Entree()
131
    data.update = updateTime()
132
    data.lenDic = txtphono.getLenDic()
133
    data.logStat = txtphono.getLogStat()
Sylvain Coulange's avatar
Sylvain Coulange committed
134
135
    return render(request, 'editDico.html', {'data': data})

136
137
138
139
140
141
142
def dicoReq(request):
    listeEntrees = []
    mot = request.GET.get('mot', None)
    trans = request.GET.get('trans', None)
    motCond = request.GET.get('motCond', None)
    transCond = request.GET.get('transCond', None)
    
Sylvain Coulange's avatar
Sylvain Coulange committed
143
    rep = {
Sylvain Coulange's avatar
Sylvain Coulange committed
144
        "listeEntrees" : txtphono.getEntryByWord(m=mot,mc=motCond,t=trans,tc=transCond,lang='fr')
Sylvain Coulange's avatar
Sylvain Coulange committed
145
146
147
148
149
150
151
152
153
154
    }
    return JsonResponse(rep)

def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip
155

Sylvain Coulange's avatar
Sylvain Coulange committed
156
157
158
159
160
def editEntry(request):
    mot = request.GET.get('mot', None)
    transList = request.GET.get('transList', None)
    ipCli = get_client_ip(request)
    rep = {
Sylvain Coulange's avatar
Sylvain Coulange committed
161
        'reponse': txtphono.modifEntry(ipCli,mot,transList,'fr')
Sylvain Coulange's avatar
Sylvain Coulange committed
162
163
    }
    return JsonResponse(rep)
Sylvain Coulange's avatar
Sylvain Coulange committed
164

165
def newEntry(request):
166
167
168
169
    mot = request.GET.get('mot', None)
    trans = request.GET.get('trans', None)
    ipCli = get_client_ip(request)
    rep = {
Sylvain Coulange's avatar
Sylvain Coulange committed
170
        'reponse': txtphono.addEntry(ipCli,mot,trans,'fr')
171
172
173
    }
    return JsonResponse(rep)

174
175
176
177
def supprEntry(request):
    mot = request.GET.get('mot', None)
    ipCli = get_client_ip(request)
    rep = {
Sylvain Coulange's avatar
Sylvain Coulange committed
178
        'reponse': txtphono.delEntry(ipCli,mot,'fr')
179
180
181
    }
    return JsonResponse(rep)

182
def getLog(request):
Sylvain Coulange's avatar
Sylvain Coulange committed
183
    rep = txtphono.sendMeLogPlease('fr')
184
    return JsonResponse(rep)