Subversion Repositories SmartDukaan

Rev

Go to most recent revision | 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

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 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/Vb=",
    "login_url": "/login",
}

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


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