Subversion Repositories SmartDukaan

Rev

Rev 412 | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 04-Aug-2010

@author: ashish
'''

import tornado.httpserver
import tornado.ioloop
import tornado.web
from shop2020.logistics.external.xlsprocessor import get_xls_for_today,\
    get_sample_xml, get_html_page

class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        return self.get_secure_cookie("user")
    
    def get_warehouse(self):
        return self.get_secure_cookie("warehouse")

class MainHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        name = tornado.escape.xhtml_escape(self.current_user)
        self.write("Hello, " + name)
        
class OptionHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        self.set_header("Content-Type", "text/html")
        self.write(get_html_page())
        pass

class ArxHandler(BaseHandler):
    def get(self):
        self.set_header("Content-Type", "text/xml")
        self.write(get_sample_xml())
        
class PaymentsHandler(BaseHandler):
    def get(self):
        url = self.get_argument("url")
        nonce = self.get_argument("nonce")
        amount = self.get_argument("amount")
        
class ListHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        self.name = tornado.escape.xhtml_escape(self.current_user)
        self.warehouse = tornado.escape.xhtml_escape(self.get_warehouse())
        self.set_header("Content-Type", "application/vnd.ms-excel")
        self.set_header("Content-Disposition", "attachment;filename=List Of Shipment.xls;")
        self.write(get_xls_for_today(self.warehouse))
        
    def get_xls_for_warehouse(self):
        pass

class LoginHandler(BaseHandler):
    def get(self):
        self.write('<html><body><form action="/login" method="post">'
                   'Name: <input type="text" name="name">'
                   'Password:<input type="password" name="password">'
                   '<input type="submit" value="Sign in">'
                   '</form></body></html>')

    def post(self):
        if self.get_auth(self.get_argument("name"), self.get_argument("password")):
            self.set_secure_cookie("user", self.get_argument("name"))
            self.set_secure_cookie("warehouse", self.get_warehouse_id(self.get_argument("name")))
            self.redirect("/list")
        else:
            self.redirect("/login")
        
    def get_auth(self, user, password):
        return True
    
    def get_warehouse_id(self, user):
        if user == "Ashish":
            return "all"
        return "1"

settings = {
    "cookie_secret": "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vx=",
    "login_url": "/login",
}

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/login", LoginHandler),
    (r"/list", ListHandler),
    (r"/arx", ArxHandler),
    (r"/opt", OptionHandler),
], **settings)


if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()