Пример #1
0
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()

    im_fields = dict(
        rejector_email=html_escape(rejector.email()),
        rejector_name=html_escape(rejector.nickname()),
        request_subject=html_escape(request.subject),
        uri=html_escape(config.url(request.uri)),
        reason=html_escape(reason),
        )
    send_im(request.owner.email(), '<a href="mailto:%(rejector_email)s">%(rejector_name)s</a> rejected your request <a href="%(uri)s">%(request_subject)s</a>: %(reason)s' % im_fields)

    send_mail(
        to=[request.owner.email(), config.mail_to],
        subject='Re: ' + request.subject,
        body="""This request was rejected.\n\n%s\n\n%s""" % (reason, config.url(request.uri)),
        )

    return request
Пример #2
0
def send_to_stage(push):
    assert push.state in ('accepting', 'onstage')

    checkedin_requests = query.push_requests(push, state='checkedin')
    if checkedin_requests:
        if push.state != 'onstage':
            push.state = 'onstage'

            push.put()

        for request in checkedin_requests:
            request.state = 'onstage'
            if request.no_testing:
                set_request_tested(request, bust_caches=False)
            else:
                owner_email = request.owner.email()

                send_mail(
                    to=[owner_email, config.mail_to],
                    subject='Re: ' + request.subject,
                    body='Please check your changes on stage.\n' + config.url(push.uri))

                im_fields = dict(
                    pushmaster_email=html_escape(push.owner.email()),
                    pushmaster_name=html_escape(push.owner.nickname()),
                    request_subject=html_escape(request.subject),
                    uri=html_escape(config.url(push.uri)),
                    )
                send_im(owner_email, '<a href="mailto:%(pushmaster_email)s">%(pushmaster_name)s</a> requests that you check your changes on stage for <a href="%(uri)s">%(request_subject)s</a>.' % im_fields)
                request.put()

        push.bust_requests_cache()

    return push
Пример #3
0
def send_request_mail(request):
    body = [request.message or request.subject]
    if request.push_plans:
        body.append('This request has push plans.')
        body.append(config.push_plans_url)
    if request.no_testing:
        body.append('This request requires no stage testing.')
    body.append(config.url(request.uri))

    send_mail(
        to=config.mail_to,
        subject=request.subject,
        body='\n'.join(body))
Пример #4
0
def set_request_checkedin(request):
    assert request.state == 'accepted'
    push = request.push
    assert push

    request.state = 'checkedin'

    request.put()
    push.bust_requests_cache()

    send_mail(
        to=[push.owner.email(), config.mail_to],
        subject='Re: ' + request.subject,
        body='My changes are checked in.\n' + config.url(push.uri))

    return request
Пример #5
0
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()

    send_mail(
        to=[push_owner_email, config.mail_to],
        subject='Re: ' + request.subject,
        body='I withdrew my request.\n' + config.url(request.uri))

    return request
Пример #6
0
def set_request_tested(request, bust_caches=True):
    assert request.state == 'onstage'
    push = request.push
    assert push

    request.state = 'tested'
    request.put()

    if bust_caches:
        push.bust_requests_cache()
    
    push_owner_email = push.owner.email()
    
    send_mail(
        to=[push_owner_email, config.mail_to],
        subject='Re: ' + request.subject,
        body='Looks good to me.\n' + config.url(push.uri))

    if all(request.state == 'tested' for request in query.push_requests(push)):
        send_im(push_owner_email, 'All changes for <a href="%s">the push</a> are tested on stage.' % config.url(push.uri))

    return request