def reject_request(request, rejector, reason=None): push = request.push request.push = None request.state = 'rejected' if reason: request.reject_reason = reason request.put() query.bust_request_caches() if push is not None: push.bust_requests_cache() util.send_im( to=request.owner.email(), message='<a href="mailto:%(rejector_email)s">%(rejector_name)s</a> rejected your request <a href="%(request_uri)s">%(request_subject)s</a>: %(reason)s', rejector_email=rejector.email(), rejector_name=user_info(rejector).full_name, request_subject=request.subject, request_uri=config.url(request.uri), reason=reason, ) util.send_mail( to=[request.owner.email(), config.mail_to, config.mail_request], subject='Re: %s: %s' % (request.owner.nickname(), request.subject), body="""This request was rejected.\n\n%s\n\n%s""" % (reason, config.url(request.uri)), ) return request
def set_request_properties(request, subject, message=None, push_plans=False, urgent=False, js_serials=False, target_date=None, branch=None, img_serials=False, tests_pass=False, tests_pass_url='', time_to_verify=''): assert len(subject) > 0 target_date = target_date or datetime.date.today() request.state = request.default_state request.reject_reason = None request.push = None request.subject = subject request.branch = branch and branch.strip() request.push_plans = push_plans request.js_serials = js_serials request.img_serials = img_serials request.tests_pass = tests_pass request.tests_pass_url = tests_pass_url request.urgent = urgent request.target_date = target_date request.time_to_verify = time_to_verify if message: assert len(message) > 0 request.message = message request.put() query.bust_request_caches() send_request_mail(request) return request
def abandon_request(request): assert request.state in ('requested', 'accepted', 'rejected') request.state = 'abandoned' push = request.push request.push = None request.put() query.bust_request_caches() if push is not None: push.bust_requests_cache() return request
def accept_request(push, request): assert push.state in ('accepting', 'onstage') assert request.state == 'requested' assert not request.push request.push = push request.state = 'accepted' request.put() query.bust_request_caches() push.bust_requests_cache() return request
def take_ownership(object): object.owner = users.get_current_user() object.put() if isinstance(object, model.Request): query.bust_request_caches() push = object.push if push is not None: object.push.bust_requests_cache() elif isinstance(object, model.Push): query.bust_push_caches() return object
def abandon_push(push): assert push.state in ('accepting', 'onstage') push.state = 'abandoned' for request in query.push_requests(push): request.state = 'requested' request.push = None request.put() push.put() query.bust_request_caches() push.bust_requests_cache() return push
def withdraw_request(request): assert request.state in ('accepted', 'checkedin', 'onstage', 'tested') push = request.push assert push assert request.push.state in ('accepting', 'onstage') push_owner_email = request.push.owner.email() request.push = None request.state = 'requested' request.put() query.bust_request_caches() push.bust_requests_cache() util.send_mail( to=[push_owner_email, config.mail_to, config.mail_request], subject='Re: %s: %s' % (request.owner.nickname(), request.subject), body='I withdrew my request.\n' + config.url(request.uri)) return request
def accept_request(push, request): assert push.state in ('accepting', 'onstage') assert request.state == 'requested' assert not request.push request.push = push request.state = 'accepted' request.put() query.bust_request_caches() push.bust_requests_cache() util.send_im( to=request.owner.email(), message='<a href="mailto:%(pushmaster_email)s">%(pushmaster_name)s</a> accepted <a href="%(request_uri)s">%(request_subject)s</a> into <a href="%(push_uri)s">%(push_name)s</a>.', pushmaster_email=push.owner.email(), pushmaster_name=user_info(push.owner).full_name, request_uri=config.url(request.uri), request_subject=request.subject, push_uri=config.url(push.uri), push_name=push.name or 'the push', ) return request