def process_iarc_changes(date=None): """ Queries IARC for recent changes in the past 24 hours (or date provided). If date provided use it. It should be in the form YYYY-MM-DD. NOTE: Get_Rating_Changes only sends the diff of the changes by rating body. They only send data for the ratings bodies that changed. """ if not date: date = datetime.date.today() else: date = datetime.datetime.strptime(date, '%Y-%m-%d').date() client = lib.iarc.client.get_iarc_client('services') xml = lib.iarc.utils.render_xml( 'get_rating_changes.xml', { 'date_from': date - datetime.timedelta(days=1), 'date_to': date, }) resp = client.Get_Rating_Changes(XMLString=xml) data = lib.iarc.utils.IARC_XML_Parser().parse_string(resp) for row in data.get('rows', []): iarc_id = row.get('submission_id') if not iarc_id: log.debug('IARC changes contained no submission ID: %s' % row) continue try: app = Webapp.objects.get(iarc_info__submission_id=iarc_id) except Webapp.DoesNotExist: log.debug('Could not find app associated with IARC submission ID: ' '%s' % iarc_id) continue try: # Fetch and save all IARC info. refresh_iarc_ratings([app.id]) # Flag for rereview if it changed to adult. ratings_body = row.get('rating_system') rating = RATINGS_MAPPING[ratings_body].get(row['new_rating']) _flag_rereview_adult(app, ratings_body, rating) # Log change reason. reason = row.get('change_reason') amo.log(amo.LOG.CONTENT_RATING_CHANGED, app, details={ 'comments': '%s:%s, %s' % (ratings_body.name, rating.name, reason) }) except Exception as e: # Any exceptions we catch, log, and keep going. log.debug('Exception: %s' % e) continue
def process_iarc_changes(date=None): """ Queries IARC for recent changes in the past 24 hours (or date provided). If date provided use it. It should be in the form YYYY-MM-DD. NOTE: Get_Rating_Changes only sends the diff of the changes by rating body. They only send data for the ratings bodies that changed. """ if not date: date = datetime.date.today() else: date = datetime.datetime.strptime(date, "%Y-%m-%d").date() client = lib.iarc.client.get_iarc_client("services") xml = lib.iarc.utils.render_xml( "get_rating_changes.xml", {"date_from": date - datetime.timedelta(days=1), "date_to": date} ) resp = client.Get_Rating_Changes(XMLString=xml) data = lib.iarc.utils.IARC_XML_Parser().parse_string(resp) for row in data.get("rows", []): iarc_id = row.get("submission_id") if not iarc_id: log.debug("IARC changes contained no submission ID: %s" % row) continue try: app = Webapp.objects.get(iarc_info__submission_id=iarc_id) except Webapp.DoesNotExist: log.debug("Could not find app associated with IARC submission ID: " "%s" % iarc_id) continue try: # Fetch and save all IARC info. refresh_iarc_ratings([app.id]) # Flag for rereview if it changed to adult. ratings_body = row.get("rating_system") rating = RATINGS[ratings_body.id].get(row["new_rating"]) _flag_rereview_adult(app, ratings_body, rating) # Log change reason. reason = row.get("change_reason") amo.log( amo.LOG.CONTENT_RATING_CHANGED, app, details={"comments": "%s:%s, %s" % (ratings_body.name, rating.name, reason)}, ) except Exception as e: # Any exceptions we catch, log, and keep going. log.debug("Exception: %s" % e) continue
def _process_iarc_rating_changes_v1(date=None): """ Process IARC changes in the past 24 hours (or date provided) (IARC v1 only) NOTE: Get_Rating_Changes only sends the diff of the changes by rating body. They only send data for the ratings bodies that changed. """ if not date: date = datetime.date.today() else: date = datetime.datetime.strptime(date, '%Y-%m-%d').date() client = lib.iarc.client.get_iarc_client('services') xml = lib.iarc.utils.render_xml('get_rating_changes.xml', { 'date_from': date - datetime.timedelta(days=1), 'date_to': date, }) resp = client.Get_Rating_Changes(XMLString=xml) data = lib.iarc.utils.IARC_XML_Parser().parse_string(resp) for row in data.get('rows', []): iarc_id = row.get('submission_id') if not iarc_id: log.debug('IARC changes contained no submission ID: %s' % row) continue try: app = Webapp.objects.get(iarc_info__submission_id=iarc_id) except Webapp.DoesNotExist: log.debug('Could not find app associated with IARC submission ID: ' '%s' % iarc_id) continue try: # Fetch and save all IARC info. refresh_iarc_ratings([app.id]) # Flag for rereview if it changed to adult. ratings_body = row.get('rating_system') rating = RATINGS[ratings_body.id].get(row['new_rating']) _flag_rereview_adult(app, ratings_body, rating) # Log change reason. reason = row.get('change_reason') mkt.log(mkt.LOG.CONTENT_RATING_CHANGED, app, details={'comments': '%s:%s, %s' % (ratings_body.name, rating.name, reason)}) except Exception as e: # Any exceptions we catch, log, and keep going. log.debug('Exception: %s' % e) continue