source: main/ikobacustom.pcn/trunk/src/ikobacustom/pcn/customers/contracts.py @ 12390

Last change on this file since 12390 was 12385, checked in by Henrik Bettermann, 10 years ago

Probably we need only one contract class and category. But one never knows.

  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1## $Id: contracts.py 12385 2015-01-03 18:22:38Z henrik $
2##
3## Copyright (C) 2014 Uli Fouquet & Henrik Bettermann
4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
8##
9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
13##
14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
18"""
19Customer contract components.
20"""
21
22import grok
23from zope.component.interfaces import IFactory
24from zope.interface import implementedBy
25from waeup.ikoba.utils.helpers import attrs_to_fields
26from waeup.ikoba.customers.interfaces import ICustomerNavigation
27from waeup.ikoba.customers.contracts import ContractBase
28from ikobacustom.pcn.interfaces import MessageFactory as _
29from ikobacustom.pcn.customers.interfaces import (
30    IPCNContract, IPCNContractEdit, IPCNContractProcess)
31
32
33class PCNContract(ContractBase):
34    """This is a sample contract.
35    """
36
37    grok.implements(
38        IPCNContractProcess,
39        IPCNContract,
40        IPCNContractEdit,
41        ICustomerNavigation)
42
43    contract_category = 'license'
44
45    form_fields_interface = IPCNContract
46
47    edit_form_fields_interface = IPCNContractEdit
48
49    check_docs_interface = IPCNContract
50
51PCNContract = attrs_to_fields(PCNContract)
52
53
54# Contracts must be importable. So we might need a factory.
55class PCNContractFactory(grok.GlobalUtility):
56    """A factory for contracts.
57    """
58    grok.implements(IFactory)
59    grok.name(u'waeup.PCNContract')
60    title = u"Create a new contract.",
61    description = u"This factory instantiates new sample contract instances."
62
63    def __call__(self, *args, **kw):
64        return PCNContract(*args, **kw)
65
66    def getInterfaces(self):
67        return implementedBy(PCNContract)
Note: See TracBrowser for help on using the repository browser.