Jgreen has submitted this change and it was merged.
Change subject: otrs ticket exporter gets a 'skip autoqueued-to-Junk messages'
hack
......................................................................
otrs ticket exporter gets a 'skip autoqueued-to-Junk messages' hack
Change-Id: I12700bcb89110f1d17a6520d65ba1b83edd6701b
---
M files/otrs/otrs.TicketExport2Mbox.pl
1 file changed, 63 insertions(+), 75 deletions(-)
Approvals:
Jgreen: Checked; Looks good to me, approved
jenkins-bot: Verified
diff --git a/files/otrs/otrs.TicketExport2Mbox.pl
b/files/otrs/otrs.TicketExport2Mbox.pl
index 34f3636..e412398 100755
--- a/files/otrs/otrs.TicketExport2Mbox.pl
+++ b/files/otrs/otrs.TicketExport2Mbox.pl
@@ -30,9 +30,7 @@
use lib dirname($RealBin);
use lib dirname($RealBin) . '/Kernel/cpan-lib';
use lib dirname($RealBin) . '/Custom';
-
use Getopt::Long;
-
use Kernel::Config;
use Kernel::System::DB;
use Kernel::System::Encode;
@@ -42,7 +40,7 @@
use Kernel::System::Time;
# create common objects
-my %CommonObject = ();
+my (%CommonObject,$Help,@TicketIDs,@TicketNumbers,@ArticleIDs);
$CommonObject{ConfigObject} = Kernel::Config->new();
$CommonObject{EncodeObject} = Kernel::System::Encode->new(%CommonObject);
$CommonObject{LogObject} = Kernel::System::Log->new(
@@ -54,12 +52,9 @@
$CommonObject{DBObject} = Kernel::System::DB->new(%CommonObject);
$CommonObject{TicketObject} = Kernel::System::Ticket->new(%CommonObject);
-my ($Help,@TicketIDs,@TicketNumbers,@ArticleIDs);
-
GetOptions(
'help' => \$Help,
'mbox=s' => \$Mbox,
- 'ArticleID=s{,}' => \@ArticleIDs,
'TicketNumber=s{,}' => \@TicketNumbers,
'TicketID=s{,}' => \@TicketIDs,
);
@@ -72,86 +67,70 @@
}
usage() if defined $Help;
-usage() unless @ArticleIDs or @TicketIDs or @TicketNumbers;
+usage() unless @TicketIDs or @TicketNumbers;
-if (@TicketNumbers) {
- for my $TicketNumber (@TicketNumbers) {
- my $TicketID = $CommonObject{TicketObject}->TicketIDLookup(
- TicketNumber => $TicketNumber,
- UserID => 1,
- );
- if (defined $TicketID) {
- push @TicketIDs, $TicketID;
- } else {
- $CommonObject{LogObject}->Log(
- Priority => 'notice',
- Message => "Unable to find TicketNumber
$TicketNumber.",
- );
- }
+for my $TicketNumber (@TicketNumbers) {
+ my $TicketID = $CommonObject{TicketObject}->TicketIDLookup(
+ TicketNumber => $TicketNumber,
+ UserID => 1,
+ Silent => 0,
+ );
+ if (defined $TicketID) {
+ push @TicketIDs, $TicketID;
+ } else {
+ printlog("Unable to find TicketNumber $TicketNumber.");
}
}
-if (@TicketIDs) {
- for my $TicketID (@TicketIDs) {
- my $TicketNumber =
$CommonObject{TicketObject}->TicketNumberLookup(
+for my $TicketID (@TicketIDs) {
+ my %Ticket = $CommonObject{TicketObject}->TicketGet(
+ TicketID => $TicketID,
+ UserID => 1,
+ Silent => 0,
+ );
+ # this is a horrible quick & dirty hack to skip messages that appear to
have been
+ # automatically queued into Junk
+ if (($Ticket{'Queue'} eq 'Junk') and ($Ticket{'Changed'} eq
$Ticket{'Created'})) {
+ printlog("Skip TicketID $TicketID, it was already autoqueued to
Junk.",'debug');
+ } else {
+ my @TicketArticleIds =
$CommonObject{TicketObject}->ArticleIndex(
TicketID => $TicketID,
- UserID => 1,
+ UserID => 1,
+ Silent => 0,
);
- if (defined $TicketNumber) {
- my @TicketArticleIds =
$CommonObject{TicketObject}->ArticleIndex(
- TicketID => $TicketID,
- UserID => 1,
- );
- push @ArticleIDs, @TicketArticleIds,
- } else {
- $CommonObject{LogObject}->Log(
- Priority => 'notice',
- Message => "Unable to find TicketID
$TicketID.",
- );
- }
- }
-}
-
-if (@ArticleIDs) {
- my $DoneArticleIDs;
- for my $ArticleID (@ArticleIDs) {
- next if defined $DoneArticleIDs->{$ArticleID};
- my $PlainMessage = $CommonObject{TicketObject}->ArticlePlain(
- ArticleID => $ArticleID,
- UserID => 1,
- );
- if (defined $PlainMessage) {
- my $CleanPlainMessage = cleanup($PlainMessage);
- if (open MBOX, ">> $Mbox") {
- print MBOX "$CleanPlainMessage\n";
- close MBOX;
- $CommonObject{LogObject}->Log(
- Priority => 'debug',
- Message => "ArticleID $ArticleID
written to $Mbox.",
- );
- } else {
- $CommonObject{LogObject}->Log(
- Priority => 'error',
- Message => "can't write to $Mbox.",
- );
- exit;
+ if (@TicketArticleIds) {
+ for my $ArticleID (@TicketArticleIds) {
+ printArticle($ArticleID);
}
} else {
- $CommonObject{LogObject}->Log(
- Priority => 'notice',
- Message => "No plain message found for
ArticleID $ArticleID.",
- );
+ printlog("Unable to find articles for TicketID
$TicketID.");
}
- $DoneArticleIDs->{$ArticleID} = 1;
}
-} else {
- $CommonObject{LogObject}->Log(
- Priority => 'notice',
- Message => "No ArticleIDs found.",
- );
}
+
exit;
+sub printArticle {
+ my $ArticleID = shift;
+ my $PlainMessage = $CommonObject{TicketObject}->ArticlePlain(
+ ArticleID => $ArticleID,
+ UserID => 1,
+ Silent => 0,
+ );
+ if (defined $PlainMessage) {
+ my $CleanPlainMessage = cleanupArticle($PlainMessage);
+ if (open MBOX, ">> $Mbox") {
+ print MBOX "$CleanPlainMessage\n";
+ close MBOX;
+ printlog("ArticleID $ArticleID written to
$Mbox.",'debug');
+ } else {
+ printlog("can't write to $Mbox.",'error');
+ exit;
+ }
+ } else {
+ printlog("No plain message found for ArticleID $ArticleID.");
+ }
+}
sub usage {
print "\notrs.TicketExport2Mbox.pl - export messages to mbox
format.\n\n" .
@@ -161,14 +140,13 @@
"$0 [options]\n" .
" --help display this option help\n" .
" --mbox /path/to/mbox mbox output file (default
$Mbox)\n" .
- " --ArticleID no1 no2 no3 export messages by
ArticleID\n" .
" --TicketID no1 no2 no3 export messages by
TicketID\n" .
" --TicketNumber no1 no2 no3 export messages by
TicketNumber\n\n";
exit;
}
# otrs messes with multiline headers, undo that
-sub cleanup {
+sub cleanupArticle {
my $msg;
my $position = 'head';
for my $line (split /^/, shift) {
@@ -181,3 +159,13 @@
}
return $msg;
}
+
+sub printlog {
+ my $msg = $_[0] ? $_[0] : '';
+ my $priority = $_[1] ? $_[1] : 'notice';
+ $CommonObject{LogObject}->Log(
+ Priority => $priority,
+ Message => $msg,
+ );
+}
+
--
To view, visit https://gerrit.wikimedia.org/r/81708
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I12700bcb89110f1d17a6520d65ba1b83edd6701b
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Jgreen <[email protected]>
Gerrit-Reviewer: Jgreen <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits