session.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from flask import request, session
  2. from datetime import datetime
  3. import re
  4. from common import Reader, Writer
  5. import json
  6. class HttpRequestReader(Reader):
  7. """
  8. This class is designed to read data from an Http request file handler provided to us by flask
  9. The file will be heald in memory and processed accordingly
  10. NOTE: This is inefficient and can crash a micro-instance (becareful)
  11. """
  12. def __init__(self,**params):
  13. self.file_length = 0
  14. try:
  15. #self.file = params['file']
  16. #self.file.seek(0, os.SEEK_END)
  17. #self.file_length = self.file.tell()
  18. #print 'size of file ',self.file_length
  19. self.content = params['file'].readlines()
  20. self.file_length = len(self.content)
  21. except Exception, e:
  22. print "Error ... ",e
  23. pass
  24. def isready(self):
  25. return self.file_length > 0
  26. def read(self,size =-1):
  27. i = 1
  28. for row in self.content:
  29. i += 1
  30. if size == i:
  31. break
  32. yield row
  33. class HttpSessionWriter(Writer):
  34. """
  35. This class is designed to write data to a session/cookie
  36. """
  37. def __init__(self,**params):
  38. """
  39. @param key required session key
  40. """
  41. self.session = params['queue']
  42. self.session['sql'] = []
  43. self.session['csv'] = []
  44. self.tablename = re.sub('..+$','',params['filename'])
  45. self.session['uid'] = params['uid']
  46. #self.xchar = params['xchar']
  47. def format_sql(self,row):
  48. values = "','".join([col.replace('"','').replace("'",'') for col in row])
  49. return "".join(["INSERT INTO :table VALUES('",values,"');\n"]).replace(':table',self.tablename)
  50. def isready(self):
  51. return True
  52. def write(self,**params):
  53. label = params['label']
  54. row = params ['row']
  55. if label == 'usable':
  56. self.session['csv'].append(self.format(row,','))
  57. self.session['sql'].append(self.format_sql(row))