Johan Carlsson wrote:

For anyone that might be interested in the update to my code (still only
parsely working):

Here is my code (which uses the Poll as base, that stuff has been removed though):

interfaces.py:

  from zope.interface import Interface
  from zope.schema import Object
  from zope.app.file.interfaces import IFile

from zope.security.proxy import removeSecurityProxy

  from zope.i18n import MessageIDFactory
  _ = MessageIDFactory('poll')

  class IPoll(Interface):

      file=Object(IFile, title=_('File'))

poll.py:

  from persistent import Persistent
  from interfaces import IPoll
  from zope.interface import implements, classImplements
  from zope.app.file.file import File

  class Poll(Persistent, object):
      implements(IPoll)


        def get_file(self):
            return self._file

        def set_file(self, file):
            self._file = removeSecurityProxy(file)

        file = property(get_file, set_file, None, 'fiddle file')



browser.py:

  from zope.interface import implements
  from zope.app.form.browser.editview import EditView
  from zope.app.form.browser.add import AddView
  from zope.app.form import CustomWidgetFactory
  from zope.app.form.browser import ObjectWidget

  from interfaces import IPoll


  from zope.app.file.file import File

  fw = CustomWidgetFactory(ObjectWidget, File)

  class PollEditView(EditView):
      __used_for__ = IPoll

      file_widget = fw

  class PollAddView(AddView):
      __used_for__ = IPoll

      file_widget = fw

configure.zcml:

<configure xmlns="http://namespaces.zope.org/zope";
    xmlns:browser="http://namespaces.zope.org/browser";
    i18n_domain="poll">

  <content class=".poll.Poll">
  <factory id="zope.app.demo.poll2" />

  <implements
    interface="zope.app.annotation.interfaces.IAttributeAnnotatable"
    />

  <require
    permission="zope.View"
    interface=".interfaces.IPoll"
    />

  <require
    permission="zope.ManageContent"
    set_schema=".interfaces.IPoll"
    />
  </content>

  <browser:addform
    schema=".interfaces.IPoll"
    label="Add a Poll"
    content_factory=".poll.Poll"
    name="AddPoll2.html"
    class=".browser.PollAddView"
    permission="zope.ManageContent" />

  <browser:addMenuItem
    title="Poll 2 Demo"
    description="Poll 2 Demo"
    class=".poll.Poll"
    view="AddPoll2.html"
    permission="zope.ManageContent"
    />

  <browser:editform
    schema=".interfaces.IPoll"
    class=".browser.PollEditView"
    label="Change a Poll"
    name="edit.html"
    menu="zmi_views" title="Edit"
    permission="zope.ManageContent" />
</configure>






--
Johan Carlsson          Tel: + 46 8 31 24 94
Colliberty              Mob: + 46 70 558 25 24
Torsgatan 72            Email: [EMAIL PROTECTED]
SE-113 37 STOCKHOLM


--
Johan Carlsson          Tel: + 46 8 31 24 94
Colliberty              Mob: + 46 70 558 25 24
Torsgatan 72            Email: [EMAIL PROTECTED]
SE-113 37 STOCKHOLM

_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to