Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 150 lines (123 sloc) 6.672 kb
32567d84 »
2001-06-13 Initial revision
1 Cheetah TODO list
5610e474 »
2001-06-13 added some instructions
2 -----------------
3 * If you are working on a task please put your initials at the end of the
4 description
9eb346f2 »
2001-07-13 updated the list
5 * When a task is completed please remember to note it in the CHANGES file
c79ab09a »
2002-09-12 *** empty log message ***
6 * Unresolved bugs are listed in the BUGS file. Resolved bugs are be listed
7 in the CHANGES file if the bug is considered significant enough and it
8 affected a released version of Cheetah.
5610e474 »
2001-06-13 added some instructions
9
e07ad1e6 »
2002-08-10 *** empty log message ***
10
448c9b00 »
2002-09-13 *** empty log message ***
11 Requirements for 1.0
e07ad1e6 »
2002-08-10 *** empty log message ***
12 =========================================================================
8e077f07 »
2002-10-04 *** empty log message ***
13 - write a formalized grammar for Cheetah in BNF (MO)
c79ab09a »
2002-09-12 *** empty log message ***
14 - update User's Guide about changes to SkeletonPage (no more #settings,
15 etc) (TR)
72fd4674 »
2002-10-04 *** empty log message ***
16 - Decide on Cheetah's 1.0 license and update the Users' Guide. (TR)
e07ad1e6 »
2002-08-10 *** empty log message ***
17
18
19 Other TODO Items
32567d84 »
2001-06-13 Initial revision
20 ================================================================================
d1a5287f »
2001-09-07 added notes and change the version number
21
8e077f07 »
2002-10-04 *** empty log message ***
22 - Debugging tools. $dumpSearchList() reduces each searchList element to a
23 Python primitive type (using dir() on non-dictionaries) and prints it using
24 pprint.pformat() with a comment before each: "*** searchList[1] ***".
25 Boolean argument 'all' adds local variables, builtins, etc. Boolean argument
26 'allExceptLarge' skips any element with >20 variables, printing a warning:
27 "skipping, ### variables".
28
99009bd1 »
2002-10-06 *** empty log message ***
29 - Reimplement filters so that they know the placeholder name:
30 def filter(self, val, name=None, **kw)
31 This should be the entire placeholder name as it appears in the
32 template?
33
73ce5a83 »
2002-03-28 *** empty log message ***
34 - revisit parsed #include directives. Are they necessary at all??
35 (This is a rhetorical question. They are necessary. However, the
36 Users' Guide needs better examples about when and when not to use
37 #include. Also, consider making '#include' do a raw include, and
38 something else do a parsed include ('#include parsed', '#include cheetah'?),
39 so that users get parsing only if they explicitly request it.
578d388f »
2002-03-26 updated
40
47eece1f »
2002-04-08 *** empty log message ***
41 - implement some better error handling for misformed #for, #if, #try directives,
42 etc. At the moment these errors are not caught until Python executes the
43 code.
6f5a89f5 »
2002-05-01 *** empty log message ***
44
45 - create better error message for bad code such as:
46 ##cache
47 This is a cached region. $voom
48 #end cache
49
1086d3ce »
2002-06-10 Elaborate whitespace-comment problem.
50 - Delete whitespace before a comment on the same line. The methods are
51 Parser.eatComment() and Parser.eatMultiLineComment(). It's already
52 working if the line contains 'STUFF#slurp ## comment'. Need to make
53 it work for 'STUFF ## comment' (but retain the EOL newline).
0beed839 »
2002-04-30 *** empty log message ***
54
55 - 'python setup.py uninstall'. This may require hacking an uninstall feature
56 into distutils.
57
cbdb049e »
2002-05-15 *** empty log message ***
58 - 'errorCatcher None' to stop catching errors in the middle of a template.
f4b3b514 »
2002-04-11 *** empty log message ***
59
982f7b91 »
2002-06-23 *** empty log message ***
60 - Finish up changes to #indent so that it matches the Users' Guide. (MO)
61
d1e57688 »
2002-05-18 *** empty log message ***
62
63 Rewrite the caching framework
64 =============================
65 - add #cache varyBy= (tied to Tavis' proposed caching framework for Webware)
66
67 - #cache test= with a one-variable test produces invalid Python (an empty
68 if-block). Example in Cheetah Developers' Guide, section
69 "#cache with test: expression and method conditions".
70
71 - #cache id= seems to be ignoring the ID and generating a random numeric
72 ID instead. Is it working? Do cache IDs have to be numeric?
73
74 - Other ideas in Tavis' head.
75
c79ab09a »
2002-09-12 *** empty log message ***
76 - Have an option to refresh the cache whenever an external
77 file is updated. This would allow a data structure to be kept in
78 sync whenever its text configuration file is changed.
79
55de2dbe »
2002-06-23 Comment.
80 #entry $func($arg1, $arg2="default", $**kw)
625de1dc »
2002-05-30 *** empty log message ***
81 ===============================================================================
55de2dbe »
2002-06-23 Comment.
82 Make a wrapper function in the .py template module that builds a searchList
83 from its positional arguments, then instantiates and fills a template and
84 returns the result. The preceding example would create a function thus:
85 def func(arg1, arg2="default", searchList=None, **kw):
625de1dc »
2002-05-30 *** empty log message ***
86 """Function docstring."""
55de2dbe »
2002-06-23 Comment.
87 sl = {'arg1': arg1, 'arg2': arg2}
88 if searchList is None:
89 searchList = [sl]
90 elif type(searchList) == types.ListType:
91 searchList.insert(0, sl)
92 else:
93 raise TypeError("arg 'searchList'")
94 t = TheTemplate(searchList=searchList, **kw)
625de1dc »
2002-05-30 *** empty log message ***
95 return str(t)
55de2dbe »
2002-06-23 Comment.
96 ##doc-entry: and #*doc-entry: comments are appended to the function docstring.
625de1dc »
2002-05-30 *** empty log message ***
97 Finally, make this function accessible directly from the shell.
98 If there are any non-option arguments on the command line, call the function
99 instead of filling the template the normal way.
55de2dbe »
2002-06-23 Comment.
100 This would perhaps make more sense as arguments to .respond(). But
101 .respond() has that pesky 'trans' argument that mustn't be interfered with,
102 and other programs may assume .respond() takes only one argument. Also,
103 when called via str(), str() cannot take arguments.
625de1dc »
2002-05-30 *** empty log message ***
104
105
63640d7b »
2002-06-10 *** empty log message ***
106 Upload File
107 ========================================================================
108 A mixin method in Cheetah.Utils (for Template) that handles file uploads --
109 these are too complicated for .webInput(). The method should do a "safe"
110 file upload; e.g., http://us3.php.net/manual/en/features.file-upload.php ,
111 within the limitations of Python's cgi module. The user has the choice of
112 three destinations for the file contents: (A) copied to a local
113 path you specify, (B) placed in a namespace variable like .cgiImport()
114 does, or (C) returned. (B) parallels .webInput, but (A) will certainly be
115 desirable situations where we just want to save the file, not read it into
116 memory. Reject files larger than a user-specified size or not in a list of
117 user-approved MIME types. Define appropriate exceptions for typical
118 file-upload errors. Method name .webUploadFileAsString?
119 One situation to support is when form has a text(area) field
120 related to a file-upload control on the same form, and the user has the choice
121 of typing into the field or uploading a text file. We need a method that
122 updates the text field's value if there is an uploaded file, but not if there
123 isn't. This may be handled by the regular method(s) or may require a separate
124 method.
625de1dc »
2002-05-30 *** empty log message ***
125
a08b6224 »
2002-05-14 *** empty log message ***
126
32567d84 »
2001-06-13 Initial revision
127 Test Suite
128 ================================================================================
129 - test cases for the SkeletonPage framework
0cbb2a25 »
2001-11-05 updated
130 - add cases that test the cheetah-compile script
09167370 »
2002-03-30 *** empty log message ***
131 - add cases that test the integration with WebKit. Since these must be called
132 from a running WebKit server, make a servlet that runs the tests and outputs
133 diagnostics to the browser.
32567d84 »
2001-06-13 Initial revision
134
135 Website
136 ================================================================================
8d09b72a »
2001-08-16 *** empty log message ***
137 - automate the documentation update
32567d84 »
2001-06-13 Initial revision
138 - See if we can get WebKit working on Sourceforge...
139
140 Examples
141 ================================================================================
142 - create some non-html code generation examples
0cbb2a25 »
2001-11-05 updated
143 - SQL
144 - LaTeX
145 - form email
6d1d0e12 »
2002-04-26 *** empty log message ***
146 - Template definitions in a database. .py template modules in a
147 database? Caching template classes and/or instances extracted from
148 a database.
149 - Pickled templates?
Something went wrong with that request. Please try again.