Add a way to remove bonus/malus
This commit is contained in:
parent
663a77a084
commit
f3904e62b2
4 changed files with 33 additions and 6 deletions
|
@ -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;
|
||||
|
|
|
@ -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)"
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
|
|
Reference in a new issue