Balazs Ree wrote: > On Thu, 13 Mar 2008 21:58:07 +0100, Jeroen Vloothuis wrote: > >> The kss.core branch which builds on kss.zope has been cleaned of all the >> unneeded code. What is left is either tests (or related documents) or >> bbb imports or code. >> >> While cleaning out kss.core I came across a few module which seem to >> have some use but that I am uncertain of how to handle these. >> >> The first one is BeautifulSoup.py, this is imported from a plone.app.kss >> directly. Next is the unicode_quirks.py file. It is used from >> plone.app.kss as well (plonekssview.py). > > I'll try to explain first, how these currently work in kss.core, and what > is their functionality. > > BeautifulSoup.py is an html parser that is used for sanitizing the html > output, and its usage is enforced each time html is sent to the client. > This is done each time an HTML parameter is added, by the addHtmlParam > method, ie any time when the semantics of a parameter is "HTML". > > The force_unicode method works similarly for adding parameters with a > "string" semantics, ie. when addString is used. This makes sure that > either plain ascii, or proper unicode is added (with an additional > parameter that makes it possible to _explicitely_ enforce conversion from > a given codepage other then utf8.) In case of faulty input an exception > is raised on the server side. > >> My suggestion is to just to leave them in kss.core so that we can >> deprecate them at some later time. > > Before getting to the bbb policy at all, there is a more important > question that raises. > > The AddHtmlParam and AddStringParam, besides implementation reason that > may occur differently in the case of kss.base, have a very important > function. We do not only handle these parameter types disctintly from > each other because we marshal them disctinctly on the kss command payload > (which we may change in the next implementation), but precisely because > we want to check and sanitize the parameter content on the server side. > This altogether improves the quality of applications based on top of kss, > and enables earlier caching of certain application errors. > > I would like to refer to some of our earlier discussions when I tried to > emphasize the importance of keeping the different addXXXParam methods > based on the parameter's semantics, versus having a single addBlobParam > method. (As in the IKSSCommand interface.) One of my reasons for doing so > is that I am strongly on the point of view, that these sanitizations are > very important. I keep standing on this point still at the moment. Apart > from this importance, the other reason is that I believe that the switch > to kss.zope should not cause any observable difference to the > applications that are running on top of kss. It is important to nail down > that he goal of kss.base - although it was a complete rewrite - is not > redesigning the kss server side behaviour but to enable exactly the same > behaviour that we currently have, on the level of plain python > applications. We may want to do refactorizazion in the future but it must > occur in a consecutive step, separated from the current porting effort. > > Now, if implemented properly, this functionality belongs to the level of > kss.base. I am not sure if this checking is implemented in kss.base and > on what extent, but it seems not or not identically implemented to the > way they currently are in kss.core. However I may be wrong at this point. > > So the question that is raised: I offered some reasons above why I find > this functionality important and to be kept. Do we have any reason to > drop this functionality in the next release (based on kss.base)?
Definitely no reason. I agree that html sanitizing and unicode nicety need to be kept. And that they should go to kss.base. > And what problems may possibly arise for existing applications and Plone, > in particular, if we do so? > > I believe we must discuss and answer these questions first, and decide > the implementation and deprecation policy based on the decision we make. > > >> The buildout for the kss.zope related work has been updated to match the >> trunk of Plone. All tests in de demo's pass and a Grok demo works. > > Obviously, tests were (again) missing in this case, otherwise they would > not pass. > > After deciding on the above mentioned question, what would follow? > > If we decide to keep this checks, we must add additional tests to > kss.core that check for the existence of the string and html checking and > sanitization. Following this the tests must be moved or implemented in > kss.base as well (together with the actual implementation of the > sanitization, if missing.) > > In case we decide to drop these checks, we must carefully check in real > life scenarios, what errors or changed behaviour we get in case broken > html or sting content is inserted to a kss command. If this is the case > we may still consider if we redistribute BeautifulSoup in kss.zope > because it is a very handy html parser that we used several times in > applications that produce html content for kss, but in this case it will > be just provided as a utility and not be used by kss.base/kss.core itself. FYI, BeautifulSoup is now available as an egg. > > Best wishes > -- Godefroid Chapelle (aka __gotcha) http://bubblenet.be _______________________________________________ Kss-devel mailing list Kss-devel@codespeak.net http://codespeak.net/mailman/listinfo/kss-devel