Rev 283 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 2 | 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/>. | 
        ||
| 2 | szabot | 22 | |
| 176 | muzer | 23 | |
| 246 | szabot | 24 | from tsimapiak import parse, parsenum, translate  | 
        
| 283 | muzer | 25 | import http.client as httplib  | 
        
| 246 | szabot | 26 | import os  | 
        
| 2 | szabot | 27 | import tornado.httpserver  | 
        
| 28 | import tornado.ioloop  | 
        ||
| 29 | import tornado.web  | 
        ||
| 30 | |||
| 31 | |||
| 32 | class Index(tornado.web.RequestHandler):  | 
        ||
| 33 | def get(self):  | 
        ||
| 122 | szabot | 34 | self.render("templates/index.html")  | 
        
| 2 | szabot | 35 | |
| 36 | class Number(tornado.web.RequestHandler):  | 
        ||
| 37 | def get(self):  | 
        ||
| 38 | self.render("templates/number.html", last="", numout=None)  | 
        ||
| 39 | |||
| 40 | def post(self):  | 
        ||
| 41 |         try: | 
        ||
| 42 | num = self.get_argument("num").strip()  | 
        ||
| 43 |         except: | 
        ||
| 44 | self.redirect("/number")  | 
        ||
| 246 | szabot | 45 | numout = parsenum.parse(num.replace(" ", ""))  | 
        
| 2 | szabot | 46 | if numout == None:  | 
        
| 103 | szabot | 47 |             numoutt = -1 | 
        
| 48 |         else: | 
        ||
| 117 | szabot | 49 | numoutt = (numout["dec"], numout["oct"])  | 
        
| 103 | szabot | 50 | self.render("templates/number.html", last=num, numout=numoutt)  | 
        
| 2 | szabot | 51 | |
| 52 | class Restart(tornado.web.RequestHandler):  | 
        ||
| 53 | def get(self):  | 
        ||
| 54 | os.system("/usr/bin/restartnavi")  | 
        ||
| 55 | |||
| 56 | szabot | 56 | class Parse(tornado.web.RequestHandler):  | 
        
| 49 | szabot | 57 | def get(self):  | 
        
| 50 | szabot | 58 | self.render("templates/parse.html", last="", out=None)  | 
        
| 246 | szabot | 59 | |
| 49 | szabot | 60 | def post(self):  | 
        
| 61 |         try: | 
        ||
| 117 | szabot | 62 | word = self.get_argument("word")  | 
        
| 49 | szabot | 63 |         except: | 
        
| 64 | self.redirect("/parse")  | 
        ||
| 117 | szabot | 65 | out = parse.parsesent(word)  | 
        
| 50 | szabot | 66 | self.render("templates/parse.html", last=word, out=out)  | 
        
| 49 | szabot | 67 | |
| 146 | szabot | 68 | class Translate(tornado.web.RequestHandler):  | 
        
| 69 | def get(self):  | 
        ||
| 284 | muzer | 70 | self.render("templates/translate.html", last="", out=None, lang="en")  | 
        
| 246 | szabot | 71 | |
| 146 | szabot | 72 | def post(self):  | 
        
| 73 |         try: | 
        ||
| 74 | word = self.get_argument("word")  | 
        ||
| 150 | szabot | 75 | lang = self.get_argument("lang")  | 
        
| 146 | szabot | 76 |         except: | 
        
| 77 | self.redirect("/translate")  | 
        ||
| 150 | szabot | 78 | out = translate.translatesent(word, lang)  | 
        
| 152 | szabot | 79 | self.render("templates/translate.html", last=word, out=out, lang=lang)  | 
        
| 239 | muzer | 80 | class Errors(tornado.web.RequestHandler):  | 
        
| 81 | def get_error_html(self, status_code, **kwargs):  | 
        ||
| 82 | if status_code == 500:  | 
        ||
| 240 | muzer | 83 | return "<html><title>%(code)d: %(message)s</title>" \  | 
        
| 84 | "<body>%(code)d: %(message)s<br /><br />Either we are currently working on the server, or you uncovered a bug. Please check back later on. If you still get this error, please report this bug to us in the forum thread or on IRC.</body></html>" % {  | 
        ||
| 85 |                 "code": status_code, | 
        ||
| 86 | "message": httplib.responses[status_code],  | 
        ||
| 87 |                 } | 
        ||
| 239 | muzer | 88 |         else: | 
        
| 240 | muzer | 89 | return "<html><title>%(code)d: %(message)s</title>" \  | 
        
| 90 | "<body>%(code)d: %(message)s</body></html>" % {  | 
        ||
| 91 |                 "code": status_code, | 
        ||
| 92 | "message": httplib.responses[status_code],  | 
        ||
| 93 |                 } | 
        ||
| 146 | szabot | 94 | |
| 132 | szabot | 95 | settings = { | 
        
| 96 | "static_path": os.path.join(os.path.dirname(__file__), "static")  | 
        ||
| 97 | } | 
        ||
| 98 | |||
| 2 | szabot | 99 | application = tornado.web.Application([  | 
        
| 100 | ("/", Index),  | 
        ||
| 101 | ("/number", Number),  | 
        ||
| 102 | ("/restart", Restart),  | 
        ||
| 146 | szabot | 103 | ("/parse", Parse),  | 
        
| 284 | muzer | 104 | ("/translate", Translate),  | 
        
| 105 | ("/(\\.well-known/.*)", tornado.web.StaticFileHandler, dict(path=settings["static_path"]))  | 
        ||
| 132 | szabot | 106 | ], **settings)  | 
        
| 2 | szabot | 107 | |
| 108 | if __name__ == "__main__":  | 
        ||
| 109 | http_server = tornado.httpserver.HTTPServer(application)  | 
        ||
| 110 | http_server.listen(1337)  | 
        ||
| 176 | muzer | 111 | tornado.ioloop.IOLoop.instance().start()  |