11 Eylül 2007 Salı

Zope Schemas?

Bugün zope3 schema konusuna biraz baktım.Oldukça güçlü bir altyapısı var.Zope,schema da neki demeyin okuyun :)Otomatik validation özellikleri falan geliştiriciye gerçekten çok büyük kolaylıklar sağlıyor. Ki küçük bir deneme yaptım :

Email validation kısmına dikkat etmek gerekir.Nasıl bir esneklik sağlıyor değil mi ama :)

import re
import zope.interface
import zope.schema as sc

class IContact(zope.interface.Interface):
""" Schema about contact information"""

first=sc.TextLine(title=u'FirstName')
last=sc.TextLine(title=u'LastName')

email=sc.TextLine(
title=u'Email Adress',
constraint=re.compile("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+
\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$").match
)


class Contact(object):
""" The real class"""
zope.interface.implements(IContact)

def __init__(self,fname,lname,email):
""" The initial information"""

self.first=fname
self.last=lname
self.email=email


if __name__=="__main__":
someone=Contact(u'Zoper',u'Man',u'zoper@gmail.com')

for field in sc.getFields(IContact).values():

bound=field.bind(someone)
#print bound.get(someone)
bound.validate(bound.get(someone))
print "Validated"