summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5202589)
raw | patch | inline | side by side (parent: 5202589)
| author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
| Sun, 2 Feb 2003 23:59:48 +0000 (23:59 +0000) | ||
| committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
| Sun, 2 Feb 2003 23:59:48 +0000 (23:59 +0000) |
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1484 57a73879-2fb5-44c3-a270-3262357dd7e2
| doc/customizing.txt | patch | blob | history |
diff --git a/doc/customizing.txt b/doc/customizing.txt
index 886e37a7f747da8b2f6a77a7612ec29da2e5d7dd..eb6b8adceeed1c70a49388a0f576c9aea12d2d35 100644 (file)
--- a/doc/customizing.txt
+++ b/doc/customizing.txt
Customising Roundup
===================
-:Version: $Revision: 1.71 $
+:Version: $Revision: 1.72 $
.. This document borrows from the ZopeBook section on ZPT. The original is at:
http://www.zope.org/Documentation/Books/ZopeBook/current/ZPT.stx
The code to do this is::
- actions = client.Client.actions + (
- ('edit_with_timelog', 'timelogEditAction'),
- )
+ class Client(client.Client):
+ ''' derives basic CGI implementation from the standard module,
+ with any specific extensions
+ '''
+ actions = client.Client.actions + (
+ ('edit_with_timelog', 'timelogEditAction'),
+ )
+
+ def timelogEditAction(self):
+ ''' Handle the creation of a new time log entry if necessary.
+
+ If we create a new entry, fake up a CGI form value for the
+ altered "times" property of the issue being edited.
+
+ Punt to the regular edit action when we're done.
+ '''
+ # if there's a timelog value specified, create an entry
+ if self.form.has_key(':timelog') and \
+ self.form[':timelog'].value.strip():
+ period = Interval(self.form[':timelog'].value)
+ # create it
+ newid = self.db.timelog.create(period=period)
+
+ # if we're editing an existing item, get the old timelog value
+ if self.nodeid:
+ l = self.db.issue.get(self.nodeid, 'times')
+ l.append(newid)
+ else:
+ l = [newid]
- def timelogEditAction(self):
- ''' Handle the creation of a new time log entry if necessary.
+ # now make the fake CGI form values
+ for entry in l:
+ self.form.list.append(MiniFieldStorage('times', entry))
- If we create a new entry, fake up a CGI form value for the altered
- "times" property of the issue being edited.
+ # punt to the normal edit action
+ return self.editItemAction()
+
+ you add this code to your Client class in your tracker's ``interfaces.py``
+ file. Locate the section that looks like::
- Punt to the regular edit action when we're done.
- '''
- # if there's a timelog value specified, create an entry
- if self.form.has_key(':timelog') and \
- self.form[':timelog'].value.strip():
- period = Interval(self.form[':timelog'].value)
- # create it
- newid = self.db.timelog.create(period=period)
-
- # if we're editing an existing item, get the old timelog value
- if self.nodeid:
- l = self.db.issue.get(self.nodeid, 'times')
- l.append(newid)
- else:
- l = [newid]
-
- # now make the fake CGI form values
- for entry in l:
- self.form.list.append(MiniFieldStorage('times', entry))
-
- # punt to the normal edit action
- return self.editItemAction()
+ class Client:
+ ''' derives basic CGI implementation from the standard module,
+ with any specific extensions
+ '''
+ pass
- you add this code to your Client class in your tracker's ``interfaces.py``
- file.
+ and insert this code in place of the ``pass`` statement.
5. You'll also need to modify your ``issue.item`` form submit action so it
- calls the time logging action we just created::
+ calls the time logging action we just created. The current template will
+ look like this::
+
+ <tr>
+ <td> </td>
+ <td colspan=3 tal:content="structure context/submit">
+ submit button will go here
+ </td>
+ </tr>
+
+ replace it with this::
<tr>
<td> </td>
</td>
</tr>
- Note that the "context/submit" command usually handles all that for you -
- isn't it handy? The important change is setting the action to
- "edit_with_timelog" for edit operations (where the item exists)
+ The important change is setting the action to "edit_with_timelog" for
+ edit operations (where the item exists)
6. We want to display a total of the time log times that have been accumulated
for an issue. To do this, we'll need to actually write some Python code,
We do this by adding a method to the TemplatingUtils class in our tracker
``interfaces.py`` module::
-
class TemplatingUtils:
''' Methods implemented on this class will be available to HTML
templates through the 'utils' variable.
total += time.period._value
return total
+ Replace the ``pass`` line as we did in step 4 above with the Client class.
As indicated in the docstrings, we will be able to access the
- ``totalTimeSpent`` method via the ``utils`` variable in our templates. See
+ ``totalTimeSpent`` method via the ``utils`` variable in our templates.
7. Display the time log for an issue::