[Zope] External Method Question

Tim Owen timowen@voyager.net
Sun, 27 Jan 2002 05:41:38 -0500


I have what should be a simple newbie question.  I need to validate an email
address (just syntax for now).  I found the following URL doing a Google
search on "zope email":

http://zope.nipltd.com/public/lists/zope-archive.nsf/0dec1f578f18f116802568a
b003585d2/a1398ea9c177a77d80256b0e00647852?OpenDocument

It includes sample Perl and Python code to validate email address syntax so
I created the following file in the Extensions directory to be called from
an external method and named it email_checker.py:

>>>

def valid_email(address, debug=None):

   import re
   rega = re.compile("^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$") #failure a
   regb = re.compile("^[^0-9a-zA-Z]|[^0-9a-zA-Z]$")            #failure b
   regc = re.compile("([0-9a-zA-Z]{1})\@.")                    #failure c
   regd = re.compile(".\@([0-9a-zA-Z]{1})")                    #failure d
   rege = re.compile(".\.\-.|.\-\..|.\.\..|.\-\-.")            #failure e
   regf = re.compile(".\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_.")     #failure f
   regg = re.compile(".\.([a-zA-Z]{2,3})$|.\.([a-zA-Z]{2,4})$")#failure g

   fail = None
   if rega.search(address) is None:
      fail = 'a'
   elif regb.search(address) is not None:
      fail = 'b'
   elif regc.search(address) is None:
      fail = 'c'
   elif regd.search(address) is None:
      fail = 'd'
   elif rege.search(address) is not None:
      fail = 'e'
   elif regf.search(address) is not None:
      fail = 'f'
   elif regg.search(address) is None:
      fail = 'g'
   if fail is not None:
      if debug:
         return address,fail,None
      else:
         return None
   if debug:
      return address,1,1
   else:
      return 1

<<<

Then I tried to create an external method from the ZMI with the following
definition:

>>>

Id: email_checker
Title: Email Address Validator
Module Name: email_checker
Function Name: valid_email

<<<

When I tried to save it I get the following error:

>>>

Zope Error
Zope has encountered an error while publishing this resource.

Error Type: SyntaxError
Error Value: invalid syntax (email_checker.py, line 1)
----------------------------------------------------------------------------
----
Troubleshooting Suggestions

The URL may be incorrect.
The parameters passed to this resource may be incorrect.
A resource that this resource relies on may be encountering an error.

<<<

I went through the Zope Book examples, but there is no assistance when
errors occur.  Just refers you to the Python web site for more details.
First, is there a better way to validate email addresses (I am not using
CMF)?  If not, what am I doing wrong with the external method?

Thanks in advance.
___________________
Tim Owen