123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import os
- import re
- from optparse import OptionParser
- from django.core import management
- def validate_project_name(parser, project_name):
- if project_name[0].isdigit():
- parser.error("project_name cannot start with digit")
- if project_name.startswith("-"):
- parser.error("project_name cannot start with '-'")
- if re.search("[^0-9a-zA-Z]", project_name):
- parser.error("project_name cannot contain special characters")
- # Ensure the given directory name doesn't clash with an existing
- # Python package/module.
- try:
- __import__(project_name)
- except ImportError:
- pass
- else:
- parser.error((
- "'%s' conflicts with the name of an existing "
- "Python module and cannot be used as a project "
- "name. Please try another name."
- ) % project_name)
- return project_name
- def get_misago_project_template():
- misago_path = os.path.dirname(os.path.dirname(__file__))
- return os.path.join(misago_path, 'project_template')
- def start_misago_project():
- parser = OptionParser(usage="usage: %prog project_name [directory]")
- _, args = parser.parse_args()
- if len(args) < 1:
- parser.error("project_name must be specified")
- dir = None
- if len(args) == 2:
- dir = args[1]
- project_name = validate_project_name(parser, args[0])
- argv = [
- 'misago-start.py', 'startproject', project_name, dir,
- '--template=%s' % get_misago_project_template()
- ]
- management.execute_from_command_line(argv)
|