[Zope-CMF] error on renaming a custom content type
Aaron Payne
aaron@aaronpayne.com
Sat, 3 Aug 2002 13:06:54 -0500
Hi,
On Saturday, August 3, 2002, at 10:37 AM, Florent Guillaume wrote:
>
> Yes, simply CMFDefault.Image. It should do all you need.
>
> If you still see a bug, then there's a problem, and you'll have to post
> your code so that we can check it.
>
> Florent
After subclassing CMFDefault.Image.Image I still see the errors upon
renaming the instance. I've included my python class code below.
class Biography(CMFDefault.Image.Image):
"""
A biography object with an image.
"""
meta_type='CMF Biography'
_isDiscussable = 1
icon = PortalContent.icon
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(CMFCorePermissions.View)
def __init__(self
, id
, title=''
, description=''
, cmf_member_owner = 1
, display_contact_info = 0
, bio_email = ''
, bio_text = ''
, birthday_month = ''
, birthday_day = ''
, birthday_year = ''
, first_name = ''
, middle_name = ''
, last_name = ''
, bio_title = ''
, address_1 = ''
, address_2 = ''
, city = ''
, state = ''
, province = ''
, zip = ''
, country = ''
, phone_number = ''
, website_url = ''
, file = ''
, content_type=''
, precondition=''
, subject=()
, contributors=()
, format='image/png'
, language='en-US'
, rights=''
):
OFS.Image.File.__init__( self, id, title, file
, content_type, precondition )
DefaultDublinCoreImpl.__init__(self)
self.id=id
self.setTitle(title)
self.setDescription(description)
self.cmf_member_owner=cmf_member_owner
self.display_contact_info=display_contact_info
self.bio_email=bio_email
self.bio_text=bio_text
self.birthday_month=birthday_month
self.birthday_day=birthday_day
self.birthday_year=birthday_year
self.first_name=first_name
self.middle_name=middle_name
self.last_name=last_name
self.bio_title=bio_title
self.address_1=address_1
self.address_2=address_2
self.city=city
self.state=state
self.province=province
self.zip=zip
self.country=country
self.phone_number=phone_number
self.website_url=website_url
self.content_type = content_type
self.precondition = precondition
self.subject = subject
self.contributors = contributors
self.format = format
self.language = language
self.rights = rights
security.declareProtected(BiographyPermissions.ChangeBiography,
'edit')
def edit(self
, title=None
, description=None
, cmf_member_owner = None
, display_contact_info = None
, bio_email = None
, bio_text = None
, birthday_month = None
, birthday_day = None
, birthday_year = None
, first_name = None
, middle_name = None
, last_name = None
, bio_title = None
, address_1 = None
, address_2 = None
, city = None
, state = None
, province = None
, zip = None
, country = None
, phone_number = None
, website_url = None
, content_type = None
, precondition = None
, subject = None
, contributors = None
, format = None
, language = None
, rights = None
):
"""\
"""
if title is not None:
self.setTitle(title)
if description is not None:
self.setDescription(description)
if cmf_member_owner is not None:
self.cmf_member_owner = cmf_member_owner
if display_contact_info is not None:
self.display_contact_info = display_contact_info
if bio_email is not None:
self.bio_email = bio_email
if bio_text is not None:
self.bio_text = bio_text
if birthday_month is not None:
self.birthday_month = birthday_month
if birthday_day is not None:
self.birthday_day = birthday_day
if birthday_year is not None:
self.birthday_year = birthday_year
if first_name is not None:
self.first_name = first_name
if middle_name is not None:
self.middle_name = middle_name
if last_name is not None:
self.last_name = last_name
if bio_title is not None:
self.bio_title = bio_title
if address_1 is not None:
self.address_1 = address_1
if address_2 is not None:
self.address_2 = address_2
if city is not None:
self.city = city
if state is not None:
self.state = state
if province is not None:
self.province = province
if zip is not None:
self.zip = zip
if country is not None:
self.country = country
if phone_number is not None:
self.phone_number = phone_number
if website_url is not None:
self.website_url = website_url
if content_type is not None:
self.content_type = content_type
if precondition is not None:
self.precondition = precondition
if subject is not None:
self.subject = subject
if contributors is not None:
self.contributors = contributors
if format is not None:
self.format = format
if language is not None:
self.language = language
if rights is not None:
self.rights = rights
self.reindexObject()
edit = WorkflowAction(edit)
def SearchableText(self):
"""
SeachableText is used for full text seraches of a portal.
It should return a concatanation of all useful text.
"""
return "%s %s %s %s %s %s %s %s %s %s %s %s" % \
(self.title, self.description, self.bio_text,
self.first_name,
self.middle_name, self.last_name, self.bio_title,
self.city,
self.state, self.province, self.country,
self.website_url)
def manage_afterAdd(self, item, container):
"""Both of my parents have an afterAdd method"""
OFS.Image.Image.manage_afterAdd(self, item, container)
PortalContent.manage_afterAdd(self, item, container)
def manage_beforeDelete(self, item, container):
"""Both of my parents have a beforeDelete method"""
PortalContent.manage_beforeDelete(self, item, container)
OFS.Image.Image.manage_beforeDelete(self, item, container)
def _isNotEmpty(self, file):
""" Do various checks on 'file' to try to determine non
emptiness. """
if not file:
return 0 # Catches None, Missing.Value, ''
elif file and (type(file) is type('')):
return 1
elif getattr(file, 'filename', None):
return 1
elif not hasattr(file, 'read'):
return 0
else:
file.seek(0,2) # 0 bytes back from end of file
t = file.tell() # Report the location
file.seek(0) # and return pointer back to 0
if t: return 1
else: return 0
def editimage(self, precondition='', file=''):
""" Update image. """
if precondition: self.precondition = precondition
elif self.precondition: del self.precondition
if self._isNotEmpty(file):
self.manage_upload(file)
self.setFormat(self.content_type)
editimage = WorkflowAction(editimage)
thanks,
Aaron
_______________________________
Aaron Payne
Silicon Prairie Ventures, Inc.
web: http://www.spvi.com
email: aaron@spvi.com
phone: 317.319.6108
fax: 317.351.1170