[tools] testbot/cgi: Better select which FormPage fields can be shown / edited.

Francois Gouget fgouget at codeweavers.com
Tue Mar 22 07:15:26 CDT 2022


Also better document why each type of field can or cannot be edited /
shown.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 testbot/lib/ObjectModel/CGI/FormPage.pm | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/testbot/lib/ObjectModel/CGI/FormPage.pm b/testbot/lib/ObjectModel/CGI/FormPage.pm
index 3ac62239d5..e432fcbbd2 100644
--- a/testbot/lib/ObjectModel/CGI/FormPage.pm
+++ b/testbot/lib/ObjectModel/CGI/FormPage.pm
@@ -208,6 +208,8 @@ sub GetInputType($$)
 {
   my ($self, $PropertyDescriptor) = @_;
 
+  # Note: Editing Detailrefs and Itemrefs is not supported which leaves only
+  # Basic and Enum property descriptors here.
   return $PropertyDescriptor->GetClass() eq "Enum" ? "select" :
          $PropertyDescriptor->GetType() eq "B" ? "checkbox" :
          $PropertyDescriptor->GetType() eq "textarea" ? "textarea" :
@@ -331,12 +333,20 @@ sub DisplayProperty($$)
 {
   my ($self, $PropertyDescriptor) = @_;
 
-  if ($PropertyDescriptor->GetClass() eq "Detailref")
-  {
-    return "";
-  }
-
-  return "rw";
+  return # Detailref fields point to a Collection of objects matching the
+         # primary key of this form data. As such they can neither be shown
+         # nor edited.
+         $PropertyDescriptor->GetClass() eq "Detailref" ? "" :
+         # Itemref fields are keys identifying other objects and thus would
+         # require careful validation if edited. Requiring users to manually
+         # type the appropriate key value would also be cumbersome so this is
+         # currently not supported. But they can be displayed.
+         $PropertyDescriptor->GetClass() eq "Itemref" ? "ro" :
+         # All other properties can be edited...
+         $PropertyDescriptor->GetClass() ne "Basic" ? "rw" :
+         $PropertyDescriptor->GetType() ne "S" ? "rw" :
+         # ...except autoincrement ones (shown as <unset> if undefined)
+         "ro";
 }
 
 sub GetActions($)
-- 
2.30.2




More information about the wine-devel mailing list