File: AMC-association.pl

package info (click to toggle)
auto-multiple-choice 1.4.0-2~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 18,520 kB
  • sloc: perl: 23,839; xml: 20,920; cpp: 1,791; makefile: 472; ansic: 186; sh: 80
file content (97 lines) | stat: -rwxr-xr-x 2,384 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#! /usr/bin/perl
#
# Copyright (C) 2008-2017 Alexis Bienvenue <paamc@passoire.fr>
#
# This file is part of Auto-Multiple-Choice
#
# Auto-Multiple-Choice is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# Auto-Multiple-Choice is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Auto-Multiple-Choice.  If not, see
# <http://www.gnu.org/licenses/>.

use Getopt::Long;
use AMC::Basic;

my $cr_dir='';
my $liste='';
my $data_dir='';
my $list='';
my $set='';
my $student='';
my $copy=0;
my $id=undef;
my $raw='';

GetOptions("cr=s"=>\$cr_dir,
	   "liste=s"=>\$liste,
	   "data=s"=>\$data_dir,
	   "list!"=>\$list,
	   "raw!"=>\$raw,
	   "set!"=>\$set,
	   "student=s"=>\$student,
	   "copy=s"=>\$copy,
	   "id=s"=>\$id,
	   );

if($list) {
  require AMC::Data;

  my $data=AMC::Data->new($data_dir);
  my $assoc=$data->module('association');
  my $capture=$data->module('capture');
  $data->begin_read_transaction('ALST');
  my @list;
  if($raw) {
    @list=map { [$_->{student},$_->{copy}] } (@{$assoc->list()});
  } else {
    @list=$capture->student_copies();
  }
  print "Student\tID\n";
  for my $c (@list) {
    print studentids_string(@$c)."\t";
    my $manual=$assoc->get_manual(@$c);
    my $auto=$assoc->get_auto(@$c);
    if(defined($manual)) {
      print $manual;
      print " (manual";
      if(defined($auto)) {
	print ", auto=".$auto;
      }
      print ")\n";
    } elsif(defined($auto)) {
      print $auto." (auto)\n";
    } else {
      print "(none)\n";
    }
  }
  $data->end_transaction('ALST');
} elsif($set) {
  require AMC::Data;

  my $data=AMC::Data->new($data_dir);
  my $assoc=$data->module('association');
  $data->begin_transaction('ASET');
  $assoc->set_manual($student,$copy,$id);
  $data->end_transaction('ASET');
} else {
  require AMC::Gui::Association;

  my $g=AMC::Gui::Association::new('cr'=>$cr_dir,
				   'liste'=>$liste,
				   'data_dir'=>$data_dir,
				   'global'=>1,
				  );

  Gtk3->main;
}