misago-start-devproject.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python
  2. # pylint: disable=E0401
  3. """
  4. Creates a dev project for local development
  5. """
  6. import os
  7. import sys
  8. BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  9. PROJECT_NAME = 'devproject'
  10. def main():
  11. settings_file = os.path.join(BASE_DIR, PROJECT_NAME, PROJECT_NAME, 'settings.py')
  12. # Avoid recreating if already present
  13. if os.path.exists(settings_file):
  14. return
  15. from misago.core import setup
  16. setup.start_misago_project()
  17. fill_in_settings(settings_file)
  18. def fill_in_settings(f):
  19. with open(f, 'r') as fd:
  20. s = fd.read()
  21. # Read PostgreSQL's config from env variables
  22. s = s.replace("'NAME': '',", "'NAME': os.environ.get('POSTGRES_DB'),")
  23. s = s.replace("'USER': '',", "'USER': os.environ.get('POSTGRES_USER'),")
  24. s = s.replace("'PASSWORD': '',", "'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),")
  25. s = s.replace("'HOST': 'localhost',", "'HOST': os.environ.get('POSTGRES_HOST'),")
  26. # Specify console backend for email
  27. s += "\n# Set dev instance to send e-mails to console"
  28. s += "\n"
  29. s += "\nEMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'"
  30. s += "\n"
  31. # Tie Debug Toolbar visibility to env variable
  32. s += "\n# Display debug toolbar if IN_MISAGO_DOCKER enviroment var is set to \"1\""
  33. s += "\n"
  34. s += "\nDEBUG_TOOLBAR_CONFIG = {"
  35. s += "\n 'SHOW_TOOLBAR_CALLBACK': 'misago.conf.debugtoolbar.enable_debug_toolbar'"
  36. s += "\n}"
  37. s += "\n"
  38. # Empty the contents of STATICFILES_DIRS (STATICFILES_DIRS = [])
  39. pos = s.find('STATICFILES_DIRS')
  40. s = s[:s.find('[', pos) + 1] + s[s.find(']', pos):]
  41. # Remove theme dir from template dirs
  42. pos = s.find("'DIRS': [")
  43. s = s[:s.find('[', pos) + 1] + s[s.find(']', pos):]
  44. with open(f, 'w') as fd:
  45. fd.write(s)
  46. if __name__ == '__main__':
  47. sys.argv.append(PROJECT_NAME)
  48. sys.path.append(BASE_DIR)
  49. main()