def copy_helper(app_or_project, name, directory, dist, template_dir, noadmin):
    """
    
    Replacement for django copy_helper
    Copies a Django project layout template into the specified distribution directory

    """

    import shutil
    if not re.search(r'^[_a-zA-Z]\w*$', name): # If it's not a valid directory name.
        # Provide a smart error message, depending on the error.
        if not re.search(r'^[_a-zA-Z]', name):
            message = 'make sure the name begins with a letter or underscore'
        else:
            message = 'use only numbers, letters and underscores'
        raise CommandError("%r is not a valid project name. Please %s." % (name, message))
    top_dir = os.path.join(directory, dist)
    try:
        os.mkdir(top_dir)
    except OSError, e:
        raise CommandError(e)
        
    for d, subdirs, files in os.walk(template_dir):
        relative_dir = d[len(template_dir)+1:].replace('project_name', name)
        if relative_dir:
            os.mkdir(os.path.join(top_dir, relative_dir))
        for subdir in subdirs[:]:
            if subdir.startswith('.'):
                subdirs.remove(subdir)
        for f in files:
            if not f.endswith('.py'):
                # Ignore .pyc, .pyo, .py.class etc, as they cause various
                # breakages.
                continue
            path_old = os.path.join(d, f)
            path_new = os.path.join(top_dir, relative_dir, f.replace('project_name', name))
            fp_old = open(path_old, 'r')
            fp_new = open(path_new, 'w')
            if noadmin:
                fp_new.write(fp_old.read().replace('{{ project_name }}', name))
            else:
                fp_new.write(fp_old.read().replace('{{ project_name }}', name).replace('## ',''))
            fp_old.close()
            fp_new.close()
            try:
                shutil.copymode(path_old, path_new)
                _make_writeable(path_new)
            except OSError:
                sys.stderr.write(style.NOTICE("Notice: Couldn't set permission bits on %s. You're probably using an uncommon filesystem setup. No problem.\n" % path_new))
def copy_helper ( app_or_project , name , directory , dist , template_dir , noadmin ) : import shutil if not re . search ( r'^[_a-zA-Z]\w*$' , name ) : if not re . search ( r'^[_a-zA-Z]' , name ) : message = 'make sure the name begins with a letter or underscore' else : message = 'use only numbers, letters and underscores' raise CommandError ( "%r is not a valid project name. Please %s." % ( name , message ) ) top_dir = os . path . join ( directory , dist ) try : os . mkdir ( top_dir ) except OSError , e : raise CommandError ( e ) for d , subdirs , files in os . walk ( template_dir ) : relative_dir = d [ len ( template_dir ) + 1 : ] . replace ( 'project_name' , name ) if relative_dir : os . mkdir ( os . path . join ( top_dir , relative_dir ) ) for subdir in subdirs [ : ] : if subdir . startswith ( '.' ) : subdirs . remove ( subdir ) for f in files : if not f . endswith ( '.py' ) : continue path_old = os . path . join ( d , f ) path_new = os . path . join ( top_dir , relative_dir , f . replace ( 'project_name' , name ) ) fp_old = open ( path_old , 'r' ) fp_new = open ( path_new , 'w' ) if noadmin : fp_new . write ( fp_old . read ( ) . replace ( '{{ project_name }}' , name ) ) else : fp_new . write ( fp_old . read ( ) . replace ( '{{ project_name }}' , name ) . replace ( '## ' , '' ) ) fp_old . close ( ) fp_new . close ( ) try : shutil . copymode ( path_old , path_new ) _make_writeable ( path_new ) except OSError : sys . stderr . write ( style . NOTICE ( "Notice: Couldn't set permission bits on %s. You're probably using an uncommon filesystem setup. No problem.\n" % path_new ) )
Replacement for django copy_helper
    Copies a Django project layout template into the specified distribution directory