def request_item(request, full_request=False): li = T.li(class_='request clearfix')( display_date(request.target_date), T.span(class_='email')(T.a(href=urls.user_home(request.owner))(logic.user_info(request.owner).full_name), ':'), T.a(href=request.uri, class_='request-subject')(request.subject), ) if full_request: li( T.a(request.branch, href=config.git_branch_url % dict(branch=request.branch)), T.p(class_='content')(request.message), ) if request.target_date > util.tznow().date(): li.attrs['class'] += ' future' if request.urgent: li.attrs['class'] += ' urgent' if request.state == 'rejected': li.attrs['class'] += ' rejected' if request.owner == users.get_current_user(): li.attrs['class'] += ' own' li(request_badges(request), T.span(request.branch, class_='branch'), T.div(linkify(request.message), class_='message')) return li
def get(self, push_id): push = None if push_id == 'current': push = query.current_push() self.redirect(push.uri if push else '/pushes') return try: push = model.Push.get(push_id) except BadKeyError: raise HTTPStatusCode(httplib.NOT_FOUND) current_user = users.get_current_user() pending_requests = query.pending_requests(not_after=util.tznow().date()) if current_user == push.owner else [] if 'application/json' in self.get_request_header_list('Accept', default='*/*'): requests = query.push_requests(push) push_div = self.render_push_div(current_user, push, requests, pending_requests) response = {'push': dict(key=unicode(push.key()), state=push.state), 'html': unicode(push_div)} self.response.headers['Vary'] = 'Accept' self.response.headers['Content-Type'] = 'application/json' self.response.headers['Cache-Control'] = 'no-store' self.response.out.write(json.dumps(response)) else: doc = self.render_doc(current_user, push, pending_requests) self.response.out.write(unicode(doc))
def get(self, push_id): push = None if push_id == 'current': push = query.current_push() self.redirect(push.api_uri if push else '/pushes') return try: push = model.Push.get(push_id) except BadKeyError: raise HTTPStatusCode(httplib.NOT_FOUND) current_user = users.get_current_user() pending_requests = query.pending_requests(not_after=util.tznow().date()) if current_user == push.owner else [] requests = query.push_requests(push) push_info = self.render_push_info(push, requests) request_info = self.render_request_info(pending_requests) response = {'push': push_info, 'pending_requests': request_info} self.response.headers['Vary'] = 'Accept' self.response.headers['Content-Type'] = 'application/json' self.response.headers['Cache-Control'] = 'no-store' self.response.out.write(json.dumps(response))
def current_requests(): requests = memcache.get(CURRENT_REQUESTS_CACHE_KEY) if requests is None: requests = model.Request.all().filter('state =', 'requested') memcache.add('request-current', requests, CACHE_SECONDS) today = util.tznow().date() request_key = lambda r: (not r.urgent, today if r.target_date < today else r.target_date, not r.tests_pass, r.mtime) requests = sorted(requests, key=request_key) return requests
def get(self, push_id): push = None if push_id == 'current': push = query.current_push() self.redirect(push.uri if push else '/pushes') return try: push = model.Push.get(push_id) except BadKeyError: raise HTTPStatusCode(httplib.NOT_FOUND) current_user = users.get_current_user() pending_requests = query.pending_requests(not_after=util.tznow().date()) if current_user == push.owner else [] self.render(push, current_user, pending_requests)
def request_item(request): li = T.li(class_='request clearfix')( display_date(request.target_date), ' ', T.span(class_='email')(T.a(href=urls.user_home(request.owner))(logic.user_info(request.owner).full_name), ':'), ' ', T.a(href=request.uri, class_='request-subject')(request.subject), ' ', T.span(class_='verify')(request.time_to_verify), ) if request.target_date > util.tznow().date(): li.attrs['class'] += ' future' if request.urgent: li.attrs['class'] += ' urgent' if request.state == 'rejected': li.attrs['class'] += ' rejected' if request.owner == users.get_current_user(): li.attrs['class'] += ' own' if request.branch and '/' in request.branch: repo, _, branch = request.branch.partition('/') repo = 'devs/%s.git' % repo else: repo, branch = 'yelp-main.git', request.branch request_branch = T.a(request.branch, class_='branch', href=config.git_branch_url % dict(repo=repo,branch=branch)) li( ' ', request_badges(request), ' ', request_branch, ' ', T.div(linkify(request.message), class_='message'), ) return li
def new_request_form(push=None, subject='', message='', branch=''): label = T.a(class_='toggle', href='#')('New Request') if push else 'New Request' class_ = 'push request' if push else 'request' content = T.div(class_='content') form = T.form(action='/requests', method='post', class_=class_)( T.fieldset(class_='container')( T.legend(label), content( T.div( T.label(for_='new-request-subject')('Subject'), T.input(name='subject', id='new-request-subject', value=subject), ), T.div( T.label(for_='new-request-branch')('Branch'), T.input(name='branch', id='new-request-branch', value=branch), ), T.div( T.label(for_='new-request-message')('Message'), T.textarea(name='message', id='new-request-message', rows='40', cols='120')(message), ), T.div( T.label(for_='new-request-target-date')('Push Date'), T.input(name='target_date', id='new-request-target-date', class_='date', value=util.tznow().date().strftime('%Y-%m-%d')), ), T.fieldset(class_='flags')( T.legend('Flags'), T.div( T.input(id='new-request-urgent', type='checkbox', name='urgent', class_='checkbox'), T.label(for_='new-request-urgent', class_='checkbox')('Urgent (e.g. P0)'), ), T.div( T.input(id='new-request-tests-pass', type='checkbox', name='tests_pass', class_='checkbox'), T.label(for_='new-request-tests-pass', class_='checkbox')('Passes Buildbot'), T.input(id='new-request-tests-pass-url', name='tests_pass_url', class_='tests-pass-url'), ), T.div( T.input(id='new-request-push-plans', type='checkbox', name='push_plans', class_='checkbox'), T.label(class_='checkbox', for_='new-request-push-plans')('Push Plans'), ), T.div( T.input(id='new-request-js-serials', type='checkbox', name='js_serials', class_='checkbox'), T.label(class_='checkbox', for_='new-request-js-serials')('Bump Javascript Serials'), ), T.div( T.input(id='new-request-img-serials', type='checkbox', name='img_serials', class_='checkbox'), T.label(class_='checkbox', for_='new-request-img-serials')('Bump Image Serials'), ), ), T.button(type='submit')('Create') ), ), ) if push: content(T.input(type='hidden', name='push', value=str(push.key()))) return form