Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Tools / GardeningServer / internal_alerts.py
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import datetime
6 import alerts
7 import json
8 import webapp2
9
10 from google.appengine.api import users
11
12
13 class InternalAlertsHandler(alerts.AlertsHandler):
14     MEMCACHE_INTERNAL_ALERTS_KEY = 'internal-alerts'
15
16     # Has no 'request' member.
17     # Has no 'response' member.
18     # Use of super on an old style class.
19     # pylint: disable=E1002,E1101
20     def get(self):
21         # Require users to be logged to see builder alerts from private/internal
22         # trees.
23         user = users.get_current_user()
24         if not user:
25             alerts = {}
26             alerts.update({
27                 'date': datetime.datetime.utcnow(),
28                 'redirect-url': users.create_login_url(self.request.uri)})
29             uncompressed = super(InternalAlertsHandler,
30                                  self).generate_json_dump(alerts)
31             super(InternalAlertsHandler, self).send_json_data(uncompressed)
32             return
33
34         email = user.email()
35         if not email.endswith('@google.com'):
36             self.response.set_status(403, 'invalid user')
37             return
38
39         super(InternalAlertsHandler, self).get_from_memcache(
40             InternalAlertsHandler.MEMCACHE_INTERNAL_ALERTS_KEY)
41
42     def post(self):
43         super(InternalAlertsHandler, self).post_to_memcache(
44             InternalAlertsHandler.MEMCACHE_INTERNAL_ALERTS_KEY)
45
46
47 app = webapp2.WSGIApplication([
48     ('/internal-alerts', InternalAlertsHandler)])