Archived
1
0
Fork 0

Add a way to remove bonus/malus

This commit is contained in:
Mercier Pierre-Olivier 2013-10-02 19:45:48 +02:00
parent 663a77a084
commit f3904e62b2
4 changed files with 33 additions and 6 deletions

View file

@ -115,6 +115,14 @@ sub addId($$;$)
$self->{ids}{$key} = $value;
}
sub delId($$)
{
my $self = shift;
my $key = shift;
delete $self->{ids}{$key};
}
sub toString ($;$)
{
my $self = shift;

View file

@ -45,5 +45,6 @@ if ($#ARGV >= 1)
}
else
{
say "$0 <project_id> [project_year] <file> [files ...]";
say "$0 [-d] <project_id> [project_year] <file> [files ...]";
say "\t-d: delete bonus for listed logins (matching value if given)"
}

View file

@ -151,6 +151,7 @@ sub grades_new_bonus
my $args = shift;
my $project_id = $args->{param}{id};
my $delete = $args->{param}{delete} // 0;
my $year = $args->{param}{year} // LDAP::get_year;
if (! $project_id) {
@ -177,7 +178,9 @@ sub grades_new_bonus
log TRACE, $args->{files}{$kfile};
log TRACE, @lines;
my $value = 1;
my $value;
$value = 1 if (!$delete);
# Looking for a global value
if ($lines[0] =~ /^(\d+)$/) {
$value = $1;
@ -193,7 +196,11 @@ sub grades_new_bonus
my $tvalue = $2 // $value;
my $trace;
if ($delete) {
log DEBUG, "Deleting bonus for $login";
} else {
log DEBUG, "Applying bonus for $login:$tvalue";
}
if (-e "$basedir/$year/$project_id/traces/bonus/$login.xml") {
open my $xml, "<", "$basedir/$year/$project_id/traces/bonus/$login.xml" or croak $!;
@ -201,17 +208,28 @@ sub grades_new_bonus
$trace = Trace->new($xml);
close $xml;
}
elsif ($delete) {
next;
}
else {
$trace = Trace->new();
}
if ($delete) {
if ($tvalue && $tvalue == $trace->getIds($kbonus)) {
$trace->delId($kbonus);
} else {
$trace->delId($kbonus);
}
} else {
$trace->addId($kbonus, $tvalue);
}
log DEBUG, "Updating $basedir/$year/$project_id/traces/bonus/$login.xml";
open my $xml, ">", "$basedir/$year/$project_id/traces/bonus/$login.xml" or croak $!;
print $xml $trace->toString();
close $xml
close $xml;
}
else {
log WARN, "Invalid login $line, line skiped";

View file

@ -56,7 +56,7 @@ sub process
my @keys = keys %$ids;
my $def_i = $keys[0];
$def_i =~ s/^(.+)g.*$/\1/;
$def_i =~ s/^(.+)g.*$/$1/;
$ids->{$def_i.'_end_$LOGIN'} = undef;
$ids->{$def_i.'_end_group'} = undef;