def test_make_naive_default_tz(settings): """Tests datetimes are made naive of the configured timezone.""" settings.USE_TZ = True datetime_object = timezone.make_aware( datetime(2016, 1, 2, 21, 52, 25), timezone=pytz.timezone('Europe/Helsinki')) assert timezone.is_aware(datetime_object) naive_datetime = make_naive(datetime_object) assert timezone.is_naive(naive_datetime) assert( naive_datetime == make_naive( datetime_object, tz=pytz.timezone(settings.TIME_ZONE)))
def test_make_naive(settings): """Tests datetimes can be made naive of timezones.""" settings.USE_TZ = True datetime_object = datetime(2016, 1, 2, 21, 52, 25, tzinfo=pytz.utc) assert timezone.is_aware(datetime_object) naive_datetime = make_naive(datetime_object) assert timezone.is_naive(naive_datetime)
def test_make_naive_use_tz_false(settings): """Tests datetimes are left intact if `USE_TZ` is not in effect.""" settings.USE_TZ = False datetime_object = datetime(2016, 1, 2, 21, 52, 25, tzinfo=pytz.utc) assert timezone.is_aware(datetime_object) naive_datetime = make_naive(datetime_object) assert timezone.is_aware(naive_datetime)
def test_make_naive_explicit_tz(settings): """Tests datetimes are made naive of the given timezone.""" settings.USE_TZ = True datetime_object = timezone.make_aware(datetime(2016, 1, 2, 21, 52, 25), timezone=pytz.timezone("Europe/Helsinki")) assert timezone.is_aware(datetime_object) naive_datetime = make_naive(datetime_object, tz=pytz.timezone("Asia/Bangkok")) assert timezone.is_naive(naive_datetime) # Conversion from a Helsinki aware datetime to a naive datetime in Bangkok # should increment 5 hours (UTC+2 vs. UTC+7) assert naive_datetime.hour == (datetime_object.hour + 5) % 24
def test_make_naive_default_tz(settings): """Tests datetimes are made naive of the configured timezone.""" settings.USE_TZ = True datetime_object = timezone.make_aware(datetime(2016, 1, 2, 21, 52, 25), timezone=pytz.timezone("Europe/Helsinki")) assert timezone.is_aware(datetime_object) naive_datetime = make_naive(datetime_object) assert timezone.is_naive(naive_datetime) # Conversion from a Helsinki aware datetime to a naive datetime in Amsterdam # should decrement 1 hour (UTC+2 vs. UTC+1) assert naive_datetime.hour == (datetime_object.hour - 1) % 24
def get_summary(scores, start, end): rate = review_rate = None translation_month = review_month = None translated_row = reviewed_row = None translations = [] reviews = [] start = make_naive(start) end = make_naive(end) for score in scores: score_time = make_naive(score.creation_time) if (score.rate != rate or translation_month != score_time.month): rate = score.rate translation_month = score_time.month translated_row = { 'type': PaidTaskTypes.TRANSLATION, 'action': PaidTaskTypes.TRANSLATION, 'amount': 0, 'rate': score.rate, 'start': score_time, 'end': score_time, } translations.append(translated_row) if (score.review_rate != review_rate or review_month != score_time.month): review_rate = score.review_rate review_month = score_time.month reviewed_row = { 'type': PaidTaskTypes.REVIEW, 'action': PaidTaskTypes.REVIEW, 'amount': 0, 'rate': score.review_rate, 'start': score_time, 'end': score_time, } reviews.append(reviewed_row) translated_words, reviewed_words = score.get_paid_words() if translated_words > 0: translated_row['end'] = score_time translated_row['amount'] += translated_words elif reviewed_words > 0: reviewed_row['end'] = score_time reviewed_row['amount'] += reviewed_words for group in [translations, reviews]: for i, item in enumerate(group): if i == 0: item['start'] = start else: item['start'] = get_min_month_datetime(item['start']) if item['end'].month == end.month and item['end'].year == end.year: item['end'] = end else: item['end'] = get_max_month_datetime(item['end']) result = filter(lambda x: x['amount'] > 0, translations + reviews) result = sorted(result, key=lambda x: x['start']) for item in result: item['type'] = item['action'] item['action'] = PaidTask.get_task_type_title(item['action']) for item in result: item['start'] = item['start'].strftime('%Y-%m-%d') item['end'] = item['end'].strftime('%Y-%m-%d') return result
def get_daily_activity(user, scores, start, end): result_translated = { 'label': PaidTask.get_task_type_title( PaidTaskTypes.TRANSLATION), 'data': [], } result_reviewed = { 'label': PaidTask.get_task_type_title( PaidTaskTypes.REVIEW), 'data': [], } result = { 'data': [result_translated, result_reviewed], 'max_day_score': 10, 'min_ts': "%d" % (calendar.timegm(start.timetuple()) * 1000), 'max_ts': "%d" % (calendar.timegm(end.timetuple()) * 1000), 'nonempty': False, } if settings.POOTLE_REPORTS_MARK_FUNC: try: get_mark_data = import_func(settings.POOTLE_REPORTS_MARK_FUNC) result['data'].append({ 'data': [], 'marks': {'show': True}, 'markdata': get_mark_data(user, start, end) }) except ImproperlyConfigured: pass saved_date = None current_day_score = 0 translated_group = {} reviewed_group = {} for score in scores: score_time = make_naive(score.creation_time) date = score_time.date() translated, reviewed = score.get_paid_words() if translated or reviewed: translated = 0 if translated is None else translated reviewed = 0 if reviewed is None else reviewed if saved_date != date: saved_date = date reviewed_group[date] = 0 translated_group[date] = 0 if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score current_day_score = 0 current_day_score += int(reviewed + translated) result['nonempty'] |= current_day_score > 0 translated_group[date] += translated reviewed_group[date] += reviewed if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score for date, item in sorted(translated_group.items(), key=lambda x: x[0]): ts = int(calendar.timegm(date.timetuple()) * 1000) result_translated['data'].append((ts, item)) for date, item in sorted(reviewed_group.items(), key=lambda x: x[0]): ts = int(calendar.timegm(date.timetuple()) * 1000) result_reviewed['data'].append((ts, item)) return result
def get_daily_activity(user, scores, start, end): result_translated = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.TRANSLATION], 'data': [], } result_reviewed = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.REVIEW], 'data': [], } result_suggested = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.SUGGESTION], 'data': [], } result = { 'data': [result_translated, result_reviewed, result_suggested], 'max_day_score': 10, 'min_ts': "%d" % (calendar.timegm(start.timetuple()) * 1000), 'max_ts': "%d" % (calendar.timegm(end.timetuple()) * 1000), 'nonempty': False, } if settings.POOTLE_REPORTS_MARK_FUNC: try: get_mark_data = import_func(settings.POOTLE_REPORTS_MARK_FUNC) result['data'].append({ 'data': [], 'marks': {'show': True}, 'markdata': get_mark_data(user, start, end) }) except ImproperlyConfigured: pass saved_date = None current_day_score = 0 translated_group = {} reviewed_group = {} suggested_group = {} for score in scores: score_time = make_naive(score.creation_time) date = score_time.date() translated, reviewed = score.get_paid_wordcounts() suggested = score.get_suggested_wordcount() if any(map(lambda x: x is not None, [translated, reviewed, suggested])): translated = 0 if translated is None else translated reviewed = 0 if reviewed is None else reviewed suggested = 0 if suggested is None else suggested if saved_date != date: saved_date = date reviewed_group[date] = 0 translated_group[date] = 0 suggested_group[date] = 0 if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score current_day_score = 0 current_day_score += int(reviewed + translated + suggested) result['nonempty'] |= current_day_score > 0 translated_group[date] += translated reviewed_group[date] += reviewed suggested_group[date] += suggested if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score for group, res in [(translated_group, result_translated), (reviewed_group, result_reviewed), (suggested_group, result_suggested)]: for date, item in sorted(group.items(), key=lambda x: x[0]): ts = int(calendar.timegm(date.timetuple()) * 1000) res['data'].append((ts, item)) return result
def get_daily_activity(user, scores, start, end): result_translated = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.TRANSLATION], 'data': [], } result_reviewed = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.REVIEW], 'data': [], } result_suggested = { 'label': ReportActionTypes.NAMES_MAP[ReportActionTypes.SUGGESTION], 'data': [], } result = { 'data': [result_translated, result_reviewed, result_suggested], 'max_day_score': 10, 'min_ts': "%d" % (calendar.timegm(start.timetuple()) * 1000), 'max_ts': "%d" % (calendar.timegm(end.timetuple()) * 1000), 'nonempty': False, } if settings.POOTLE_REPORTS_MARK_FUNC: try: get_mark_data = import_func(settings.POOTLE_REPORTS_MARK_FUNC) result['data'].append({ 'data': [], 'marks': { 'show': True }, 'markdata': get_mark_data(user, start, end) }) except ImproperlyConfigured: pass saved_date = None current_day_score = 0 translated_group = {} reviewed_group = {} suggested_group = {} for score in scores: score_time = make_naive(score.creation_time) date = score_time.date() translated, reviewed = score.get_paid_wordcounts() suggested = score.get_suggested_wordcount() if any(map(lambda x: x is not None, [translated, reviewed, suggested])): translated = 0 if translated is None else translated reviewed = 0 if reviewed is None else reviewed suggested = 0 if suggested is None else suggested if saved_date != date: saved_date = date reviewed_group[date] = 0 translated_group[date] = 0 suggested_group[date] = 0 if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score current_day_score = 0 current_day_score += int(reviewed + translated + suggested) result['nonempty'] |= current_day_score > 0 translated_group[date] += translated reviewed_group[date] += reviewed suggested_group[date] += suggested if result['max_day_score'] < current_day_score: result['max_day_score'] = current_day_score for group, res in [(translated_group, result_translated), (reviewed_group, result_reviewed), (suggested_group, result_suggested)]: for date, item in sorted(group.items(), key=lambda x: x[0]): ts = int(calendar.timegm(date.timetuple()) * 1000) res['data'].append((ts, item)) return result
def get_summary(scores, start, end): rate = review_rate = None translation_month = review_month = None translated_row = reviewed_row = None translations = [] reviews = [] start = make_naive(start) end = make_naive(end) for score in scores: score_time = make_naive(score.creation_time) if score.rate != rate or translation_month != score_time.month: rate = score.rate translation_month = score_time.month translated_row = { "type": PaidTaskTypes.TRANSLATION, "action": PaidTaskTypes.TRANSLATION, "amount": 0, "rate": score.rate, "start": score_time, "end": score_time, } translations.append(translated_row) if score.review_rate != review_rate or review_month != score_time.month: review_rate = score.review_rate review_month = score_time.month reviewed_row = { "type": PaidTaskTypes.REVIEW, "action": PaidTaskTypes.REVIEW, "amount": 0, "rate": score.review_rate, "start": score_time, "end": score_time, } reviews.append(reviewed_row) translated_words, reviewed_words = score.get_paid_wordcounts() if translated_words is not None: translated_row["end"] = score_time translated_row["amount"] += translated_words elif reviewed_words is not None: reviewed_row["end"] = score_time reviewed_row["amount"] += reviewed_words for group in [translations, reviews]: for i, item in enumerate(group): if i == 0: item["start"] = start else: item["start"] = get_min_month_datetime(item["start"]) if item["end"].month == end.month and item["end"].year == end.year: item["end"] = end else: item["end"] = get_max_month_datetime(item["end"]) result = filter(lambda x: x["amount"] > 0, translations + reviews) result = sorted(result, key=lambda x: x["start"]) for item in result: item["type"] = item["action"] item["action"] = PaidTask.get_task_type_title(item["action"]) for item in result: item["start"] = item["start"].strftime("%Y-%m-%d") item["end"] = item["end"].strftime("%Y-%m-%d") return result