I want to enable status 405, which I get from the task queue when I try to generate a report:
2012-02-16 03:56:53.012 /report/ 405 3ms 0kb AppEngine-Google; (+http://code.google.com/appengine) 2012-02-16 03:56:53.007 /createreport/ 302 20ms 0kb Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0 I 2012-02-16 03:56:52.990 creating report task
The code that creates the task
class CreateReportHandler(webapp2.RequestHandler): def get(self): logging.info('creating report task') taskqueue.add(url=r'/report/') self.redirect('/')
and I routed it using webapp2:
Route(r'/createreport/', handler=CreateReportHandler, name='createreport'),
then I would have to make it a cron job, but when I test it, I get 405 from accessing this code, which expires if I try to run it directly:
class Report(webapp2.RequestHandler): def get(self): # Create a conversion request from HTML to PDF. users = User.query() today = date.today() startdate = date(today.year, today.month, 1) # first day of month html = None for user in users: if user.activity() > 0: logging.info('found active user %s %s' % (user.firstname, user.lastname)) html = '<html><body><table border="1">' html = html + '<tr><td>ORDER</td><td colspan="2">----DISTRIBUTOR----</td><td>ORDER</td><td>Silver</td><td>%</td><td>Total</td><td>Bonus</td></tr>' level = user.level() distributor = user while distributor.has_downline(): downline = User.query(User.sponsor == distributor.key).order(User.lastname).fetch() for person in downline: # to this for whole downline orders = model.Order.all().filter('distributor_id =' , person.key.id()).filter('created >' , startdate).filter('status =', 'PAID').fetch(999999) silver = 0 name = person.firstname +' '+ person.lastname for order in orders: logging.info('found orders') for idx,item in enumerate(order.items): purchase = model.Item.get_by_id(long(item.id())) amount = int(order.amounts[idx]) silver = silver + amount*purchase.silver/1000.000 if len(name) > 13: name = name[13] html = html + '<tr><td>' + str(order.created.date().day)+'/'+ str(order.created.date().month )+'</td><td>' + filters.makeid(person.key.id()) +'</td><td>' + name + '</td><td>' + str(order.key().id()) + '</td><td>' + str(silver) dist_level = order.dist_level bonus = 0 if level == 5 and dist_level == 4: bonus = 0.05 if level == 5 and dist_level == 3: bonus = 0.1 if level == 5 and dist_level == 2: bonus = 0.13 if level == 5 and dist_level == 1: bonus = 0.35 if level == 4 and dist_level == 3: bonus = 0.05 if level == 4 and dist_level == 2: bonus = 0.08 if level == 4 and dist_level == 1: bonus = 0.3 if level == 3 and dist_level == 2: bonus = 0.03 if level == 3 and dist_level == 1: bonus = 0.25 if level == 2 and dist_level == 1: bonus = 0.2 html = html + '</td><td>' + str(bonus) + '</td><td>' + str(order.total) bonusmoney = bonus * float(order.total) html = html + '</td><td>' + str(bonusmoney) + '</td></tr>' distributor = person html = html + '</table>' asset = conversion.Asset("text/html", html, "test.html") conversion_obj = conversion.Conversion(asset, "application/pdf") rpc = conversion.create_rpc() conversion.make_convert_call(rpc, conversion_obj) result = rpc.get_result() if result.assets: for asset in result.assets: logging.info('emailing report')# to %s' % user.email) message = mail.EmailMessage(sender=' noreply@bnano.se ', subject='Report %s %s' % (user.firstname, user.lastname)) message.body = 'Here is the monthly report' message.to = ' niklasro@gmail.com ' message.bcc = ' fridge@koolbusiness.com ' message.attachments = ['report.pdf', asset.data] message.send() logging.info('message sent')
How can I resolve status 405 and execute execution?
thanks