Пример #1
0
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]})
Пример #2
0
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()
Пример #3
0
 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)
Пример #4
0
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')
Пример #5
0
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
Пример #6
0
 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))