A copyright violation detector running on Wikimedia Cloud Services https://tools.wmflabs.org/copyvios/
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

69 linhas
1.8 KiB

  1. #! /data/project/copyvios/env/bin/python
  2. # -*- coding: utf-8 -*-
  3. from functools import wraps
  4. from logging import DEBUG
  5. from logging.handlers import TimedRotatingFileHandler
  6. from time import asctime
  7. from flask import Flask, g, request
  8. from flask.ext.mako import MakoTemplates, render_template, TemplateError
  9. from flup.server.fcgi import WSGIServer
  10. from copyvios.cookies import parse_cookies
  11. app = Flask(__name__)
  12. MakoTemplates(app)
  13. app.logger.setLevel(DEBUG)
  14. app.logger.addHandler(TimedRotatingFileHandler(
  15. "logs/app.log", when="D", interval=1, backupCount=7))
  16. app.logger.info(u"Flask server started " + asctime())
  17. def debug_exceptions(func):
  18. @wraps(func)
  19. def inner(*args, **kwargs):
  20. try:
  21. return func(*args, **kwargs)
  22. except TemplateError as exc:
  23. return "<pre>" + exc.text + "</pre>"
  24. return inner
  25. @app.before_request
  26. def prepare_cookies():
  27. cookie_string = request.environ.get("HTTP_COOKIE")
  28. g.cookies = parse_cookies(request.script_root, cookie_string)
  29. g.new_cookies = []
  30. @app.after_request
  31. def add_new_cookies(response):
  32. if g.new_cookies:
  33. if "Set-Cookie" in response.headers:
  34. g.new_cookies.insert(0, response.headers["Set-Cookie"])
  35. response.headers["Set-Cookie"] = "; ".join(g.new_cookies)
  36. return response
  37. @app.after_request
  38. def write_access_log(response):
  39. msg = u"%s %s -> %s"
  40. app.logger.debug(msg, asctime(), request.path, response.status_code)
  41. return response
  42. @app.route("/")
  43. @debug_exceptions
  44. def index():
  45. return render_template("index.mako")
  46. @app.route("/settings", methods=["GET", "POST"])
  47. @debug_exceptions
  48. def settings():
  49. return render_template("settings.mako")
  50. @app.route("/debug")
  51. @debug_exceptions
  52. def debug():
  53. return render_template("debug.mako")
  54. if __name__ == '__main__':
  55. WSGIServer(app).run()