def save_review(request): # unpack lock secret, starting point, identity, text lock_secret = request.POST.getone('lock_secret') starting_point = int(request.POST.getone('starting_point')) identity_name = request.POST.getone('identity_name') identity_email = request.POST.getone('identity_email') review_text_1 = transcripts.normalized_text( request.POST.getone('review_text_1')) review_text_2 = transcripts.normalized_text( request.POST.getone('review_text_2')) with repos.commit_lock: # find and validate the lock # Ignore commit; we want to save to master. repo, commit = repos.repo_from_request(request, rev='master') index = repo.index if not repos.lock_is_valid(repo, index, 'review', starting_point, lock_secret): raise ValueError('Invalid lock') # save review texts repos.save_snippet_text(repo, index, starting_point, review_text_1) repos.save_snippet_text(repo, index, starting_point + _snippet_ms(), review_text_2) # remove the lock repos.remove_lock(repo, index, 'review', starting_point) # remove the review from remaining reviews repos.remove_review_from_remaining(repo, index, starting_point) # commit with identity os.environ['GIT_AUTHOR_NAME'] = identity_name os.environ['GIT_AUTHOR_EMAIL'] = identity_email commit_message = 'review: %s, saved by %s' % (_label_from_ms(starting_point), identity_name) index.commit(commit_message) # return empty indicating success return Response('', content_type='text/plain')
def save_snippet(request): # unpack lock secret, starting point, identity, text lock_secret = request.POST.getone('lock_secret') starting_point = int(request.POST.getone('starting_point')) identity_name = request.POST.getone('identity_name') identity_email = request.POST.getone('identity_email') snippet_text = transcripts.normalized_text( request.POST.getone('snippet_text').strip()) inline = request.POST.get('inline') == '1' with repos.commit_lock: # find and validate the lock # Ignore commit; we want to save to master. repo, commit = repos.repo_from_request(request, rev='master') index = repo.index if not repos.lock_is_valid(repo, index, 'snippet', starting_point, lock_secret): raise ValueError('Invalid lock') # save the snippet text repos.save_snippet_text(repo, index, starting_point, snippet_text) # remove the lock repos.remove_lock(repo, index, 'snippet', starting_point) # remove the snippet from remaining snippets if snippet_text: repos.remove_snippet_from_remaining(repo, index, starting_point) # commit with identity os.environ['GIT_AUTHOR_NAME'] = identity_name os.environ['GIT_AUTHOR_EMAIL'] = identity_email commit_message = 'snippet: %s, saved by %s' % (_label_from_ms(starting_point), identity_name) if inline: commit_message += ' (inline)' index.commit(commit_message) return Response('', content_type='text/plain')