]> mj.ucw.cz Git - moe.git/commitdiff
Allow to override a failed check (if configured).
authorMartin Mares <mj@ucw.cz>
Fri, 29 Jun 2007 15:33:57 +0000 (17:33 +0200)
committerMartin Mares <mj@ucw.cz>
Fri, 29 Jun 2007 15:33:57 +0000 (17:33 +0200)
TODO
submit/MO/Submit.pm
submit/contest

diff --git a/TODO b/TODO
index e219005fe87dedb796c88db0c294233fff5afe55..e323788593369b8705363076156c6276fa8cec55 100644 (file)
--- a/TODO
+++ b/TODO
@@ -17,7 +17,6 @@ Installer:
 - quotas
 
 New submitter:
-- contest: override failed check
 - contest: local history
 - contest: task status cache
 - contest: problems with SIGPIPE
index e571be3706ca8ee8f39c4faec7f25ae63bbbccc7..bae8b5f34ab1150a702360a66ff1ed0324794564 100644 (file)
@@ -24,6 +24,7 @@ sub new($) {
                "CACert" => "$mo/ca-cert.pem",
                "Trace" => defined $ENV{"MO_SUBMIT_TRACE"},
                "Checks" => 1,
+               "AllowOverride" => 1,
 #              "History" => "$home/.history",  # Keep submission history in this directory
                "RefreshTimer" => 60000,        # How often GUI sends STATUS commands [ms]
                "root" => $root,
index 29b046e5d8ea5c60e2c11e86c45b1a9c5746dbe8..a762d9c7248cc1f5a1afe06da40c0a9fe31646c2 100755 (executable)
@@ -270,6 +270,7 @@ my $subwin_vbox;
 my $subwin_label;
 my $bbutton_box;
 my $submitting_label;
+my $text_frame;
 my $status_label;
 my $check_only;
 my $submit_filename;
@@ -372,10 +373,42 @@ sub run_submit() {
        submit_ok();
 }
 
+sub checks_ok() {
+       if ($check_only) {
+               $status_label->set_markup("<span size='large'>Checked successfully</span>");
+               $submitting_label->set_markup("<span size='large'>The task has passed the checks.</span>");
+               finish_submit();
+               return;
+       }
+
+       ### FIXME: Record to local history here
+
+       $status_label->set_markup("<span size='large'>Submitting</span>");
+       $subwin->show_all;
+
+       # Continue when everything is displayed
+       Glib::Idle->add(sub {
+               $window->Gtk2::Gdk::flush;
+               run_submit();
+               return 0;
+       });
+}
+
+sub checks_override() {
+       $submitting_label = Gtk2::Label->new("Please wait...");
+       $subwin_vbox->pack_start_defaults($submitting_label);
+
+       $subwin->window->set_cursor($busy_cursor);
+       $bbutton_box->destroy;
+       $text_frame->destroy;
+       checks_ok();
+}
+
 sub checks_failed($) {
        my ($msg) = @_;
 
        $status_label->set_markup("<span size='large'>Check failed</span>");
+       $submitting_label->destroy;
 
        my $text_buffer = Gtk2::TextBuffer->new;
        $text_buffer->set_text($msg);
@@ -388,34 +421,31 @@ sub checks_failed($) {
        $text_scroll->set_policy("automatic", "automatic");
        $text_scroll->add($text_view);
 
-       my $text_frame = Gtk2::Frame->new("Checker log");
+       $text_frame = Gtk2::Frame->new("Checker log");
        $text_frame->add($text_scroll);
 
-       $submitting_label->destroy;
        $subwin_vbox->pack_start_defaults($text_frame);
 
-       finish_submit();
-}
-
-sub checks_ok() {
-       if ($check_only) {
-               $status_label->set_markup("<span size='large'>Checked successfully</span>");
-               $submitting_label->set_markup("<span size='large'>The task has passed the checks.</span>");
+       if ($check_only || !$conn->{"AllowOverride"}) {
                finish_submit();
                return;
        }
 
-       ### FIXME: Record to local history here
+       my $close_button = Gtk2::Button->new_from_stock('gtk-close');
+       $close_button->signal_connect(clicked => sub { end_submit(1) });
 
-       $status_label->set_markup("<span size='large'>Submitting</span>");
-       $subwin->show_all;
+       my $anyway_button = Gtk2::Button->new('Submit anyway');
+       $anyway_button->signal_connect(clicked => \&checks_override);
 
-       # Continue when everything is displayed
-       Glib::Idle->add(sub {
-               $window->Gtk2::Gdk::flush;
-               run_submit();
-               return 0;
-       });
+       $bbutton_box = Gtk2::HButtonBox->new;
+       $bbutton_box->pack_start_defaults($anyway_button);
+       $bbutton_box->pack_start_defaults($close_button);
+       $bbutton_box->set_border_width(5);
+       $subwin_vbox->pack_start($bbutton_box, 0, 0, 10);
+
+       ready("Ready");
+       $subwin->show_all;
+       $subwin->window->set_cursor(undef);
 }
 
 sub run_checks() {