Ejemplo n.º 1
0
def reset(request):
    repo = Project.objects.get(id=request.GET['repo_id'])
    user_id = int(request.COOKIES['user'])
    user = User.objects.get(id=user_id)
    folder = User.objects.get(id=user_id).folder
    name = repo.name
    repo_path = os.path.join(base_path, folder, name)
    os.chdir(repo_path)
    if int(repo.admin.id) != user_id:
        return JsonResponse(
            dict(action=False, info='you are not the owner of this repo'))

    shell = Shell()
    shell.run('git reset --hard ' + request.GET['sha'])

    result = get_repo_info(repo_path, True)
    result['msg1'] = shell.info
    result['msg2'] = shell.err
    result['name'] = repo.name
    result['description'] = repo.description
    result['logo'] = repo.logo
    result['url'] = repo.url
    result['admin'] = repo.admin.to_obj()
    result['deploy'] = repo.deploy
    return JsonResponse(result)
Ejemplo n.º 2
0
def deploy(request):

    repo = Project.objects.get(id=request.GET['repo_id'])
    user_id = int(request.COOKIES['user'])
    user = User.objects.get(id=user_id)

    if int(repo.admin.id) != user.id:
        return JsonResponse(
            dict(action=False, info='you are not the owner of this repo'))

    folder = User.objects.get(id=user_id).folder
    name = repo.name
    repo_path = os.path.join(base_path, folder, name)
    deploy_path = os.path.join(repo_path, repo.deploy)
    online_path = os.path.join('/home/student/static', folder, name)

    remove_files = []
    shell = Shell()

    if os.path.exists(online_path):
        remove_tree(online_path)
    copy_tree(deploy_path, os.path.join(online_path, repo.deploy))

    return JsonResponse({
        'action': 'successful',
        online_path: online_path
    },
                        safe=False)
Ejemplo n.º 3
0
def clone(request):
    user_id = int(request.COOKIES['user'])
    user = User.objects.get(id=user_id)
    folder = user.folder

    url = request.GET['url']
    name = request.GET['name']
    description = request.GET[
        'description'] if 'description' in request.GET else 'description'
    logo = request.GET['logo'] if 'logo' in request.GET else 'logo'

    project = Project.objects.filter(name=name)
    if len(project) == 0:
        pro = Project.objects.create(name=name,
                                     description=description,
                                     logo=logo,
                                     url=url,
                                     admin=user)
    else:
        pro = project[0]
        pro.name = name
        pro.description = description
        pro.logo = logo
        pro.url = url
        pro.admin = user
        pro.save()

    my_path = os.path.join(base_path, folder)
    os.chdir(my_path)

    repo_path = os.path.join(my_path, name)
    if os.path.exists(repo_path):
        return remove_tree(repo_path)

    shell = Shell()
    print 'git clone ' + url + ' ' + name
    shell.run('git clone ' + url + ' ' + name)
    print 'git clone over'

    result = get_repo_info(repo_path, True)
    result['name'] = name
    result['description'] = description
    result['logo'] = logo
    result['url'] = url
    result['admin'] = user.to_obj()
    result['id'] = pro.id
    return JsonResponse(result)