Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: appengine/chromium_rietveld/codereview/views_chromium.py

Issue 1344253002: Rietveld: schedule builds on buildbucket (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: remove -dev Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2008 Google Inc. 1 # Copyright 2008 Google Inc.
2 # 2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); 3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License. 4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at 5 # You may obtain a copy of the License at
6 # 6 #
7 # http://www.apache.org/licenses/LICENSE-2.0 7 # http://www.apache.org/licenses/LICENSE-2.0
8 # 8 #
9 # Unless required by applicable law or agreed to in writing, software 9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, 10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and 12 # See the License for the specific language governing permissions and
13 # limitations under the License. 13 # limitations under the License.
14 14
15 """Views for Chromium port of Rietveld.""" 15 """Views for Chromium port of Rietveld."""
16 16
17 import datetime 17 import datetime
18 import logging 18 import logging
19 import random
19 import re 20 import re
20 21
21 from google.appengine.api import app_identity 22 from google.appengine.api import app_identity
22 from google.appengine.api import datastore_errors 23 from google.appengine.api import datastore_errors
23 from google.appengine.api import taskqueue 24 from google.appengine.api import taskqueue
24 from google.appengine.api import urlfetch 25 from google.appengine.api import urlfetch
25 from google.appengine.api import users 26 from google.appengine.api import users
26 from google.appengine.datastore import datastore_query 27 from google.appengine.datastore import datastore_query
27 from google.appengine.ext import ndb 28 from google.appengine.ext import ndb
28 from google.appengine.runtime import DeadlineExceededError 29 from google.appengine.runtime import DeadlineExceededError
29 30
30 from django import forms 31 from django import forms
31 from django.core.urlresolvers import reverse 32 from django.core.urlresolvers import reverse
32 from django.http import HttpResponse, HttpResponseRedirect 33 from django.http import HttpResponse, HttpResponseRedirect
33 from django.http import HttpResponseBadRequest, HttpResponseForbidden 34 from django.http import HttpResponseBadRequest, HttpResponseForbidden
34 from django.http import HttpResponseServerError 35 from django.http import HttpResponseServerError
35 from django.utils import simplejson as json 36 from django.utils import simplejson as json
36 37
38 from codereview import buildbucket
37 from codereview import decorators as deco 39 from codereview import decorators as deco
38 from codereview import decorators_chromium as deco_cr 40 from codereview import decorators_chromium as deco_cr
39 from codereview import models 41 from codereview import models
40 from codereview import models_chromium 42 from codereview import models_chromium
41 from codereview import responses 43 from codereview import responses
42 from codereview import views 44 from codereview import views
43 45
44 46
45 ### Forms ### 47 ### Forms ###
46 48
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 if request.issue.commit and not request.issue.cq_dry_run: 401 if request.issue.commit and not request.issue.cq_dry_run:
400 views.notify_approvers_of_new_patchsets(request, request.issue) 402 views.notify_approvers_of_new_patchsets(request, request.issue)
401 403
402 if 'builders' in request.POST: 404 if 'builders' in request.POST:
403 new_builders = filter(None, map(unicode.strip, 405 new_builders = filter(None, map(unicode.strip,
404 form.cleaned_data['builders'].split(','))) 406 form.cleaned_data['builders'].split(',')))
405 if request.issue.private and new_builders: 407 if request.issue.private and new_builders:
406 return HttpResponseBadRequest( 408 return HttpResponseBadRequest(
407 'Cannot add trybots on private issues', content_type='text/plain') 409 'Cannot add trybots on private issues', content_type='text/plain')
408 410
409 def txn(): 411 buildbucket.schedule(
410 jobs_to_save = [] 412 request.issue,
411 413 last_patchset.key.id(),
412 # Add any new builders. 414 [b.split(':', 1) for b in new_builders])
413 for builder in new_builders:
414 mastername, buildername = builder.split(':', 1)
415 try_job = models.TryJobResult(parent=last_patchset.key,
416 reason='',
417 result=models.TryJobResult.TRYPENDING,
418 master=mastername,
419 builder=buildername,
420 revision='',
421 clobber=False)
422 jobs_to_save.append(try_job)
423
424 # Commit everything.
425 ndb.put_multi(jobs_to_save)
426 ndb.transaction(txn)
427 415
428 return HttpResponse('OK', content_type='text/plain') 416 return HttpResponse('OK', content_type='text/plain')
429 417
430 418
431 @deco.login_required 419 @deco.login_required
432 @deco.xsrf_required 420 @deco.xsrf_required
433 def conversions(request): 421 def conversions(request):
434 """/conversions - Show and edit the list of base=>source code URL maps.""" 422 """/conversions - Show and edit the list of base=>source code URL maps."""
435 rules = models_chromium.UrlMap.query().order( 423 rules = models_chromium.UrlMap.query().order(
436 models_chromium.UrlMap.base_url_template).fetch() 424 models_chromium.UrlMap.base_url_template).fetch()
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 next_cursor = query_iter.cursor_after() 778 next_cursor = query_iter.cursor_after()
791 else: 779 else:
792 next_cursor = cursor 780 next_cursor = cursor
793 781
794 logging.info('Found %d entries, returned %d' % (total, len(jobs))) 782 logging.info('Found %d entries, returned %d' % (total, len(jobs)))
795 return { 783 return {
796 'has_more': has_more, 784 'has_more': has_more,
797 'cursor': next_cursor.urlsafe() if next_cursor else '', 785 'cursor': next_cursor.urlsafe() if next_cursor else '',
798 'jobs': jobs 786 'jobs': jobs
799 } 787 }
OLDNEW
« no previous file with comments | « appengine/chromium_rietveld/codereview/buildbucket.py ('k') | appengine/chromium_rietveld/tests/test_buildbucket.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698