<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Script Tool Validation based on field name in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109337#M62716</link>
    <description>&lt;P&gt;I don't think we can avoid having lists here, even describe().fields is list of field objects.&amp;nbsp; But for fun we can condense it some more to result only one 'list' that will have the field or be empty, all in one line.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;self.params[1].enabled = False if not [f.name for f in arcpy.Describe(self.params[0].valueAsText).fields if f.name == "OS_TYPE"] else True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 20 Oct 2021 16:43:57 GMT</pubDate>
    <dc:creator>Anonymous User</dc:creator>
    <dc:date>2021-10-20T16:43:57Z</dc:date>
    <item>
      <title>Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109272#M62706</link>
      <description>&lt;P&gt;Proof of concept task here. I have had success enabling additional parameters if a dependent parameter met a certain qualification like so:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;  def updateParameters(self):
    if self.params[5].value == "Supplemental":
        self.params[6].enabled = True
    else:
        self.params[6].enabled = False&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I'd like to do something similar by evaluating the presence of an existing field in the first parameter (a feature layer). If the field is already present, then the following parameter is disabled:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;  def updateParameters(self):
    if self.params[0].value:
        StandsFields = arcpy.Describe(self.params[0].value).fields
        for field in StandsFields:
            if field.name == "OS_TYPE":
                self.params[1].enabled = False
            else:
                self.params[1].enabled = True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, the 2nd parameter is present no matter what.&lt;/P&gt;&lt;P&gt;Adapting this to a simple Python Window session works however:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;StandsFields = arcpy.Describe(FC).fields
for field in StandsFields:
    if field.name == "OS_TYPE":
        print("True")
True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've been searching around quite a bit here but no luck. Just barely getting into script tool validation. Any help is very much appreciated!&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 15:38:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109272#M62706</guid>
      <dc:creator>ZacharyHart</dc:creator>
      <dc:date>2021-10-20T15:38:26Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109284#M62708</link>
      <description>&lt;P&gt;try changing&lt;/P&gt;&lt;LI-CODE lang="python"&gt;self.params[0].value&lt;/LI-CODE&gt;&lt;P&gt;to be ValueAsText.&lt;/P&gt;&lt;LI-CODE lang="python"&gt;if self.params[0].valueAsText:
        StandsFields = arcpy.Describe(self.params[0].valueAsText).fields
        for field in StandsFields:
            self.params[1].enabled = False if field.name == "OS_TYPE" else True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 15:42:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109284#M62708</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-10-20T15:42:12Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109301#M62709</link>
      <description>&lt;P&gt;Same behavior...&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 15:51:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109301#M62709</guid>
      <dc:creator>ZacharyHart</dc:creator>
      <dc:date>2021-10-20T15:51:29Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109309#M62710</link>
      <description>&lt;P&gt;I think you are iterating over all fields and the last one's value is dictating if its false or true.&amp;nbsp; What you need to do is check if the name is in the list of field names:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;if self.params[0].valueAsText:
        StandsFields = arcpy.Describe(self.params[0].valueAsText).fields
        if "OS_TYPE" in [f.name for f in StandsFields]:
            self.params[1].enabled = False
        else:
            self.params[1].enabled = True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;or as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;if self.params[0].valueAsText:
        StandsFields = arcpy.Describe(self.params[0].valueAsText).fields
        self.params[1].enabled = False if "OS_TYPE" in [f.name for f in StandsFields] else True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 16:02:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109309#M62710</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-10-20T16:02:05Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109312#M62711</link>
      <description>&lt;P&gt;Thanks Jeff, that's fixed it! any reason why it was working in the python command window?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 16:02:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109312#M62711</guid>
      <dc:creator>ZacharyHart</dc:creator>
      <dc:date>2021-10-20T16:02:01Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109317#M62712</link>
      <description>&lt;P&gt;Nice!&amp;nbsp; It worked in the window because you isolated it in the conditional, skipping all other fields whose name was not "OS_TYPE".&amp;nbsp; If you had tested the field loop with the same if/else, you'd see each field's result printed and the last one in the iteration would be the value that the enabled variable would be left at.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 16:08:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109317#M62712</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-10-20T16:08:23Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109326#M62713</link>
      <description>&lt;P&gt;I had to go back and stare at that until I understood. FWIW, I avoided using list fields in the tool validation as I was getting an IO error, found a few posts out there and opted for describe instead.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 16:17:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109326#M62713</guid>
      <dc:creator>ZacharyHart</dc:creator>
      <dc:date>2021-10-20T16:17:19Z</dc:date>
    </item>
    <item>
      <title>Re: Script Tool Validation based on field name</title>
      <link>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109337#M62716</link>
      <description>&lt;P&gt;I don't think we can avoid having lists here, even describe().fields is list of field objects.&amp;nbsp; But for fun we can condense it some more to result only one 'list' that will have the field or be empty, all in one line.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;self.params[1].enabled = False if not [f.name for f in arcpy.Describe(self.params[0].valueAsText).fields if f.name == "OS_TYPE"] else True&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Oct 2021 16:43:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tool-validation-based-on-field-name/m-p/1109337#M62716</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-10-20T16:43:57Z</dc:date>
    </item>
  </channel>
</rss>

