File: ChangeLog

package info (click to toggle)
nevow 0.3.0-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 940 kB
  • ctags: 2,089
  • sloc: python: 8,635; makefile: 15
file content (265 lines) | stat: -rw-r--r-- 9,971 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
2004-09-26	Donovan Preston <dp@divmod.org>

	* Added nevow.inevow.IQ interface, an interface for querying the
	stan DOM. Eventually, this interface will contain APIs for doing
	traditional DOM introspection, such as iterating children,
	examining tag names, and examining attributes. For now, it contains
	only the patternGenerator, onePattern, and allPatterns APIs. These
	APIs have been deprecated from Context.

	The main benefit of this is the ability to do:

		IQ(loaders.xmlfile(...)).patternGenerator(...)

	which would be nice for creating "pattern library" files containing
	common skin idioms which can then be copied and used throughout
	the app.

2004-09-25	Donovan Preston <dp@divmod.org>

	* Chatola received a major facelift, bringing it from cool demo
	up to almost a full fledged web-based chat server. The helper API
	LiveEvil.call(...) was added, which deprecates 
	LiveEvil.sendScript(callJS(...))

2004-09-23	Tommi Virtanen	<tv@twistedmatrix.com>

	* Make guard.SessionWrapper store its URL  location in all requests it
	passes to its children. This allows the children know where to post
	the __login__ and __logout__ forms, even deep inside the resource
	tree (fixes issue59).

	* Guard now works as a non-root resource, with help from the above
	change. Semantics of __login__ clarified in unit tests; if your guard
	is at /foo, posting to /foo/__login__ redirects to /foo, and posting
	to /foo/__login__/ redirects to /foo/. The two unit tests that failed
	earlier now pass (with that change in their __login__ URLs).

	* If URL-based sessions are used, login no longer loses session
	information due to redirect to / (fixes issue56).

2004-09-20	Matt Goodall <matt@pollenation.net>

	* Added URL.secure() method to make switching between http and 
	https easier.

2004-09-08	Donovan Preston	<dp@divmod.org>

	* Nevow now includes a very simple proof-of-concept WSGI Application 
	implementation, and can be used with no Twisted dependency. Nevow can 
	also be used to write CGIs, either using a simple CGI WSGI gateway 
	(which supports URL traversal), or by using Page.renderString (which does not).

	* Two new context interfaces, ICurrentSegments and IRemainingSegments, 
	replace the need to examine the Request prepath and postpath attributes
	directly.

	* ISerializable is deprecated, and has been replaced with a simple 
	Flattener registry. nevow.flat.registerFlattener and 
	nevow.flat.getFlattener have been added to support this.

2004-09-06	Donovan Preston	<dp@divmod.org>

	* BACKWARDS INCOMPATIBLE CHANGE. Page.configurable_ *always* returns
	self, and a new Page.configurable_original *always* returns
	self.original. If you were relying on Page.configurable_'s
	introspection behavior and are now getting errors about adapting
	to IConfigurable, change your renderForms() calls to:

		renderForms('original')

	This causes Page.configurable_original to be invoked and
	introspected for form rendering.

2004-08-23	Donovan Preston <dp@divmod.org>

	* LivePage uses a simpler implementation strategy which requires
	the browser to make one request per output event. As a result,
	LivePage now works on Mozilla, Safari, and Internet Explorer Windows.

2004-08-05	Donovan Preston <dp@divmod.org>

	* Implemented support for IFoo(ctx) synonym syntax. It does the
	same thing as ctx.locate(IFoo)

	* Removed Resource Generators, a feature of NevowSite that nobody
	used and wasn't really useful.

	* Changed all inevow.IResource apis to take a Context object
	where they used to take the request. Remembering objects in
	PageContexts is now much easier, and fewer hacks are required to
	build the context chain. The context chain now looks like:

		SiteContext->RequestContext->PageContext(s)->WovenContext(s)

2004-7-28	Donovan Preston <dp@divmod.org>

	* Parameterize data_* methods in the same way as render_* methods.
	Patch by k3mper.

	For example, <div nevow:data="foo bar,baz" /> will cause 
	data_foo(self, bar, baz) to be called with the strings "bar" and
	"baz". This data method should return a callable taking ctx, data.
	The return value of this callable will be remembered as IData at
	this point in the context stack.

	* Added list-slicing support to ListContainer. You may now use
	list slicing syntax in a data directive in addition to a simple
	index. For example:

	def data_aList(self, ctx, data):
		return ["Buckle", "My", "Shoe"]

	<div nevow:data="aList">
		<span nevow:data="1:-1" nevow:render="string" />
	</div>

	Will render as <div><span>My</span></div>

2004-7-20	Matt Goodall <matt@pollenation.net>

	* Modified sax loader to retain doctypes, comments and xmlns attributes. 
	It's now possible to build XHTML valid pages :).

	xmlns attributes are always kept but there are options to ignore the doctype
	and comment (at the request of foom, not sure why yet). Right now, the default
	is to retain doctypes and comments but you can use the ignoreDocType and
	ignoreComment args to the xml loaders and flatsax parse functions. This bit
	may change.

	* Add a URL -> IResource adapter that performs a HTTP redirect. URLs can then
	be returned from locateChild().

2004-06-07	Donovan Preston <dp@divmod.org>

	* Added nevow.canvas, an experimental module similar to LivePage
	which provides a Python server-side API for drawing arbitrary lines,
	curves, and text in the browser. The implementation is socket-based
	and asynchronous, so the server can issue drawing commands to the
	client at any time.

	The idea is to provide a server-side API to the Python programmer 
	and shield them from implementation details, but the current
	implementation uses a pre-compiled Flash movie (which never changes;
	we are not generating Flash bytecodes). An implementation using SVG
	or Safari's Canvas (nevow.canvas was written before the Safari Canvas
	announcement) would be possible.

2004-05-26	Donovan Preston	<dp@divmod.org>

	* Add URLOverlay.keep,  an API which lets you specify which query args 
	will be carried on from the current page render into the new URL.

2004-05-24	Matt Goodall <matt@pollenation.net>

	* Extracted Fragment from Page. Hopefully,  it will make it more obvious 
	that embedding an object with data_ and render_ methods in a stan tree is
	possible without using something as "heavy" as Page which is really meant
	to be a web resource.

2004-05-23	Donovan Preston	<dp@divmod.org>

	* Added some useful APIs to LiveEvil for manipulating the client-side
	page:

		- flt(stan): Flatten some stan, quoting apostrophes as
		as appropriate for embedding in javascript

		- set(what, to): Set the contents of the client-side node
		with the id 'what' to the stan 'to'.

		- append(where, what): Append the stan 'what' to the client-
		side node with the id 'where'

		- alert(what): Show an alert to the user with the text "what"

2004-05-19	Jonathan Simms	<slyphon@divmod.com>

	* 0.2 released.

2004-05-14	Donovan Preston	<dp@divmod.org>

	* nevow.url.URLPath is renamed nevow.url.URL

	* URL objects are now lazier about casting things to strings; they will 
	keep track of path segments in a list and defer to the nevow rendering 
	machinery to do the conversion; This means you can do things like 
	here.child(deferred) or here.child(function)

	* URL objects have a better api for manipulating query arguments
	    - add(key, value=None) adds a new query arg at the end; the value may 
	      be None if only a query key needs to be added
	    - replace(key, value) removes all occurrences of 'key' and inserts a 
              new (key, value) at the same location as the previous first 
              occurrence of key
	    - clear() clears all args

2004-05-06	Donovan Preston <dp@divmod.org>

	* Merged freeform-patterned branch, a large formless/freeform refactor.
	It is now possible to influence the rendering of forms by providing
	"patterns" to renderForms.

	* Formless is now a top-level package. Freeform has been renamed
	formless.webform. It should be possible to use formless outside
	the context of nevow for doing things such as validating network
	input based on method argument type annotations.

	* TypedInterface, autocallable, and all the Typed subclasses are now
	in the formless.annotate module.

2004-04-30	Donovan Preston <dp@divmod.org>

	* Created nevow.blocks, a module containing helpful code for working
	around display: inline-block bugs in Mozilla.

2004-04-27	Donovan Preston <dp@divmod.org>

	* IRenderer.__call__ was renamed IRenderer.rend to be more explicit.

2004-04-21	Donovan Preston	<dp@divmod.org>

	* Implemented nevow.flat.flatten and nevow.flat.precompile, functions
	useful for using stan outside of the context of Page classes. Useful
	for generating some XML or even raw text; use it any time you want
	to convert a tree data structure into a contiguous string!

        import random
        import string
         
        from nevow import flat
        
        def letters(howMany):
            for i in range(howMany):
                    yield '    ', string.letters[i], '\n'
        
        def outline():
            for i in range(5):
                    yield i, '\n'
                    yield letters(random.choice(range(7)))
                    yield '\n'
        
        print flat.flatten(outline())

2004-04-20	Donovan Preston	<dp@divmod.org>

	* guard sessions are no longer required to use formless.

2004-04-19	Donovan Preston <dp@divmod.org>

	* Implemented lazy context factories. It is now possible to register
	an adapter against various *Context classes and an interface. They
	will be invoked if *Context.locate(interface) is called.

	Implemented a lazy ISession adapter against RequestContext, making
	it possible to do ctx.locate(ISession), which is nice.

2004-04-16	Donovan Preston <dp@divmod.org>

	* Added nevow.entities module, a module containing literals for all of
	the valid XHTML entities. For example:

		def render_nbsp(self, ctx, data):
			from nevow import entities
			return entities.nbsp