setup.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import os
  2. import re
  3. from optparse import OptionParser
  4. from django.core import management
  5. def validate_project_name(parser, project_name):
  6. if project_name[0].isdigit():
  7. parser.error("project_name cannot start with digit")
  8. if project_name.startswith("-"):
  9. parser.error("project_name cannot start with '-'")
  10. if re.search("[^0-9a-zA-Z]", project_name):
  11. parser.error("project_name cannot contain special characters")
  12. # Ensure the given directory name doesn't clash with an existing
  13. # Python package/module.
  14. try:
  15. __import__(project_name)
  16. except ImportError:
  17. pass
  18. else:
  19. parser.error("'%s' conflicts with the name of an existing "
  20. "Python module and cannot be used as a project "
  21. "name. Please try another name." % project_name)
  22. return project_name
  23. def get_misago_project_template():
  24. misago_path = os.path.dirname(os.path.dirname(__file__))
  25. return os.path.join(misago_path, 'project_template')
  26. def start_misago_project():
  27. parser = OptionParser(usage="usage: %prog project_name")
  28. (options, args) = parser.parse_args()
  29. if len(args) != 1:
  30. parser.error("project_name must be specified")
  31. project_name = validate_project_name(parser, args[0])
  32. argv = ['start-misago.py', 'startproject', project_name,
  33. '--template=%s' % get_misago_project_template()]
  34. management.execute_from_command_line(argv)