Bug 1149968

Summary: Translation history should *never* show last modifier as "Someone offline"
Product: [Retired] Zanata Reporter: Damian Jansen <djansen>
Component: Component-LogicAssignee: Patrick Huang <pahuang>
Status: CLOSED CURRENTRELEASE QA Contact: Zanata-QA Mailling List <zanata-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 3.5CC: camunoz, damason, dchen, irooskov, zanata-bugs
Target Milestone: ---   
Target Release: 3.6   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 3.6.0-SNAPSHOT (git-jenkins-zanata-server-github-pull-requests-2475) Doc Type: Bug Fix
Doc Text:
Story Points: 1
Clone Of: Environment:
Last Closed: 2015-03-19 07:10:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Screenshot of error none

Description Damian Jansen 2014-10-07 04:41:11 UTC
Created attachment 944441 [details]
Screenshot of error

Description of problem:
I've seen throughout translations in Zanata that "(Someone offline)" has uploaded bogus translations, eg. English strings in Italian targets.

The client must know who uploaded it, and must report this when pushing translations.  Otherwise, this is an open invitation for anonymous abuse such as pushing garbage or inappropriate content.

Version-Release number of selected component (if applicable):
3.5.0

How reproducible:
Easy always

Steps to Reproduce:
1. Go to https://translate.zanata.org/zanata/webtrans/Application.seam?project=zanata-server&iteration=master&localeId=it&locale=en#view:doc;doc:zanata-war/src/main/resources/messages;search:Login
 - Note the numerous false translations
2. Click History on any of these bad translations

Actual results:
(Someone offline) created a Translated revision

Expected results:
John Citizen created a Translated revision

Additional info:
Apparently the reasoning is that "John Citizen might not have translated them, he only pushed them". This is flawed, as
- He may have actually translated them, and
- He is responsible for the document being uploaded, so he is responsible for the content.
More so, if someone can push a "Translated" revision, this will potentially end up in target content with inappropriate content with no recorded submitter.

Comment 1 David Mason 2014-11-12 03:15:19 UTC
Notes from developer meeting:

Decided to implement a simple fix:

 - change the label from showing "(someone offline)" to show the username of the user in the modified-by column in the database. This should happen when the translated-by column is null, which indicates that the translation must have been uploaded.
 - this only affects the UI for text flow target history.
 - this does not include any change to contributor statistics.


Discussed why uploaded translations do not contribute to "translated" statistic for the uploading user. The key point is that maintainers and translators can upload files that were translated by other users (such as in a separate project or importing from a different translation management system). The file formats we use do not include enough information to accurately infer which user translated each string.


Also discussed possible changes that may be implemented as separate enhancements:

 - add a statistics category to translator statistics showing uploaded translations.
 - change representation of the origin of a translation to a column for the type of origin (e.g. translated in editor, uploaded, TM merge, copytrans, machine translation), a timestamp, the user, and a nullable column to link to the copied translation for TM merge and copytrans.

Comment 2 Patrick Huang 2015-01-07 23:39:03 UTC
https://github.com/zanata/zanata-server/pull/659

Comment 3 Patrick Huang 2015-01-07 23:43:41 UTC
After investigation, the column "last modified by" IS null when pushed from client (when translation file i.e. po don't have a translator entry which has a Zanata recognized email). Therefore the requirement will change to following:
- old data remains the same with just label change: "(someone offline)" becomes "Anonymous" with special styling to differentiate with real user calling himself "Anonymous"
- new coming data after this bug will have last modified by field set to the uploader. Translated by field will remain null.

Comment 4 Damian Jansen 2015-01-09 05:31:43 UTC
Verified at 1bdb99277804f6135355d2459f8ee5a22d081021