Re: [Zope-dev] why does my externalmethod generate a ZODB transaction
Hi, answering to myself, cause nobody else could find the reason in the code I provided, because I didn't include the real culprit. Here is the very much abreviatet version, which also generates a transaction: def workform(self,REQUEST): "Die Masken EinAusgabe" self.form=REQUEST.form-- this does it return "this generated a transaction" So don't modify the "self" of an external method. Mit freundlichen Grüßen Joachim Schmitz AixtraWare, Ing. Büro für Internetanwendungen Hüsgenstr. 33a, D-52457 Aldenhoven Telefon: +49-2464-8851, FAX: +49-2464-905163 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ExtensionClass and __radd__()?
On Wed, 5 Jul 2000, Greg Ward wrote: Well, it's a nice theory. It doesn't explain why '__add__()' works for ExtensionClass while '__radd__()' does not; perhaps ExtensionClass implements that much of Python's class semantics, but doesn't go as far as '__radd__()'. A quick note which you probably already know: grep add ExtensionClass.c gives: static PyObject *py__add__, *py__sub__, *py__mul__, *py__div__, INIT_PY_NAME(__add__); BINOP(add,Add) FILLENTRY(nm-nb, add, add, METH_VARARGS, "Add to another"); FILLENTRY(sm-sq, concat, add, METH_VARARGS, SET_SPECIAL(add,add); subclass_add(PyObject *self, PyObject *v) UNLESS(m=subclass_getspecial(self,py__add__)) return NULL; AsCMethod(m)-meth==(PyCFunction)add_by_name ASSIGN(m,AsCMethod(m)-type-tp_as_number-nb_add(self,v)); (binaryfunc)subclass_add, /*nb_add*/ (binaryfunc)subclass_add, /*sq_concat*/ return; /* we added a reference; don't delete now */ whereas grep radd ExtensionClass.c returns nothing Pavlos ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] SQL-Output
Hi, i have a little problem on outputting data from an SQL-Query. The Problem is, that the user should select his own Fieldnames he want to show for output. The input form sends a request to the output form, with a query-string and some other stuff and a key named ausgabe. The key ausgabe is a sequence with all Fielnames the user clicked. Now in the outputform i have a sequence looking for the search-query. If sequence starts it prints a table-head with all selected field-names out of the second sequence ausgabe. The problem is: my table in the relational database has a column named 'Name'. If i write in the sequence at bottom dtml-var Name then the result is the the value of Namne is printed. But if i write dtml-var sequence-item and the current item is Name then Name is printed out and not the Value of Name from the DB. Could anybody help me. as P.S.: sorry for my bad english dtml-in Suche size=10 start=query_start dtml-if sequence-start table width="560" border="1" bgcolor="#ff" tr bgcolor="#ff" th width="30%"Name/th dtml-in "REQUEST.ausgabe" thdtml-var sequence-itemnbsp;/th /dtml-in /tr /dtml-if sequence-start tr td class="feld"a href="homepage?Firmennr=dtml-var FirmennrSUBMIT=Query Start"dtml-var Name null=""/anbsp;/td dtml-in "REQUEST.ausgabe" td class="feld"dtml-var sequence-item null=""nbsp;/td /dtml-in /tr dtml-if sequence-end /table /dtml-if sequence-end p /dtml-in ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
RE: [Zope-dev] why does my externalmethod generate a ZODB transaction
Any method called directly through the web (e.g. like this one, which I assume is through an HTTP POST) will be bounded in a transaction. Why would you not want this to happen? -Original Message- From: Joachim Schmitz [mailto:[EMAIL PROTECTED]] Sent: Thursday, July 06, 2000 3:30 AM To: zope-dev Subject: Re: [Zope-dev] why does my externalmethod generate a ZODB transaction Hi, answering to myself, cause nobody else could find the reason in the code I provided, because I didn't include the real culprit. Here is the very much abreviatet version, which also generates a transaction: def workform(self,REQUEST): "Die Masken EinAusgabe" self.form=REQUEST.form-- this does it return "this generated a transaction" So don't modify the "self" of an external method. Mit freundlichen Grüßen Joachim Schmitz AixtraWare, Ing. Büro für Internetanwendungen Hüsgenstr. 33a, D-52457 Aldenhoven Telefon: +49-2464-8851, FAX: +49-2464-905163 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope ) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ExtensionClass and __radd__()?
On 06 July 2000, Pavlos Christoforou said: A quick note which you probably already know: grep add ExtensionClass.c gives: [...lots...] whereas grep radd ExtensionClass.c returns nothing Yep, did the same myself shortly after posting. It's not really clear what 'py__add__' is and how it works, though, so it's not obvious if 'py__radd__' is the right thing to add, and if so how to add it. Greg If it's just a matter of adding radd (and rsub, rmul, and rdiv) in all those places -- Greg Ward - software developer[EMAIL PROTECTED] MEMS Exchange / CNRI voice: +1-703-262-5376 Reston, Virginia, USAfax: +1-703-262-5367 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: [Python-Dev] ExtensionClass and __radd__()?
Greg Ward wrote: Hi all -- looks like ExtensionClass doesn't recognize/implement the '__radd__()' protocol. Speculation below; first, a demonstration. Normal case: a regular class Number that knows how to add itself to other number-like things: (demonstration snipped) Speculation time: I'm guessing that this is similar to the problem with 'isinstance()' and ExtensionClass that I found several months ago, which was heroically debugged by Barry. To recap, it's a mutual finger-pointing bug: Python (Guido) can claim that it's up to ExtensionClass (Jim) to emulate the full semantics of Python classes/instances, but ExtensionClass can claim that Python should be more relaxed in what it accepts as a "class object" or "instance object". I think the relevant code in Python is in Objects/abstract.c, specifically 'PyNumber_Add()' and the BINOP macro: #define BINOP(v, w, opname, ropname, thisfunc) \ if (PyInstance_Check(v) || PyInstance_Check(w)) \ return PyInstance_DoBinOp(v, w, opname, ropname, thisfunc) [...] PyNumber_Add(v, w) PyObject *v, *w; { PySequenceMethods *m; BINOP(v, w, "__add__", "__radd__", PyNumber_Add); [...] My guess is that PyInstance_Check() returns false for ExtensionClass instances. Two possible fixes: loosen up PyInstance_Check(), or loosen up BINOP. Well, it's a nice theory. It doesn't explain why '__add__()' works for ExtensionClass while '__radd__()' does not; perhaps ExtensionClass implements that much of Python's class semantics, but doesn't go as far as '__radd__()'. I'd love to see __radd__ added. ;) I don't remember why it's not there. Maybe I was just lazy. It may be fairly hard to add. I haven't looked in quite a while. As anyone whos looked at ExtensionClass sources may be able to tell, ExtensionClass has to play quite a few tricks to: - Try to sanely bridge the quite different semantics of Python "types" and "classes" (e.g. there's no radd for "types"). - Try to overcome the fact that the interpreter special-cases InstanceType and ClassType pretty liberally. To (try to and mostly succeed to) provide instance semantics I have to do alot of weird indirection. This is especially hard for numeric things. Your analysis of the code demonstrates this issue. ExtensionClass instances are not of type InstanceType. In fact, each ExtensionClass is a separate type and instances of different ExtensionClasses have different types. Note that I just got around to responding to your earlier post "Comparison inconsistency with ExtensionClass". This has a similar root cause: the special-case treatment of InstanceType. I think that the *real* solution to this problem is to get rid of ExtensionClass. ;) To do this, I need to get the features I have in ExtensionClass into Python. I guess there's some hope for that in Python 3K (love that name :). In the mean time, I don't have time to fix the radd problem myself, but would be willing to advise someone who wanted to try to take it on, especially if we could work out some phone or face-to-face sessions. Jim -- Jim Fulton mailto:[EMAIL PROTECTED] Python Powered! Technical Director (888) 344-4332http://www.python.org Digital Creationshttp://www.digicool.com http://www.zope.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] why does an error in my externalmethod ...
make the folder from which it was invoked inaccessable ? continuing work on my external, I removed all modifications of self, so no transactions or better modifications of the ZODB took place. During the development cycle: editing the external methods, testing it through calling it through the browser, after editing the method the call of .../Movies/testForm resulted in a not found error. also I cannot enter the folder "Movies", if I click on it in the managementscreen, I also get the not found error. There is no transaction to undo, I restarted Zope no luck, I tried to delete the folder and get the error: Error Type: SystemError Error Value: Failed to import class setrecord from module __main__ (Object: manage_delObjects) File /usr/local/Zope-2.1.4/lib/python/ZPublisher/Publish.py, line 102, in call_object (Object: manage_delObjects) File /usr/local/Zope-2.1.4/lib/python/OFS/ObjectManager.py, line 395, in manage_delObjects (Object: ElementWithAttributes) File /usr/local/Zope-2.1.4/lib/python/OFS/ObjectManager.py, line 267, in _delObject (Object: ElementWithAttributes) File /usr/local/Zope-2.1.4/lib/python/ZODB/Connection.py, line 396, in setstate SystemError: (see above) The class setrecord is in my external-method. I luckily had packed zodb shortly before that, and it is just a testserver. So I copied the Data.fs.old to Data.fs. Till now I could not reproduce the error. I still have the corrupted Data.fs. But I had that occure before, after making an error in the external method, the calling folder was not accessible anymore. But there I also had modified self, so I had a transaction which I could "undo". Mit freundlichen Grüßen Joachim Schmitz AixtraWare, Ing. Büro für Internetanwendungen Hüsgenstr. 33a, D-52457 Aldenhoven Telefon: +49-2464-8851, FAX: +49-2464-905163 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Request for amplification on new Product permissions API.
OK, I read Brian's excellent HowTo on the 2.2 Product permissions API, but it unfortunately doesn't give me the answer to my current 2.2 problem (or if it does there's something else I don't know that is preventing me from figuring it out). I'm trying to update EMarket to work under 2.2. EMarket has a shopper object. A shopper's current set of potential purchases is stored on the shopper object in a 'basket' attribute. What gets assigned to this attribute is an instance of a 'Basket' class. It inherits from Persistent and Acquisition.implicit. (Shopper, among other things, inherits from OFS.SimpleItem, by the way.) So, when I access the page that displays the current shopping cart, under 2.2 I get an unauthorized error when the dtml code attemps to access an attribute of the basket object. So, what do I need to do to allow controlled access to this object? I understand that Shopper, inheriting from SimpleItem, already has the access to unprotected subobjects flag. And I'd rather protect the object correctly, anyway grin. I tried adding an ac_permissions structure to the class, giving View permission to the attribute that is throwing the unauthorized error, but that doesn't seem to have changed the behavior. Adding the access to subobjects flag also didn't do anything. I created a new shopper/basket just in case the changes don't affect existing objects, but still got the same unauthorized error. --RDM ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )