source: waeup_product/trunk/Widgets.py @ 202

Last change on this file since 202 was 199, checked in by joachim, 19 years ago

=profiles created upgrade to CPS3.4

  • Property svn:keywords set to Id
File size: 8.3 KB
RevLine 
[47]1#-*- mode: python; mode: fold -*-
[22]2from Globals import InitializeClass
[199]3##from Products.CPSSchemas.Widget import CPSWidgetType
[22]4from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
5from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
[199]6from Products.CPSSchemas.Widget import widgetRegistry
7##from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
[22]8from DateTime.DateTime import DateTime
9from AccessControl import getSecurityManager
10
11from re import compile
12
13from zLOG import LOG, DEBUG
14
[47]15class StudentIdWidget(CPSStringWidget): ###(
[22]16    """ StudentId Widget"""
17    meta_type = "StudentId Widget"
[57]18    digits = 8
19    digits_str = "N"*digits
20    letters = 2
21    letters_str = "L"*letters
[22]22   
23    def validate(self, datastructure, **kw):
24        """Validate datastructure and update datamodel."""
25       
26        valid = CPSStringWidget.validate(self, datastructure, **kw)
27        if not valid:
28            return 0
29        else:
30            widget_id = self.getWidgetId()
31            value = datastructure[widget_id]
32            err = 0
[57]33            if not (len(value) == self.digits + self.letters and value[:self.digits].isdigit() and value[self.digits:].isalpha()):
34                err = 'invalid Student Id in the format: %s%s with N = Number, L = Letter' % (self.digits_str,self.letters_str)
[22]35            if err:
36                datastructure.setError(widget_id, err)
37            else:
38                datamodel = datastructure.getDataModel()
39                datamodel[self.fields[0]] = value
40           
41            return not err
42
43InitializeClass(StudentIdWidget)
44
[199]45widgetRegistry.register(StudentIdWidget)
[22]46
[199]47##Class StudentIdWidgetType(CPSWidgetType):
48##    """Student Id String widget type."""
49##    meta_type = "StudentId  Widget Type"
50##    cls = StudentIdWidget
51
[47]52###)
53
54class ScratchcardPinWidget(CPSStringWidget): ###(
[22]55    """ ScratchcardPin Widget"""
[199]56    meta_type = "Scratchcard Pin Widget"
[22]57    valid_pins = ['123456',
58                  '234567',
59                  '345678',
60                  '456789',
61                  ]
62   
63    def validate(self, datastructure, **kw):
64        """Validate datastructure and update datamodel."""
65       
66        valid = CPSStringWidget.validate(self, datastructure, **kw)
67        if not valid:
68            return 0
69        else:
70            widget_id = self.getWidgetId()
71            value = datastructure[widget_id]
72            err = 0
[57]73            if not value in self.valid_pins:
[22]74                err = 'invalid Pin'
75            if err:
76                datastructure.setError(widget_id, err)
77            else:
78                datamodel = datastructure.getDataModel()
79                datamodel[self.fields[0]] = value
80            return not err
81
82InitializeClass(ScratchcardPinWidget)
[199]83widgetRegistry.register(ScratchcardPinWidget)
[22]84
[199]85##class ScratchcardPinWidgetType(CPSWidgetType):
86##    """Scratchcard Pin widget type."""
87##    meta_type = "Scratchcard Pin Widget Type"
88##    cls = ScratchcardPinWidget
[47]89
90###)
91
[22]92###########
93
[199]94##WidgetTypeRegistry.register(StudentIdWidgetType)
95##WidgetTypeRegistry.register(ScratchcardPinWidgetType)
[22]96
[47]97##class MyProjectWeekDateTimeWidget(CPSDateTimeWidget): ###(
[22]98##    """ """
99##    meta_type = "MyProject Week Date Time Widget"
100##   
101##    def validate(self, datastructure, **kw):
102##        """Validate datastructure and update datamodel."""
103##       
104##        valid = CPSDateTimeWidget.validate(self, datastructure, **kw)
105##        if not valid:
106##            return 0
107##        else:
108##            widget_id = self.getWidgetId()
109##            value = datastructure[widget_id]
110##            err = 0
111##            if value.dow() in (6, 0):
112##                err = 'Cette date ne correspond pas à un jour de semaine'
113##
114##            if err:
115##                datastructure.setError(widget_id, err)
116##
117##            return not err
118##
119##InitializeClass(MyProjectWeekDateTimeWidget)
120
121##class MyProjectWeekDateTimeWidgetType(CPSWidgetType):
122##    """MyProject Week DateTime widget type."""
123##    meta_type = "MyProject Week Date Time Widget Type"
124##    cls = MyProjectWeekDateTimeWidget
125##
126##InitializeClass(MyProjectWeekDateTimeWidgetType)
127##class MyProjectRestrictedStringWidget(CPSStringWidget):
128##    """ """
129##    meta_type = "MyProject Restricted String Widget"
130##   
131##    def validate(self, datastructure, **kw):
132##        """Validate datastructure and update datamodel."""
133##       
134##        valid = CPSStringWidget.validate(self, datastructure, **kw)
135##        if not valid:
136##            return 0
137##        else:
138##            widget_id = self.getWidgetId()
139##            value = datastructure[widget_id]
140##            err = 0
141##            if not (len(value) == 5 and value.isupper() and value.isalpha()):
142##                err = 'Cette chaîne ne correspond pas au format imposé'
143##
144##            if err:
145##                datastructure.setError(widget_id, err)
146##            else:
147##                datamodel = datastructure.getDataModel()
148##                datamodel[self.fields[0]] = value
149##           
150##            return not err
151##
152##InitializeClass(MyProjectRestrictedStringWidget)
153##
154##class MyProjectRestrictedStringWidgetType(CPSWidgetType):
155##    """MyProject Restricted String widget type."""
156##    meta_type = "MyProject Restricted String Widget Type"
157##    cls = MyProjectRestrictedStringWidget
158##
159##InitializeClass(MyProjectRestrictedStringWidgetType)
160##
161##
162##class MyProjectRestrictedEmailWidget(CPSEmailWidget):
163##    """ """
164##    meta_type = "MyProject Restricted Email Widget"
165##
166##    email_myproject_pat = compile(r"^([-\w_+])+\.([-\w_+])+@myproject\.fr$")
167##
168##    def validate(self, datastructure, **kw):
169##        """Validate datastructure and update datamodel."""
170##       
171##        valid = CPSEmailWidget.validate(self, datastructure, **kw)
172##        if not valid:
173##            return 0
174##        else:
175##            widget_id = self.getWidgetId()
176##            err, v = self._extractValue(datastructure[widget_id])
177##            LOG('MyProject: MyProjectWidgets.py', DEBUG, "Valeur de v : %s" % v)
178##            if not err and kw.get('layout_mode') != 'search' and \
179##              v and not self.email_myproject_pat.match(v):
180##                err = 'cpsschemas_err_email'
181##
182##            if err:
183##                datastructure.setError(widget_id, err)
184##            else:
185##                datamodel = datastructure.getDataModel()
186##                datamodel[self.fields[0]] = v
187##           
188##            return not err
189##
190##    def render(self, mode, datastructure, **kw):
191##        """Render in mode from datastructure."""
192##        return CPSStringWidget.render(self, mode, datastructure, **kw)
193##
194##InitializeClass(MyProjectRestrictedEmailWidget)
195##
196##class MyProjectRestrictedEmailWidgetType(CPSWidgetType):
197##    """MyProject Restricted String widget type."""
198##    meta_type = "MyProject Restricted Email Widget Type"
199##    cls = MyProjectRestrictedEmailWidget
200##
201##InitializeClass(MyProjectRestrictedEmailWidgetType)
202##
203##class MyProjectVisitTitleWidget(CPSStringWidget):
204##    """ """
205##    meta_type = "MyProject Visit Title Widget"
206##   
207##    def validate(self, datastructure, **kw):
208##        """Validate datastructure and update datamodel."""
209##       
210##        widget_id = self.getWidgetId()
211##        err = 0
212##        curr_date = DateTime()
213##        date = "%d.%d.%d" % (curr_date.day(), curr_date.month(), curr_date.year())
214##        user = getSecurityManager().getUser()
215##        value = 'Demande de visite du %s par %s' % (date,
216##             self.portal_directories.members.getEntry(user.getId()).get('fullname'))
217##        datamodel = datastructure.getDataModel()
218##        datamodel[self.fields[0]] = value
219##           
220##        return not err
221##
222##    def render(self, mode, datastructure, **kw):
223##        return ''
224##
225##InitializeClass(MyProjectVisitTitleWidget)
226##
227##class MyProjectVisitTitleWidgetType(CPSWidgetType):
228##    """MyProject Visit Title widget type."""
229##    meta_type = "MyProject Visit Title Widget Type"
230##    cls = MyProjectVisitTitleWidget
231##
232##InitializeClass(MyProjectVisitTitleWidgetType)
233
234#####################################################################################
235
236##WidgetTypeRegistry.register(MyProjectWeekDateTimeWidgetType)
237##WidgetTypeRegistry.register(MyProjectRestrictedStringWidgetType)
238##WidgetTypeRegistry.register(MyProjectRestrictedEmailWidgetType)
239##WidgetTypeRegistry.register(MyProjectVisitTitleWidgetType)
240##
[47]241
242###)
Note: See TracBrowser for help on using the repository browser.