habr_log.wsgi 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # -*- encoding: utf-8 -*-
  2. #
  3. import os, urllib.parse, traceback
  4. virtual_env = os.path.expanduser('~/projects/world-it-planet/env')
  5. activate_this = os.path.join(virtual_env, 'bin/activate_this.py')
  6. exec(open(activate_this).read(), dict(__file__=activate_this))
  7. import random, time
  8. from datetime import datetime
  9. #декларативное определение
  10. from sqlalchemy import Column, Integer, String, create_engine
  11. from sqlalchemy.ext.declarative import declarative_base
  12. from sqlalchemy.orm import sessionmaker
  13. from sqlalchemy import desc
  14. #---------------------------------- Variables ----------
  15. #---------------------------------- Variables End ----------
  16. def application(env, start_response):
  17. out_s = ""
  18. #Инициализация SQLLite
  19. basedir = os.path.abspath(os.path.dirname(__file__))
  20. SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'habr.db')
  21. engine = create_engine(SQLALCHEMY_DATABASE_URI, pool_pre_ping=True)
  22. Base = declarative_base()
  23. class Log(Base):
  24. __tablename__ = 'log'
  25. id = Column(Integer, primary_key=True, autoincrement=True)
  26. action = Column(String(64))
  27. status = Column(String(64))
  28. time = Column(Integer)
  29. donor = Column(String(64))
  30. def __init__(self, action, status, time, donor):
  31. self.action = action
  32. self.status = status
  33. self.time = time
  34. self.donor = donor
  35. def __repr__(self):
  36. return "<Log('%s','%s', '%s')>" % (self.action, self.status)
  37. # Создание таблицы
  38. Base.metadata.create_all(engine)
  39. Session = sessionmaker(bind=engine)
  40. sqllite_session = Session()
  41. out_s += "<table align=left cellspacing=8 cellpading=2 border=0><tr align=center><td>Date</td><td>Action</td><td>Status</td><td>Donor</td></tr>"
  42. log = sqllite_session.query(Log).order_by(desc(Log.id))[0:50]
  43. for item in log:
  44. date_time = datetime.fromtimestamp(item.time)
  45. s_date = date_time.strftime("%d %m %Y %H:%M:%S")
  46. out_s += f"<tr align=center><td>{s_date}</td><td>{item.action}</td><td>{item.status}</td><td>{item.donor}</td></tr>"
  47. out_s += "<br>"
  48. start_response('200 OK', [('Content-Type','text/html')])
  49. b = out_s.encode('utf-8')
  50. return [b]