[Checkins] SVN: lovely.remotetask/trunk/ - allow '*' to select all possible times in the cron job add/edit forms

Juergen Kartnaller juergen at kartnaller.at
Sun Oct 28 04:56:43 EDT 2007


Log message for revision 81162:
  - allow '*' to select all possible times in the cron job add/edit forms
  - allow to cancel a delayed job
  - version bump
  

Changed:
  U   lovely.remotetask/trunk/CHANGES.txt
  U   lovely.remotetask/trunk/setup.py
  U   lovely.remotetask/trunk/src/lovely/remotetask/browser/job.py
  U   lovely.remotetask/trunk/src/lovely/remotetask/service.py

-=-
Modified: lovely.remotetask/trunk/CHANGES.txt
===================================================================
--- lovely.remotetask/trunk/CHANGES.txt	2007-10-28 03:05:43 UTC (rev 81161)
+++ lovely.remotetask/trunk/CHANGES.txt	2007-10-28 08:56:41 UTC (rev 81162)
@@ -3,8 +3,16 @@
 =============================
 
 
+2007/10/28 0.2.11:
+==================
+
+- allow '*' to select all possible times in the cron job add/edit forms
+
+- allow to cancel a delayed job
+
+
 2007/10/24 0.2.10:
-=================
+==================
 
 - avoided deprecation warnings
 

Modified: lovely.remotetask/trunk/setup.py
===================================================================
--- lovely.remotetask/trunk/setup.py	2007-10-28 03:05:43 UTC (rev 81161)
+++ lovely.remotetask/trunk/setup.py	2007-10-28 08:56:41 UTC (rev 81162)
@@ -3,7 +3,7 @@
 
 setup (
     name='lovely.remotetask',
-    version='0.2.10',
+    version='0.2.11',
     author = "Lovely Systems",
     author_email = "office at lovelysystems.com",
     description = "A remotetask client utiltiy for zope 3",

Modified: lovely.remotetask/trunk/src/lovely/remotetask/browser/job.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/browser/job.py	2007-10-28 03:05:43 UTC (rev 81161)
+++ lovely.remotetask/trunk/src/lovely/remotetask/browser/job.py	2007-10-28 08:56:41 UTC (rev 81162)
@@ -63,22 +63,50 @@
 
 class StringTupleWidget(TextWidget):
 
+    values = None
+
     def _toFormValue(self, input):
         if not input:
             return u''
         return u' '.join([str(v) for v in input])
 
     def _toFieldValue(self, input):
+        input = input.strip()
         if self.convert_missing_value and input == self._missing:
-            value = self.context.missing_value
-        else:
-            value = tuple([int(v) for v in input.split()])
-        return value
+            return self.context.missing_value
+        if self.values is not None and input == '*':
+            return self.values
+        return tuple([int(v) for v in input.split()])
 
 
-class CronJobEdit(formlib.form.EditForm):
-    """An edit view for cron jobs."""
+class HourWidget(StringTupleWidget):
 
+    values = tuple(range(0,24))
+
+
+class MinuteWidget(StringTupleWidget):
+
+    values = tuple(range(0,60))
+
+
+class DayOfMonthWidget(StringTupleWidget):
+
+    values = tuple(range(0,31))
+
+
+class MonthWidget(StringTupleWidget):
+
+    values = tuple(range(0,12))
+
+
+class DayOfWeekWidget(StringTupleWidget):
+
+    values = tuple(range(0,7))
+
+
+class CronJobFormBase(object):
+    """base settings for all cron job forms"""
+
     form_fields = formlib.form.Fields(ICronJob).select(
             'task',
             'hour',
@@ -88,17 +116,21 @@
             'dayOfWeek',
             'delay',
             )
-    form_fields['hour'].custom_widget = StringTupleWidget
-    form_fields['minute'].custom_widget = StringTupleWidget
-    form_fields['dayOfMonth'].custom_widget = StringTupleWidget
-    form_fields['month'].custom_widget = StringTupleWidget
-    form_fields['dayOfWeek'].custom_widget = StringTupleWidget
+    form_fields['hour'].custom_widget = HourWidget
+    form_fields['minute'].custom_widget = MinuteWidget
+    form_fields['dayOfMonth'].custom_widget = DayOfMonthWidget
+    form_fields['month'].custom_widget = MonthWidget
+    form_fields['dayOfWeek'].custom_widget = DayOfWeekWidget
 
-    inputForm = None
-
     base_template = formlib.form.EditForm.template
     template = ViewPageTemplateFile('cronjob.pt')
 
+
+class CronJobEdit(formlib.form.EditForm, CronJobFormBase):
+    """An edit view for cron jobs."""
+
+    inputForm = None
+
     def setUpWidgets(self, ignore_request=False):
         jobtask = component.queryUtility(self.context.__parent__.taskInterface,
                                        name=self.context.task)
@@ -145,29 +177,9 @@
                                              self.request)
 
 
-class AddCronJob(formlib.form.Form):
+class AddCronJob(formlib.form.Form, CronJobFormBase):
     """An edit view for cron jobs."""
 
-    form_fields = formlib.form.Fields(
-            ICronJob,
-            ).select(
-                'task',
-                'hour',
-                'minute',
-                'dayOfMonth',
-                'month',
-                'dayOfWeek',
-                'delay',
-                )
-    form_fields['hour'].custom_widget = StringTupleWidget
-    form_fields['minute'].custom_widget = StringTupleWidget
-    form_fields['dayOfMonth'].custom_widget = StringTupleWidget
-    form_fields['month'].custom_widget = StringTupleWidget
-    form_fields['dayOfWeek'].custom_widget = StringTupleWidget
-
-    base_template = formlib.form.EditForm.template
-    template = ViewPageTemplateFile('cronjob.pt')
-
     @formlib.form.action(u'Add')
     def handle_add_action(self, action, data):
         self.context.addCronJob(

Modified: lovely.remotetask/trunk/src/lovely/remotetask/service.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-10-28 03:05:43 UTC (rev 81161)
+++ lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-10-28 08:56:41 UTC (rev 81162)
@@ -92,7 +92,7 @@
         newjob = job.CronJob(jobid, task, input,
                 minute, hour, dayOfMonth, month, dayOfWeek, delay)
         self.jobs[jobid] = newjob
-        if delay is None:
+        if newjob.delay is None:
             newjob.status = interfaces.CRONJOB
         else:
             newjob.status = interfaces.DELAYED
@@ -124,7 +124,9 @@
                 break
         if jobid in self.jobs:
             job = self.jobs[jobid]
-            if job.status == interfaces.CRONJOB:
+            if (   job.status == interfaces.CRONJOB
+                or job.status == interfaces.DELAYED
+               ):
                 job.status = interfaces.CANCELLED
 
     def getStatus(self, jobid):



More information about the Checkins mailing list