def reportsv2(): if not request.args or not request.args['key'] or request.args['key'] != IOS_API_KEY: abort(401) if request.method == "POST": if not request.json or not 'google_places_id' in request.json or not 'tags' in request.json: abort(400) report = Report( google_places_id=request.json['google_places_id'], tags=request.json['tags']) if 'comments' in request.json: report.populate(comments=request.json['comments']) if 'ios_device_id' in request.json: report.populate(ios_device_id=request.json['ios_device_id']) if 'photo_url' in request.json: report.populate(photo_url=request.json['photo_url']) try: report.put() return jsonify(report.to_dict()) except CapabilityDisabledError: abort(400) if len(request.args) == 1: reports = Report.query().order(-Report.created_at).fetch(20) return jsonify({"reports": [report.to_dict() for report in reports]}) if len(request.args) > 2: abort(400) if not request.args['google_places_id']: abort(400) google_places_id = request.args['google_places_id'] reports = Report.query(Report.google_places_id==google_places_id).order(-Report.created_at).fetch(20) return jsonify({"reports": [report.to_dict() for report in reports]})
def set_report(name, content): report = Report.find_by_name(name) if report is None: report = Report() report.name = name report.content = content report.put()
def test_one_report(self): client = Client(product=ProductData.killerapp_obj, cookie='123') client.put() report = Report(product=ProductData.killerapp_obj, client=client, status=REPORT_NEW, remote_ip='127.0.0.1', data='[]') report.put() response = self.get('/status/') assert 'Queued Reports: 1' in str(response)
def sites(): if request.method == 'GET': query = Site.query() compact_sites = [] for site in query: report = Report.query().filter( Report.site == site.key).order(-Report.created_on).fetch(1) compact_site = Site.to_compact(site) compact_site.update(Report.to_dict(report[0])) compact_sites.append(compact_site) return jsonify({'siteList': compact_sites}), 200 elif request.method == 'POST': request_body = request.get_json() name = request_body.get('name', '') url = request_body.get('url', '') id_info = get_user_id_info(request) email = id_info['email'] try: report_results = PageSpeedInights.run(url) user_key = User.query().filter(User.email == email).fetch( keys_only=True)[0] site = Site(name=name, url=url) site.created_by = user_key site.last_edited_by = user_key site_key = site.put() report = Report( site=site_key, accessibility_score=report_results['accessibility_score'], best_practices_score=report_results['best_practices_score'], desktop_performance_score=report_results[ 'desktop_performance_score'], mobile_performance_score=report_results[ 'mobile_performance_score'], seo_score=report_results['seo_score'], pwa_score=report_results['pwa_score'], ) report.put() return jsonify({'success': True}), 200 except: raise Exception('Page Speed Insights API returned an error') else: raise Exception('Method not supported')
def update_all_sites(): appengine_cron_header = request.headers.get('X-Appengine-Cron') if not appengine_cron_header: raise Exception( 'This is a cron task which can only be called from within Appengine' ) sites = Site.query() for site in sites: report_results = PageSpeedInights.run(site.url) report = Report( site=site.key, accessibility_score=report_results['accessibility_score'], best_practices_score=report_results['best_practices_score'], desktop_performance_score=report_results[ 'desktop_performance_score'], mobile_performance_score=report_results[ 'mobile_performance_score'], seo_score=report_results['seo_score'], pwa_score=report_results['pwa_score'], ) report.put() return jsonify({'success': True}), 200
def post(self): user = users.get_current_user() if user: data = json.decode(self.request.body) # logging.log(logging.INFO, data) url = data['url'] if url[:3] != 'http': url = 'http://' + url report = Report( author=user, url=url, status='SENT' ) key = report.put() deferred.defer(parsepage, key, _countdown=30, _queue="parsequeue") result = { 'result': JSONEncoder().encode(key.get()), } self.response.headers['Content-Type'] = 'application/json' self.response.write(json.encode(result))