<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def project_layout(proposal, user=None, repo=None, log=None):
 """ generate the project template proposal is the name of the project, user is an object containing some information about the user. - full name, - github username - email """


    proposal = proposal.lower()

    #context_file = os.path.expanduser('~/.cookiecutters/cookiecutter-pypackage/cookiecutter.json')
    #context = generate_context(context_file)

    # os.chdir('..')
    # context['cookiecutter']['full_name'] = user.name
    # context['cookiecutter']['email'] = user.email
    # context['cookiecutter']['github_username'] = user.login
    # context['cookiecutter']['project_name'] = proposal
    # context['cookiecutter']['repo_name'] = proposal.lower()

    try:
        os.mkdir(proposal)
    except FileExistsError:
        log.info('Skip directory structure, as project seem to already exists')

    with open('.gitignore', 'w') as f:
        f.write('''
*.pyc
__pycache__
/build/
/dist/
''')

    with open( '/'.join([proposal, '__init__.py']), 'w') as f: 
        f.write('''
"""
a simple package
"""


__version__ = '0.0.1'

        ''')


    travis_yml()

    #generate_files(
    #        repo_dir=os.path.expanduser('~/.cookiecutters/cookiecutter-pypackage/'),
    #        context=context
    #    )

    log.info('Workig in %s', os.getcwd())
    os.listdir('.')

    subprocess.call(['git','add','.'], )

    subprocess.call(['git','commit',"-am'initial commit of %s'" % proposal])

    subprocess.call(['git', "push", "origin", "master:master"])