def generate_models_and_admin(dia_path, app_dir, project_name, app_name): """Generates the models.py and admin.py files""" def format_text(string, indent=False): """format string in lines of 80 or less characters""" retval = '' while string: line = string[:77] last_space = line.rfind(' ') if last_space != -1 and len(string) > 77: retval += "%s \\\n" % string[:last_space] string = string[last_space + 1:] else: retval += "%s\n" % string string = '' if string and indent: string = ' %s' % string return retval model_path = os.path.join(app_dir, 'models.py') admin_path = os.path.join(app_dir, 'admin.py') models_txt = 'from django.db import models\n' + dia2django(dia_path) open(model_path, 'w').write(models_txt) classes = re.findall('class (\w+)', models_txt) admin_txt = 'from django.contrib.admin import site, ModelAdmin\n' + \ format_text('from %s.%s.models import %s' % (project_name, app_name, ', '.join(classes)), indent=True) admin_txt += format_text('\n\n%s' % '\n'.join(map((lambda t: 'site.register(%s)' % t), classes))) open(admin_path, 'w').write(admin_txt)
def generate_models_and_admin(dia_path, app_dir, project_name, app_name): """Generates the models.py and admin.py files""" def format_text(string, indent=False): """format string in lines of 80 or less characters""" retval = '' while string: line = string[:77] last_space = line.rfind(' ') if last_space != -1 and len(string) > 77: retval += "%s \\\n" % string[:last_space] string = string[last_space + 1:] else: retval += "%s\n" % string string = '' if string and indent: string = ' %s' % string return retval model_path = os.path.join(app_dir, 'models.py') admin_path = os.path.join(app_dir, 'admin.py') models_txt = 'from django.db import models\n' + dia2django(dia_path) open(model_path, 'w').write(models_txt) classes = re.findall('class (\w+)', models_txt) admin_txt = 'from django.contrib.admin import site, ModelAdmin\n' + \ format_text('from %s.%s.models import %s' % (project_name, app_name, ', '.join(classes)), indent=True) admin_txt += format_text( '\n\n%s' % '\n'.join(map( (lambda t: 'site.register(%s)' % t), classes))) open(admin_path, 'w').write(admin_txt)