[tools] testbot/web: Better initialize and check the Hours activity page parameter.
Francois Gouget
fgouget at codeweavers.com
Tue Mar 22 07:20:27 CDT 2022
Set the FormPage property descriptors list. This allows
FormPage::Validate() to do most of the validation work.
Treat "00" the same as "0".
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
testbot/web/Activity.pl | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/testbot/web/Activity.pl b/testbot/web/Activity.pl
index 9444779433..272215f958 100644
--- a/testbot/web/Activity.pl
+++ b/testbot/web/Activity.pl
@@ -27,28 +27,35 @@ our @ISA = qw(ObjectModel::CGI::FreeFormPage);
use POSIX qw(strftime);
use URI::Escape;
+use ObjectModel::BasicPropertyDescriptor;
use WineTestBot::Config;
use WineTestBot::Activity;
use WineTestBot::Log; # For Elapsed()
use WineTestBot::Utils;
use WineTestBot::VMs;
-
my $HOURS_DEFAULT = 12;
+
sub _initialize($$$)
{
my ($self, $Request, $RequiredRole) = @_;
$self->{start} = Time();
- $self->{hours} = $self->GetParam("Hours");
- if (!defined $self->{hours} or $self->{hours} !~ /^\d{1,3}$/)
- {
- $self->{hours} = $HOURS_DEFAULT;
- }
-
+ my @PropertyDescriptors = (
+ CreateBasicPropertyDescriptor("Hours", "Hours", !1, 1, "N", 3),
+ );
$self->SUPER::_initialize($Request, $RequiredRole);
$self->{Method} = "get";
+
+ if (!$self->GetParam("Hours") or !$self->Validate() or
+ !int($self->GetParam("Hours"))) # 00 case!
+ {
+ # This page always needs a valid value to calculate the cutoff. So just
+ # replace invalid values with the default (no error message is shown
+ # either).
+ $self->SetParam("Hours", $HOURS_DEFAULT);
+ }
}
sub GetPageTitle($$)
@@ -61,7 +68,8 @@ sub GetPageTitle($$)
sub GeneratePage($)
{
my ($self) = @_;
- if ($self->{hours} and $self->{hours} <= $HOURS_DEFAULT)
+
+ if ($self->GetParam("Hours") <= $HOURS_DEFAULT)
{
$self->{Request}->headers_out->add("Refresh", "60");
}
@@ -101,7 +109,7 @@ sub GenerateBody($)
# Generate a custom form to let the user specify the Hours field.
$self->GenerateFormStart();
- print "<div class='ItemProperty'><label>Analyze the activity of the past <div class='ItemValue'><input type='text' name='Hours' maxlength='3' size='3' value='$self->{hours}'/></div> hours.</label></div>\n";
+ print "<div class='ItemProperty'><label>Analyze the activity of the past <div class='ItemValue'><input type='text' name='Hours' maxlength='3' size='3' value='", $self->GetParam("Hours"), "'/></div> hours.</label></div>\n";
$self->GenerateFormEnd();
print "<h1>${ProjectName} Test Bot activity</h1>\n";
@@ -148,7 +156,7 @@ EOF
### Generate the HTML table with the newest record first
print "<tbody>\n";
- my ($Activity, $_Counters) = GetActivity($VMs, $self->{hours} * 3600);
+ my ($Activity, $_Counters) = GetActivity($VMs, $self->GetParam("Hours") * 3600);
for (my $Index = @$Activity; $Index--; )
{
my $Group = $Activity->[$Index];
--
2.30.2
More information about the wine-devel
mailing list