[Checkins] SVN: bluebream/website/ continue example
Baiju M
baiju.m.mail at gmail.com
Sun Feb 7 20:55:56 EST 2010
Log message for revision 108863:
continue example
Changed:
U bluebream/website/docs/v1.0/tutorial2.rst
U bluebream/website/examples/v1.0/tut/stage4/src/tc/main/interfaces.py
U bluebream/website/examples/v1.0/tut/stage4/src/tc/main/ticket.py
-=-
Modified: bluebream/website/docs/v1.0/tutorial2.rst
===================================================================
--- bluebream/website/docs/v1.0/tutorial2.rst 2010-02-08 01:43:16 UTC (rev 108862)
+++ bluebream/website/docs/v1.0/tutorial2.rst 2010-02-08 01:55:56 UTC (rev 108863)
@@ -48,7 +48,73 @@
default=u"",
required=True)
+Next, you can implement this interface inside ``ticket.py``::
+ from zope.interface import implements
+ from tc.main.interfaces import ITicket
+ from tc.main.interfaces import ITicketContained
+ from zope.location.contained import Contained
+
+
+ class Ticket(Contained):
+
+ implements(ITicket, ITicketContained)
+
+ number = u""
+ summary = u""
+
+Then, register the interface & class::
+
+ <interface
+ interface=".interfaces.ITicket"
+ type="zope.app.content.interfaces.IContentType"
+ />
+
+ <class class=".ticket.Ticket">
+ <implements
+ interface="zope.annotation.interfaces.IAttributeAnnotatable"
+ />
+ <require
+ permission="zope.ManageContent"
+ interface=".interfaces.ITicket"
+ />
+ <require
+ permission="zope.ManageContent"
+ set_schema=".interfaces.ITicket"
+ />
+ </class>
+
+Now you can add a link in ``collectormain.pt`` like this::
+
+ <a href="@@add_ticket">Add Ticket</a>
+
+When you click on this link, it expects a view. You can create an
+AddForm inside ``views.py``::
+
+ from tc.main.interfaces import ITicket
+
+ from tc.main.ticket import Ticket
+
+ class AddTicket(form.AddForm):
+
+ form_fields = form.Fields(ITicket)
+
+ def createAndAdd(self, data):
+ number = data['number']
+ summary = data['summary']
+ ticket = Ticket()
+ self.context[number] = ticket
+ self.request.response.redirect('.')
+
+You can register the view inside `configure.zcml`::
+
+ <browser:page
+ for=".interfaces.ICollector"
+ name="add_ticket"
+ permission="zope.ManageContent"
+ class=".views.AddTicket"
+ />
+
.. _tut2-adding-tickets:
Change the look and feel
Modified: bluebream/website/examples/v1.0/tut/stage4/src/tc/main/interfaces.py
===================================================================
--- bluebream/website/examples/v1.0/tut/stage4/src/tc/main/interfaces.py 2010-02-08 01:43:16 UTC (rev 108862)
+++ bluebream/website/examples/v1.0/tut/stage4/src/tc/main/interfaces.py 2010-02-08 01:55:56 UTC (rev 108863)
@@ -1,8 +1,30 @@
from zope.interface import Interface
from zope.container.interfaces import IContainer
+from zope.container.interfaces import IContained
+from zope.app.container.constraints import ContainerTypesConstraint
+from zope.app.container.constraints import ItemTypePrecondition
+
from zope.schema import TextLine
from zope.schema import Text
+from zope.schema import Field
+
+class ITicket(Interface):
+ """Ticket - the main content object"""
+
+ number = TextLine(
+ title=u"Number",
+ description=u"Ticket number",
+ default=u"",
+ required=True)
+
+ summary = TextLine(
+ title=u"Summary",
+ description=u"Ticket summary",
+ default=u"",
+ required=True)
+
+
class ICollector(IContainer):
"""The main application container"""
@@ -18,18 +40,15 @@
default=u"",
required=False)
+ def __setitem__(name, object):
+ """Add an ICollector object."""
-class ITicket(Interface):
- """Ticket - the main content object"""
+ __setitem__.precondition = ItemTypePrecondition(ITicket)
- number = TextLine(
- title=u"Number",
- description=u"Ticket number",
- default=u"",
- required=True)
- summary = TextLine(
- title=u"Summary",
- description=u"Ticket summary",
- default=u"",
- required=True)
+class ITicketContained(IContained):
+ """Interface that specifies the type of objects that can contain
+ tickets. So a ticket can only contain in a collector."""
+
+ __parent__ = Field(
+ constraint = ContainerTypesConstraint(ICollector))
Modified: bluebream/website/examples/v1.0/tut/stage4/src/tc/main/ticket.py
===================================================================
--- bluebream/website/examples/v1.0/tut/stage4/src/tc/main/ticket.py 2010-02-08 01:43:16 UTC (rev 108862)
+++ bluebream/website/examples/v1.0/tut/stage4/src/tc/main/ticket.py 2010-02-08 01:55:56 UTC (rev 108863)
@@ -1,10 +1,12 @@
from zope.interface import implements
from tc.main.interfaces import ITicket
+from tc.main.interfaces import ITicketContained
+from zope.location.contained import Contained
-class Ticket(object):
+class Ticket(Contained):
- implements(ITicket)
+ implements(ITicket, ITicketContained)
number = u""
summary = u""
More information about the checkins
mailing list