summaryrefslogtreecommitdiffstats
path: root/lanre_py/lanre.py
diff options
context:
space:
mode:
Diffstat (limited to 'lanre_py/lanre.py')
-rw-r--r--lanre_py/lanre.py147
1 files changed, 147 insertions, 0 deletions
diff --git a/lanre_py/lanre.py b/lanre_py/lanre.py
new file mode 100644
index 0000000..4db21cd
--- /dev/null
+++ b/lanre_py/lanre.py
@@ -0,0 +1,147 @@
+# all the imports
+from __future__ import with_statement
+from contextlib import closing
+import sqlite3
+from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, jsonify
+import requests
+from bs4 import BeautifulSoup
+import re
+from email.mime.text import MIMEText
+from subprocess import Popen, PIPE
+import smtplib
+
+# configuration
+DATABASE = '/tmp/dysprosium.db'
+DEBUG = True
+SECRET_KEY = 'development key'
+USERNAME = 'admin'
+PASSWORD = 'dupa.8'
+
+app = Flask(__name__)
+app.config.from_object(__name__)
+
+
+def connect_db():
+ return sqlite3.connect(app.config['DATABASE'])
+
+def init_db():
+ with closing(connect_db()) as db:
+ with app.open_resource('schema.sql') as f:
+ db.cursor().executescript(f.read())
+ db.commit()
+
+@app.before_request
+def before_request():
+ g.db = connect_db()
+
+@app.teardown_request
+def teardown_request(exception):
+ g.db.close()
+
+@app.route('/')
+def ask_for_text():
+
+ return render_template('ask_for_text.html')
+
+@app.route('/options', methods=['POST'])
+def add_entry():
+ if not session.get('logged_in'):
+ abort(401)
+ g.db.execute('insert into entries (title, text) values (?, ?)',
+ [request.form['title'], request.form['text']])
+ g.db.commit()
+ flash('New entry was successfully posted')
+ return redirect(url_for('ask_for_text.html'))
+
+
+@app.route('/login', methods=['GET', 'POST'])
+def login():
+ error = None
+ if request.method == 'POST':
+ if request.form['username'] != app.config['USERNAME']:
+ error = 'Invalid username'
+ elif request.form['password'] != app.config['PASSWORD']:
+ error = 'Invalid password'
+ else:
+ session['logged_in'] = True
+ flash('You were logged in')
+ return redirect(url_for('ask_for_text'))
+ return render_template('login.html', error=error)
+
+
+@app.route('/logout')
+def logout():
+ session.pop('logged_in', None)
+ flash('You were logged out')
+ return redirect(url_for('ask_for_text'))
+
+
+def get_exact_translation(retrieved_json):
+ try:
+ response = retrieved_json["term0"]["PrincipalTranslations"]["0"]["FirstTranslation"]["term"]
+ if len(response) == 0:
+ response = "No translation"
+ except:
+ response = "No translation"
+ return response
+
+@app.route('/_find_translations')
+def find_translations():
+ text_for_translation = request.args.get('text', 0)
+ language = request.args.get('language', 0)
+ dictionary_link = "http://api.wordreference.com/a95ae/json/" + language + "/"
+ words = text_for_translation.split(" ")
+ translations = []
+ for word in words:
+ translation = get_exact_translation(requests.get(dictionary_link + strip_punctuation(word)).json)
+ translations.append(translation)
+
+ return jsonify(result=translations, words=words, html_output=prepare_html_output(words))
+
+
+@app.route('/_send_mail')
+def send_mail():
+ from_address = "attero@hackerspace.pl"
+ to_address = request.args.get('mail_address', 0)
+ message_text = request.args.get('message', 0)
+ msg = ("From: %s\r\nTo: %s\r\nSubject: Lanre\r\n" % (from_address, to_address))
+ server = smtplib.SMTP('hackerspace.pl', 587)
+ server.starttls()
+ server.login("attero", "dupa.8")
+ server.set_debuglevel(1)
+ print(from_address)
+ print(to_address)
+ print(msg + message_text)
+ print("somethin wrong in loging to server")
+ server.sendmail(from_address, to_address, msg + message_text)
+ server.quit()
+ return jsonify(result="success")
+
+
+
+
+
+def prepare_html_output(words):
+ words_with_html = ["<span class='word' id='" + str(i) +"'>" + word + "</span>" for i, word in enumerate(words)]
+ output = " ".join(words_with_html)
+ return output
+
+
+def strip_punctuation(word):
+ try:
+ if(word[len(word)-1].isalpha()):
+ return word
+ else:
+ return word[0:(len(word)-1)]
+ except:
+ return word
+
+
+#a95ae api key for word reference is: a95ae
+#http://www.wordreference.com/docs/api.aspx
+
+
+if __name__ == '__main__':
+ init_db()
+ app.run()
+