Fix importing non owner comments

Temporarily chaning ownership of the ticket allows to post comment by any customer.
This commit is contained in:
Michal Čihař 2020-08-18 11:09:23 +02:00
parent af7d142da1
commit 0f8696adbb
2 changed files with 11 additions and 8 deletions

View file

@ -5,9 +5,6 @@ for everybody, you will probably have to customize it.
Known issues:
* Comments on issues from non creators are rejected by Zammad. This can be
workarounded by creating appropriate organizations in Zammad manually or
temporarily grainting Users group agent privilege.
* Disabled users from RT can not be accessed by API, thus will lack email
address and will fail to be created. Enable all users prior to the migration.
* Timestamps are not preserved. The Zammad API doesn't seem to allow this.

View file

@ -132,16 +132,16 @@ STATUSMAP = {"new": 1, "open": 2, "resolved": 4, "rejected": 4, "deleted": 4}
USERMAP = {}
for user in target.user.all():
USERMAP[user["email"].lower()] = user["login"]
USERMAP[user["email"].lower()] = user
def get_user(userdata):
def get_user(userdata, attr="login"):
email = userdata["EmailAddress"]
lemail = email.lower()
# Search existing users
if lemail not in USERMAP:
for user in target.user.search({"query": email}):
USERMAP[user["email"].lower()] = user["login"]
USERMAP[user["email"].lower()] = user
# Create new one
if lemail not in USERMAP:
kwargs = {"email": email}
@ -157,9 +157,9 @@ def get_user(userdata):
kwargs["lastname"] = last
kwargs["firstname"] = first
user = target.user.create(kwargs)
USERMAP[user["email"].lower()] = user["login"]
USERMAP[user["email"].lower()] = user
return USERMAP[lemail]
return USERMAP[lemail][attr]
# Create tickets
@ -204,6 +204,10 @@ for ticket in tickets:
"mime-type": data["ContentType"],
}
)
creator_id = get_user(users[item["Creator"]], "id")
chown = creator_id != new["customer_id"]
if chown:
target.ticket.update(new["id"], {"customer_id": creator_id})
TicketArticle(get_zammad(on_behalf_of=get_user(users[item["Creator"]]))).create(
{
"ticket_id": new["id"],
@ -212,3 +216,5 @@ for ticket in tickets:
"attachments": files,
}
)
if chown:
target.ticket.update(new["id"], {"customer_id": new["customer_id"]})