From 7b2c2d60b388d9f021f102b2a4ec7d28a7b4d068 Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Mon, 25 May 2020 18:13:15 +0200
Subject: [PATCH] WIP unl.ru connecteur

Template not finished (imported from unl2rdf)
---
 src/app/app.py                  |  34 ++++++++++
 src/app/templates/text2unl.html | 110 ++++++++++++++++++++++++++++++++
 2 files changed, 144 insertions(+)
 create mode 100644 src/app/templates/text2unl.html

diff --git a/src/app/app.py b/src/app/app.py
index da0a6d3..d0f0f13 100644
--- a/src/app/app.py
+++ b/src/app/app.py
@@ -6,6 +6,7 @@ from flask import render_template
 import tempfile
 from subprocess import Popen, PIPE, STDOUT
 import os
+import requests
 
 app = Flask(__name__)
 
@@ -28,6 +29,18 @@ def unl2rdf():
     return render_template('unl2rdf.html', unl=unl, output=output)
 
 
+@app.route('/text2unl', methods=['GET', 'POST'])
+def text2unl():
+    if request.method == 'POST':
+        text = request.form['text']
+        language = request.form['language']
+        output = {'unl': convertTextToUnl(text, language)}
+    else:
+        text = None
+        output = None
+    return render_template('text2unl.html', text=text, output=output)
+
+
 def convertUnl(unl, outputs):
     res = {}
 
@@ -79,3 +92,24 @@ def convertUnl(unl, outputs):
             res['svg'] = 'Error : no dot file'
 
     return res
+
+
+def convertTextToUnl(text, language):
+    url = "http://unl.ru/etap-cgi/etap-cgi-old/cgiunl.exe"
+
+    data = {
+        'DOMAIN': 'SPORT',
+        'password': 'guest',
+        'TAGERROR': 'NO',
+        'username': 'UNL_guest',
+        'conversion': 'true',
+        'language': language,
+        'data': text,
+        'outputmode': 'text',
+        'coding': 'utf-8',
+        'translate': 'Process'
+    }
+
+    r = requests.post(url, data)
+    # Remove garbage before first '['
+    return ''.join(r.text.partition('[')[1:])
diff --git a/src/app/templates/text2unl.html b/src/app/templates/text2unl.html
new file mode 100644
index 0000000..fd2067e
--- /dev/null
+++ b/src/app/templates/text2unl.html
@@ -0,0 +1,110 @@
+{% extends "base.html" %}
+{% block title %}Text 2 unl demo{% endblock %}
+{% block content %}
+{% if not text %}
+<form action="{{request.path}}" method="POST">
+    <h1>Enter some text here I will convert it unsing unl.ru for you</h1>
+    <div class="form-group row">
+        <div class="col-12 col-md-8">
+            <h2>Text</h3>
+            <textarea class="form-control" name="unl" cols="120" rows="30" >
+The black cat and the white cat are eating.
+            </textarea>
+        </div>
+        <div class="col-4">
+            <h3>Settings</h2>
+            <ul>
+                <li><label><input type="radio" name="language" value="en" checked>English</label></li>
+                <li><label><input type="radio" name="language" value="ru">Russian</label></li>
+            </ul>
+            <button class="btn btn-primary" type="submit">Submit</button>
+        </div>
+    </div>
+</form>
+{% else %}
+<div class="row">
+    {% if output['error'] %}
+    <div class='col-12 md-6'>
+        <h2> Error </h2>
+        <pre>
+        {{ output['error'] }}
+        </pre>
+    </div>
+    {% endif %}
+
+    {% if output['unl'] %}
+    <div class='col-12 md-6'>
+        <h2> Unl </h2>
+        <div class='row justify-content-center'>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" onclick="download('text.ttl', 'svg', 'html',
+                                                              'image/svg+xml')">Download image <i class="fas fa-download"
+                                                                                                  ></i></button>
+            </div>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" onclick="download('graph.dot', 'dot', 'text',
+                                                              'text/plain;charset=utf-8')">Download source <i class="fas
+                                                                                                                        fa-download" ></i></button>
+            </div>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#svg" aria-expanded="true" aria-controls="svg">Toggle image</button>
+            </div>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#dotdiv" aria-expanded="false" aria-controls="dotdiv">Toggle source</button>
+            </div>
+        </div>
+        <div id='svg' class='collapse show'>
+            {{ output['svg'] | safe }}
+        </div>
+        <div id='dotdiv' class='collapse'>
+            <pre>
+            <code id='dot'>
+            {{ output['dot'] }}
+            </code>
+            </pre>
+        </div>
+    </div>
+    {% endif %}
+
+    {% if output['rdf'] %}
+    <div class='col-12 md-6'>
+        <h2> RDF </h2>
+        <div class='row justify-content-center'>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" onclick="download('out.ttl', 'rdf', 'text', 'application/x-turtle')">Download RDF <i class="fas fa-download" ></i></button>
+            </div>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#rdf" aria-expanded="true" aria-controls="rdf">Toggle RDF</button>
+            </div>
+        </div>
+
+        <pre>
+            <code id='rdf' class='collapse show'>
+                {{ output['rdf'] }}
+            </code>
+        </pre>
+    </div>
+    {% endif %}
+
+    <div class='col-12 md-6'>
+        <h2> UNL </h2>
+        <div class='row justify-content-center'>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" onclick="download('in.unl', 'unl', 'text', 'text/plain;charset=utf-8')">Download UNL <i class="fas fa-download" ></i></button>
+            </div>
+            <div class='col-3'>
+                <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#unl" aria-expanded="true" aria-controls="unl">Toggle UNL</button>
+            </div>
+        </div>
+
+
+        <pre>
+        <code id='unl' class='collapse show'>
+            {{ unl }}
+        </code>
+        </pre>
+    </div>
+
+</div>
+{% endif %}
+{% endblock %}
-- 
GitLab