Multiple conditions not working

I want to run few tasks in shell if they satisfy a condition. Strangely the task runs if the second condition is satisfied even though the first one fails.

name: ods
shell: “/something {{state}}”
when: ((ods) and (not (ansible_hostname | search(“demlh*”))))
register: sss_ods_out
notify: output ods
ignore_errors: yes

Here sss_ods is a variable defined in a vars file. If I remove the latter condition the task would run but I want both the conditions to be satisfied for the task to run and I can’t understand where am I going wrong.

Firstly I'd try simplifying (and making it more readable) your when by making it a list. You also need to add a . to your pattern by the looks

When:
  - condition1
  - blah | search("pattern.*")