source: main/waeup.kofa/branches/uli-zc-async/src/waeup/kofa/applicants/viewlets.py @ 10021

Last change on this file since 10021 was 9211, checked in by uli, 12 years ago

Rollback r9209. Looks like multiple merges from trunk confuse svn when merging back into trunk.

  • Property svn:keywords set to Id
File size: 7.5 KB
Line 
1## $Id: viewlets.py 9211 2012-09-21 08:19:35Z uli $
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##
18import grok
19from waeup.kofa.interfaces import IKofaObject
20from waeup.kofa.students.viewlets import PrimaryStudentNavTab
21from waeup.kofa.browser.viewlets import (
22    ManageActionButton, PrimaryNavTab, AddActionButton)
23from waeup.kofa.applicants.interfaces import (
24    IApplicant, IApplicantsRoot, IApplicantsContainer,
25    IApplicantOnlinePayment
26    )
27from waeup.kofa.applicants.browser import (
28    ApplicantsRootPage, ApplicantsContainerPage, ApplicantManageFormPage,
29    ApplicantDisplayFormPage, OnlinePaymentDisplayFormPage,
30    ApplicantsContainerManageFormPage, ApplicantsStatisticsPage
31    )
32
33from waeup.kofa.interfaces import MessageFactory as _
34
35grok.context(IKofaObject) # Make IKofaObject the default context
36grok.templatedir('browser_templates')
37
38class ApplicantsAuthTab(PrimaryNavTab):
39    """Applicants tab in primary navigation.
40    """
41    grok.context(IKofaObject)
42    grok.order(3)
43    grok.require('waeup.viewApplicantsTab')
44    pnav = 3
45    tab_title = _(u'Applicants')
46
47    @property
48    def link_target(self):
49        return self.view.application_url('applicants')
50
51class ApplicantsAnonTab(ApplicantsAuthTab):
52    """Applicants tab in primary navigation.
53
54    Display tab only for anonymous. Authenticated users can call the
55    form from the user navigation bar.
56    """
57    grok.require('waeup.Anonymous')
58    tab_title = _(u'Application')
59
60    # Also zope.manager has role Anonymous.
61    # To avoid displaying this tab, we have to check the principal id too.
62    @property
63    def link_target(self):
64        if self.request.principal.id == 'zope.anybody':
65            return self.view.application_url('applicants')
66        return
67
68class MyApplicationDataTab(PrimaryStudentNavTab):
69    """MyData-tab in primary navigation.
70    """
71    grok.order(3)
72    grok.require('waeup.viewMyApplicationDataTab')
73    pnav = 3
74    tab_title = _(u'My Data')
75
76    @property
77    def link_target(self):
78        try:
79            container, application_number = self.request.principal.id.split('_')
80        except ValueError:
81            return
82        rel_link = '/applicants/%s/%s' % (container, application_number)
83        return self.view.application_url() + rel_link
84
85class ApplicantsRootSearchActionButton(ManageActionButton):
86    grok.order(1)
87    grok.context(IApplicantsRoot)
88    grok.view(ApplicantsRootPage)
89    grok.require('waeup.viewApplication')
90    text = _('Search applicants')
91    icon = 'actionicon_search.png'
92    target = '@@search'
93
94class ApplicantsRootManageActionButton(ManageActionButton):
95    grok.order(2)
96    grok.context(IApplicantsRoot)
97    grok.view(ApplicantsRootPage)
98    grok.require('waeup.manageApplication')
99    text = _('Manage application section')
100
101class ApplicantRegisterActionButton(ManageActionButton):
102    grok.order(1)
103    grok.context(IApplicantsContainer)
104    grok.view(ApplicantsContainerPage)
105    grok.require('waeup.Anonymous')
106    icon = 'actionicon_login.png'
107    text = _('Register for application')
108    target = 'register'
109
110class ApplicantsContainerAddActionButton(AddActionButton):
111    grok.order(1)
112    grok.context(IApplicantsContainer)
113    grok.view(ApplicantsContainerManageFormPage)
114    grok.require('waeup.manageApplication')
115    text = _('Add applicant')
116    target = 'addapplicant'
117
118class ApplicantsContainerStatisticsActionButton(ManageActionButton):
119    grok.order(2)
120    grok.context(IApplicantsContainer)
121    grok.view(ApplicantsContainerManageFormPage)
122    grok.require('waeup.viewApplicationStatistics')
123    icon = 'actionicon_statistics.png'
124    text = _('Container statistics')
125    target = 'statistics'
126
127class ApplicantsContainerStatisticsActionButton2(ApplicantsContainerStatisticsActionButton):
128    grok.order(3)
129    grok.view(ApplicantsContainerPage)
130
131class ApplicantsContainerManageActionButton(ManageActionButton):
132    grok.order(2)
133    grok.context(IApplicantsContainer)
134    grok.view(ApplicantsContainerPage)
135    grok.require('waeup.manageApplication')
136    text = _('Manage container')
137    target = 'manage'
138
139class ApplicantViewActionButton(ManageActionButton):
140    grok.context(IApplicant)
141    grok.view(ApplicantManageFormPage)
142    grok.require('waeup.viewApplication')
143    icon = 'actionicon_view.png'
144    text = _('View application record')
145    target = 'index'
146
147class ApplicantManageActionButton(ManageActionButton):
148    grok.order(1)
149    grok.context(IApplicant)
150    grok.view(ApplicantDisplayFormPage)
151    grok.require('waeup.manageApplication')
152    text = _('Manage application record')
153    target = 'manage'
154
155class ApplicantEditActionButton(ManageActionButton):
156    grok.order(2)
157    grok.context(IApplicant)
158    grok.view(ApplicantDisplayFormPage)
159    grok.require('waeup.handleApplication')
160    text = _('Edit application record')
161    target ='edit'
162
163    @property
164    def target_url(self):
165        """Get a URL to the target...
166        """
167        if self.context.locked or (
168            self.context.__parent__.expired and
169            self.context.__parent__.strict_deadline):
170            return
171        return self.view.url(self.view.context, self.target)
172
173class PDFActionButton(ManageActionButton):
174    grok.order(3)
175    grok.context(IApplicant)
176    grok.require('waeup.viewApplication')
177    icon = 'actionicon_pdf.png'
178    text = _('Download application slip')
179    target = 'application_slip.pdf'
180
181    @property
182    def target_url(self):
183        """Get a URL to the target...
184        """
185        if self.context.state in ('initialized', 'started'):
186            return
187        return self.view.url(self.view.context, self.target)
188
189class StudentCreateActionButton(ManageActionButton):
190    grok.order(4)
191    grok.context(IApplicant)
192    grok.require('waeup.manageApplication')
193    icon = 'actionicon_entrance.png'
194    text = _('Create student record')
195    target ='createstudent'
196
197    @property
198    def target_url(self):
199        """Get a URL to the target...
200        """
201        if self.context.state != 'admitted':
202            return
203        return self.view.url(self.view.context, self.target)
204
205class PaymentReceiptActionButton(ManageActionButton):
206    grok.order(1)
207    grok.context(IApplicantOnlinePayment)
208    grok.view(OnlinePaymentDisplayFormPage)
209    grok.require('waeup.viewApplication')
210    icon = 'actionicon_pdf.png'
211    text = _('Download payment slip')
212    target = 'payment_slip.pdf'
213
214    @property
215    def target_url(self):
216        #if self.context.p_state != 'paid':
217        #    return ''
218        return self.view.url(self.view.context, self.target)
219
220class ApprovePaymentActionButton(ManageActionButton):
221    grok.order(2)
222    grok.context(IApplicantOnlinePayment)
223    grok.view(OnlinePaymentDisplayFormPage)
224    grok.require('waeup.managePortal')
225    icon = 'actionicon_accept.png'
226    text = _('Approve payment')
227    target = 'approve'
228
229    @property
230    def target_url(self):
231        if self.context.p_state == 'paid':
232            return ''
233        return self.view.url(self.view.context, self.target)
Note: See TracBrowser for help on using the repository browser.