hh_log.wsgi 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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, 'hhtm.db')
  21. engine = create_engine(SQLALCHEMY_DATABASE_URI, pool_pre_ping=True)
  22. Base = declarative_base()
  23. class Vacancies(Base):
  24. __tablename__ = 'vacancies'
  25. id = Column(Integer, primary_key=True, autoincrement=True)
  26. title = Column(String(512))
  27. city = Column(String(20))
  28. specialization = Column(String(255))
  29. href = Column(String(512))
  30. donor = Column(String(255))
  31. vacancy_id = Column(Integer)
  32. vacancy_date = Column(Integer)
  33. parse_date = Column(Integer)
  34. employer = Column(String(255))
  35. canal_city_id = Column(Integer)
  36. canal_city_date = Column(Integer)
  37. canal_spec_id = Column(Integer)
  38. canal_spec_date = Column(Integer)
  39. def __init__(self, title, city, specialization, href, donor, vacancy_id, vacancy_date, parse_date, employer, canal_city_id, canal_city_date, canal_spec_id, canal_spec_date):
  40. self.title = title
  41. self.city = city
  42. self.specialization = specialization
  43. self.href = href
  44. self.donor = donor
  45. self.vacancy_id = vacancy_id
  46. self.vacancy_date = vacancy_date
  47. self.parse_date = parse_date
  48. self.employer = employer
  49. self.canal_city_id = canal_city_id
  50. self.canal_city_date = canal_city_date
  51. self.canal_spec_id = canal_spec_id
  52. self.canal_spec_date = canal_spec_date
  53. def __repr__(self):
  54. return "<Vacancy('%s','%s', '%s')>" % (self.title, self.specialization, self.href)
  55. class Log(Base):
  56. __tablename__ = 'log'
  57. id = Column(Integer, primary_key=True, autoincrement=True)
  58. action = Column(String(64))
  59. status = Column(String(64))
  60. time = Column(Integer)
  61. donor = Column(String(64))
  62. city = Column(String(20))
  63. specialization = Column(String(20))
  64. vacancies_count = Column(Integer)
  65. canal_id = Column(String(64))
  66. def __init__(self, action, status, time, donor, city, specialization, vacancies_count, canal_id):
  67. self.action = action
  68. self.status = status
  69. self.time = time
  70. self.donor = donor
  71. self.city = city
  72. self.specialization = specialization
  73. self.vacancies_count = vacancies_count
  74. self.canal_id = canal_id
  75. def __repr__(self):
  76. return "<Log('%s','%s', '%s')>" % (self.action, self.status)
  77. # Создание таблицы
  78. Base.metadata.create_all(engine)
  79. Session = sessionmaker(bind=engine)
  80. session = Session()
  81. 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><td>Сity</td><td>Specialization</td><td>Vacancies Count</td><td>Canal ID</td></tr>"
  82. log = session.query(Log).order_by(desc(Log.id))[0:50]
  83. for item in log:
  84. date_time = datetime.fromtimestamp(item.time)
  85. s_date = date_time.strftime("%d %m %Y %H:%M:%S")
  86. out_s += f"<tr align=center><td>{s_date}</td><td>{item.action}</td><td>{item.status}</td><td>{item.donor}</td><td>{item.city}</td><td>{item.specialization}</td><td>{item.vacancies_count}</td><td>{item.canal_id}</td></tr>"
  87. out_s += "<br>"
  88. start_response('200 OK', [('Content-Type','text/html')])
  89. b = out_s.encode('utf-8')
  90. return [b]