def test_timeline_unit_with_suggestion_and_comment(store0, admin): suggestion = Suggestion.objects.filter(unit__store=store0, state__name="pending", unit__state=UNTRANSLATED).first() unit = suggestion.unit review.get(Suggestion)([suggestion], admin).accept() comment = 'This is a comment!' form = UnsecuredCommentForm(suggestion, admin, dict(comment=comment)) assert form.is_valid() form.save() suggestion.refresh_from_db() unit.refresh_from_db() timeline = Timeline(unit) groups = timeline.grouped_events(start=suggestion.review_time) assert len(groups) == 1 group = groups[0] assert len(group['events']) == 2 assert group['events'][0]['value'] == unit.target assert group['events'][0]['translation'] assert (group['events'][0]['description'] == _get_sugg_accepted_with_comment_desc(suggestion, comment)) submission = Submission.objects.get(field=SubmissionFields.STATE, unit=suggestion.unit, creation_time=suggestion.review_time) assert group['events'][1]['value'] == _get_state_changed_value(submission) assert group['via_upload'] is False assert group['datetime'] == suggestion.review_time assert group['user'].username == admin.username
def test_timeline_unit_with_suggestion_and_comment(store0, admin): suggestion = Suggestion.objects.filter( unit__store=store0, state__name="pending", unit__state=UNTRANSLATED).first() unit = suggestion.unit review.get(Suggestion)([suggestion], admin).accept() comment = 'This is a comment!' form = UnsecuredCommentForm(suggestion, admin, dict( comment=comment)) assert form.is_valid() form.save() suggestion.refresh_from_db() unit.refresh_from_db() timeline = Timeline(unit) groups = timeline.grouped_events(start=suggestion.review_time) assert len(groups) == 1 group = groups[0] assert len(group['events']) == 2 assert group['events'][0]['value'] == unit.target assert group['events'][0]['translation'] assert (group['events'][0]['description'] == _get_sugg_accepted_with_comment_desc(suggestion, comment)) submission = Submission.objects.get(field=SubmissionFields.STATE, unit=suggestion.unit, creation_time=suggestion.review_time) assert group['events'][1]['value'] == _get_state_changed_value(submission) assert group['via_upload'] is False assert group['datetime'] == suggestion.review_time assert group['user'].username == admin.username
def test_timeline_translated_unit_comment(store0, admin, member): unit = store0.units.filter(state=TRANSLATED).first() comment = 'This is a comment!' unit.translator_comment = comment unit.save(user=member) last_submission_0 = unit.store.data.last_submission unit.translator_comment = '' unit.save(user=admin) unit.store.data.refresh_from_db() last_submission_1 = unit.store.data.last_submission groups = Timeline(unit).grouped_events( start=last_submission_0.creation_time) assert len(groups) == 2 group = groups[1] assert len(group['events']) == 1 assert group['events'][0]['value'] == comment assert group['events'][0]['comment'] assert 'description' not in group['events'][0] assert group['via_upload'] is False assert group['datetime'] == last_submission_0.creation_time assert group['user'].username == member.username group = groups[0] assert len(group['events']) == 1 assert 'value' not in group['events'][0] assert 'comment' not in group['events'][0] assert group['events'][0]['description'] == 'Removed comment' assert group['via_upload'] is False assert group['datetime'] == last_submission_1.creation_time assert group['user'].username == admin.username
def test_timeline_unit_with_qc(store0, admin, member): qc_filter = dict(unit__store=store0, unit__state=TRANSLATED, unit__store__translation_project__project__disabled=False, category=Category.CRITICAL) qc = QualityCheck.objects.filter(**qc_filter).first() unit = qc.unit unit.toggle_qualitycheck(qc.id, True, member) last_submission_0 = unit.store.data.last_submission unit.toggle_qualitycheck(qc.id, False, admin) unit.store.data.refresh_from_db() last_submission_1 = unit.store.data.last_submission groups = Timeline(unit).grouped_events( start=last_submission_0.creation_time) assert len(groups) == 2 group = groups[1] assert len(group['events']) == 1 assert 'value' not in group['events'][0] assert (group['events'][0]['description'] == _get_update_check_desc( last_submission_0)) assert group['via_upload'] is False assert group['user'].username == member.username assert group['datetime'] == last_submission_0.creation_time group = groups[0] assert len(group['events']) == 1 assert 'value' not in group['events'][0] assert (group['events'][0]['description'] == _get_update_check_desc( last_submission_1)) assert group['via_upload'] is False assert group['user'].username == admin.username assert group['datetime'] == last_submission_1.creation_time
def test_timeline_translated_unit_with_suggestion(store0, admin): suggestion = Suggestion.objects.filter(unit__store=store0, state__name="pending", unit__state=TRANSLATED).first() unit = suggestion.unit review.get(Suggestion)([suggestion], admin).accept() suggestion.refresh_from_db() unit.refresh_from_db() timeline = Timeline(unit) groups = timeline.grouped_events(start=suggestion.review_time) assert len(groups) == 1 group = groups[0] assert len(group['events']) == 1 assert group['events'][0]['value'] == unit.target assert group['events'][0]['translation'] assert (group['events'][0]['description'] == _get_sugg_accepted_desc( suggestion)) assert group['via_upload'] is False assert group['datetime'] == suggestion.review_time assert group['user'].username == admin.username
def test_timeline_untranslated_unit_creation(store0, member): unit = store0.addunit(store0.UnitClass(source="Foo"), user=member) unit.refresh_from_db() groups = Timeline(unit).grouped_events() assert len(groups) == 1 group = groups[0] assert len(group['events']) == 1 assert 'value' not in group['events'][0] assert 'translation' not in group['events'][0] assert group['events'][0]['description'] == u"Unit created" assert group['via_upload'] is False assert group['datetime'] == unit.creation_time assert group['user'].username == member.username
def test_timeline_translated_unit_with_suggestion(store0, admin): suggestion = Suggestion.objects.filter( unit__store=store0, state__name="pending", unit__state=TRANSLATED).first() unit = suggestion.unit review.get(Suggestion)([suggestion], admin).accept() suggestion.refresh_from_db() unit.refresh_from_db() timeline = Timeline(unit) groups = timeline.grouped_events(start=suggestion.review_time) assert len(groups) == 1 group = groups[0] assert len(group['events']) == 1 assert group['events'][0]['value'] == unit.target assert group['events'][0]['translation'] assert (group['events'][0]['description'] == _get_sugg_accepted_desc(suggestion)) assert group['via_upload'] is False assert group['datetime'] == suggestion.review_time assert group['user'].username == admin.username
def test_timeline_unfuzzied_unit(member): unit = Unit.objects.filter(state=FUZZY).first() unit.markfuzzy(False) unit.save(user=member) last_submission = unit.store.data.last_submission groups = Timeline(unit).grouped_events(start=last_submission.creation_time) assert len(groups) == 1 group = groups[0] assert len(group['events']) == 1 assert (group['events'][0]['value'] == _get_state_changed_value( last_submission)) assert group['events'][0]['state'] assert 'description' not in group['events'][0] assert group['via_upload'] is False assert group['datetime'] == last_submission.creation_time assert group['user'].username == member.username
def test_timeline_translated_unit_creation_with_updates(store0, member): pounit = store0.UnitClass(source="Foo") pounit.target = "Bar" unit = store0.addunit(pounit, user=member) unit.refresh_from_db() unit.target = "Bar UPDATED" unit.save() unit.refresh_from_db() groups = Timeline(unit).grouped_events() assert len(groups) == 2 group = groups[-1] assert len(group['events']) == 1 assert group['events'][0]['value'] == "Bar" assert group['events'][0]['translation'] assert group['events'][0]['description'] == u"Unit created" assert group['via_upload'] is False assert group['datetime'] == unit.creation_time assert group['user'].username == member.username