Add grades tag
This commit is contained in:
parent
b34f3db750
commit
f4ce8c79e0
1 changed files with 86 additions and 0 deletions
|
@ -211,7 +211,93 @@ sub tag_document
|
||||||
|
|
||||||
sub tag_grades
|
sub tag_grades
|
||||||
{
|
{
|
||||||
|
my $creation = shift;
|
||||||
|
|
||||||
|
# From here, we have:
|
||||||
|
# 1: "defense"
|
||||||
|
# 2: $version
|
||||||
|
# 3: $id
|
||||||
|
# 4: $year
|
||||||
|
|
||||||
|
my $version = $_[2] // 1;
|
||||||
|
|
||||||
|
my $project_id = repository_name();
|
||||||
|
if ($_[3]) {
|
||||||
|
$project_id .= "-" . $_[3];
|
||||||
|
}
|
||||||
|
$project_id = lc $project_id;
|
||||||
|
$project_id =~ s/[^a-z0-9-_]/_/g;
|
||||||
|
|
||||||
|
my $year;
|
||||||
|
if ($_[4]) {
|
||||||
|
# Check on year
|
||||||
|
if ($_[4] !~ /^\d+$/) {
|
||||||
|
log ERROR, "project:*:* second argument is the year. Tag format: project:id:year";
|
||||||
|
}
|
||||||
|
|
||||||
|
$year = $_[4];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$year = LDAP::get_year;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine full tag
|
||||||
|
my $long_tag;
|
||||||
|
{
|
||||||
|
my $proj_id = $_[3] // "";
|
||||||
|
$long_tag = "grades,$version,$proj_id,$year";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($creation)
|
||||||
|
{
|
||||||
|
my $newref = $ARGV[2];
|
||||||
|
|
||||||
|
# Check file exists
|
||||||
|
my $content = qx(git show $newref:grades/grades.xml);
|
||||||
|
if ($?) {
|
||||||
|
log ERROR, "Impossible de trouver le fichier de notation.";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check DTD validity
|
||||||
|
if (check_xml(\$content, "http://acu.epita.fr/dtd/grading.dtd")) {
|
||||||
|
log ERROR, "Corrigez les erreurs du fichier grades.xml avant de lancer la génération des notes.";
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO: check user permissions
|
||||||
|
|
||||||
|
# Send data to intradata
|
||||||
|
log INFO, "Attente d'un processus de publication...";
|
||||||
|
if (my $err = Process::Client::launch("intradata_get", { action => "generate", type => "grades", id => $project_id, "year" => $year, "version" => $version }, { "grading.xml" => $content }))
|
||||||
|
{
|
||||||
|
if (${ $err } ne "Ok") {
|
||||||
|
log ERROR, "Erreur durant le processus de publication : " . ${ $err };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($long_tag)
|
||||||
|
{
|
||||||
|
qx(git tag -f $long_tag);
|
||||||
|
if (! $?) {
|
||||||
|
log INFO, "Tag long créé : $long_tag.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Is the long tag existing
|
||||||
|
qx(git tag | egrep "^$long_tag\$");
|
||||||
|
if ($?) {
|
||||||
|
log ERROR, "Tag long correspondant introuvable : $long_tag.";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($long_tag)
|
||||||
|
{
|
||||||
|
qx(git tag -d $long_tag);
|
||||||
|
if (! $?) {
|
||||||
|
log INFO, "Tag long supprimé : $long_tag.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub tag_project
|
sub tag_project
|
||||||
|
|
Reference in a new issue