

def post(self):
    '.'
    logging.info('tasks/upd_gplus')
    bad_posts = []
    gplus_id = self.request.get('gplus_id')
    logging.info(gplus_id)
    API_KEY = get_server_api_key()
    gplus_service = build('plus', 'v1', developerKey=API_KEY)
    activities = ActivityPost.query((ActivityPost.gplus_id == gplus_id))
    for activity in activities:
        if activity.deleted:
            continue
        activity_record = ar.find(activity)
        if (activity_record is not None):
            if activity_record.deleted:
                continue
        logging.info(activity_record)
        video_id = is_youtube_video(activity.links)
        if (video_id is not False):
            logging.info('linked YT video found %s', video_id)
            meta_found = False
            for meta in activity_record.metadata:
                if ((meta.type == '#video') and (meta.link == activity_record.activity_link)):
                    logging.info('metadata record exist')
                    meta_found = True
                    break
                if ((meta.type == '#video') and (meta.link is None)):
                    meta_found = True
                    logging.info('metadata record incomplete')
                    meta.activity_group = '#content'
                    meta.link = activity_record.activity_link
                    activity_record.put()
                    break
            if (not meta_found):
                logging.info('metadata record NOT found')
                activity_record.metadata.insert(0, ActivityMetaData())
                meta = activity_record.metadata[0]
                meta.type = '#video'
                meta.activity_group = '#content'
                meta.link = activity_record.activity_link
                activity_record.put()
        fields = 'id,verb,actor/id,annotation,object(id,actor/id,plusoners/totalItems,replies/totalItems,resharers/totalItems,content)'
        try:
            plus_activity = gplus_service.activities().get(activityId=activity.post_id, fields=fields).execute()
        except:
            logging.info('trying to get gplus activities again')
            try:
                plus_activity = gplus_service.activities().get(activityId=activity.post_id, fields=fields).execute()
            except:
                logging.info('failed again, giving up')
                continue
        if (not is_gde_post(plus_activity)):
            continue
        updated_activity = self.update_if_changed(activity, plus_activity)
        if (updated_activity is not None):
            logging.info(('updated gplus post id %s' % updated_activity.post_id))
            activity_record = find_or_create_ar(plus_activity, updated_activity)
            activity_record.add_post(updated_activity)
            updated_activity.put()
        if ((len(activity.product_group) == 0) or (len(activity.activity_type) == 0)):
            really_bad = False
            activity_record = ar.find(activity)
            if (activity_record is None):
                really_bad = True
            elif ((len(activity_record.activity_types) == 0) or (len(activity_record.product_groups) == 0)):
                really_bad = True
            if really_bad:
                logging.info('bad post spotted')
                bad_posts.append(activity.url)
    update_video_views(gplus_id)
    if (len(bad_posts) > 0):
        self.send_update_mail(bad_posts, gplus_id)

dataset/ETHPy150Open GoogleDeveloperExperts/experts-app-backend/services/update_gplus.py TaskUpdateGplus.post/original