source: main/waeup.futminna/trunk/src/waeup/futminna/applicants/applicant.py @ 10196

Last change on this file since 10196 was 10146, checked in by Henrik Bettermann, 12 years ago

If an applicant is removed also pdf files of this applicant have to be removed.

  • Property svn:keywords set to Id
File size: 2.3 KB
Line 
1## $Id: applicant.py 10146 2013-05-02 20:01:17Z henrik $
2##
3## Copyright (C) 2011 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
19import grok
20from zope.interface import implementedBy
21from zope.component import getUtility
22from waeup.kofa.interfaces import IExtFileStore
23from waeup.kofa.applicants.applicant import ApplicantFactory
24from waeup.kofa.utils.helpers import attrs_to_fields
25from kofacustom.nigeria.applicants.applicant import NigeriaApplicant
26from waeup.futminna.applicants.interfaces import(
27    ICustomApplicant, ICustomUGApplicantEdit, ICustomPGApplicantEdit, IPUTMEApplicantEdit)
28
29@grok.subscribe(ICustomApplicant, grok.IObjectRemovedEvent)
30def custom_handle_applicant_removed(applicant, event):
31    """If an applicant is removed also pdf files of this applicant are removed.
32    """
33    file_store = getUtility(IExtFileStore)
34    file_store.deleteFileByContext(applicant, attr='extraform.pdf')
35    file_store.deleteFileByContext(applicant, attr='refereeform.pdf')
36    return
37
38class CustomApplicant(NigeriaApplicant):
39
40    grok.implements(ICustomApplicant, ICustomUGApplicantEdit,
41        ICustomPGApplicantEdit, IPUTMEApplicantEdit)
42    grok.provides(ICustomApplicant)
43
44# Set all attributes of CustomApplicant required in ICustomApplicant as field
45# properties. Doing this, we do not have to set initial attributes
46# ourselves and as a bonus we get free validation when an attribute is
47# set.
48CustomApplicant = attrs_to_fields(CustomApplicant)
49
50class CustomApplicantFactory(ApplicantFactory):
51    """A factory for customized applicants.
52    """
53
54    def __call__(self, *args, **kw):
55        return CustomApplicant()
56
57    def getInterfaces(self):
58        return implementedBy(CustomApplicant)
Note: See TracBrowser for help on using the repository browser.