*** sss has left #gnuenterprise *** reinhard has joined #gnuenterprise *** johannesV has joined #gnuenterprise *** btami has joined #gnuenterprise *** reinhard has quit IRC *** reinhard has joined #gnuenterprise *** sjc has joined #gnuenterprise *** sjc has quit IRC *** dimas has joined #gnuenterprise damn, i've indroduce a new bug into appserver ... (will fix it right now) phu, ... *** kilo has joined #gnuenterprise good morning hi kilo hi johannesV kilo, what about your recursion problem (in inv_head.gfd) is it still there ? yes, definitely lately the form has been simplified quite a bit, no free block, etc. and with that simplification the recursion problem is gone but another one rises... which one ? the problematic area is still the trigger that wants to calculate the dateDue if it is enabled, the first record of the detail part (ie the invoice lines) disappears, only the second one gets stored... can i reproduce this with current svn ? *** dcmwai has quit IRC yes how would i do this ? trigger on line 86, uncomment it then start form, click on dateIssued (to get the recent date, this is a bug also) then chose payment method, it computes dateDue then try to add first line, after you step out of that onto second one, the irst one disappears s/irst/first return self._cachedRecords[record] IndexError: list index out of range (last two lines of exception) is this the error you're talking of ? you get an exception??? i don't get any, the line simply disappears hmm btw. you could simplify your procedures a bit ... :) instead of: total = 0.0 if len(items): #total = sum(items) for a in items: total += a.INV_valueGross you could do: total = sum ([float (i.INV_valueGross) for i in items]) (but i haven't tested this yet) same applies to all that INV_value* hmm, i have thought about using some python iter funcs... calcDateDue: why does it return None but set self.dateDue ? why doesn't it return the same value as self.dateDue ? dunno... btw why use 'float' in the above code??? you could leave that away (it's used because of your printf-debug below) btw this form is a dialog. this way it does not show the dateIssued at first, only if you click on that entry. if you remove the 'style="dialog"' from the form head, it does show it... there must be something done differently on form startup depending on its dialog state hmm, so think i can imagine where the bug is as i've mentioned a few times ago: the difference between form and dialog is: in a form the program continues with normal execution after showing the window and a dialog holds program execution until the window get's closed so after showing the dialog's window no more GF* events are processed which are issued *after* the window has been activated we have to dig into form's code to find out how to circumvent this wrt initial values yes, i agree *** lekma has joined #gnuenterprise morning (?) everyone morning lekma mornin' :) *** ajmitch__ has quit IRC hi btami kilo johannesV, kilo: now is there a bug you are working on currently? or is everything ready for new release? i don't know if johannesV is working on it or not but there is a bug in Forms ok the i'll wait don't forget to release designer... yes i think it will be a complete round this time reinhard: included bug in forms/bugs kilo: thanks kilo: I'll let johannesV decide if he wants to look into it or not if not, then I'll do prereleases today if he wants to, I'll wait for the fix ok, don't bug his siesta... *** holycow has joined #gnuenterprise l8r *** btami has quit IRC * johannesV back so my siesta is finished :) kilo, i'm not sure if i can fix the dialog-thingy that quickly as to the exception raised in INV_Head.gfd it seems like the bug i've filed in common last week (but i haven't looked at it very close) np, it is included in frms/bugs strange about exception that you get it, while i do not... ok so I do prereleases now well, maybe my backend isn't very clean reinhard, wait i'll give ya a call first kilo: the date issued is now there from startup of the form .. ah, you've changed the form-style .. ok yes, you were quicker... do you like that goat? goat also disappears if the form-style is dialog... right ok i've solved the dialog-prob that was quick johannesV: is it in common or in forms? forms well, actually i've moved on single line but i need another 5 minutes for testing good ok, my patch passed first tests successfull johannesV: ok, while I'm away, please check if de translations are up to date reinhard, ok for at least forms, common, appserver IIRC we haven't fully translated reports and designer yet anyway kilo: you really get no exception whenn pressing on the qty. entry no lol ok fixed that ... i don't get an exception anymore :) gnue-navigator had no single commit since the last release kilo but everything get's saved ... even the second line and i've only changed one line in INV_Head.gfd which one? ok, prereleases done bbl, off to customer ok hmm #Calling a calculated property will cause it to refresh # blkINV_Item.call("INV_getvalueGross", {}) blkINV_Head.call("INV_getvalueTotalGross", {}) it's the call of INV_getvalueGross this is a calculated field ... why don't you bind it using a field in blkINV_Item ? oh you *do* have such a field it uses find() to collect invoice lines that connect to the same invoice find() does not search dirty-state instances... so it does not work hmm but if i add a debug print to the procedure i get a line one per item-line i've added in a non-commited invoice hmmm but there seem's something weird wrt tab-order/detail-records s/seem's/seems/ ? well in the detail-block it's a bit confusing ... when i'm in the note-entry, pressing tab moves to the next row's note-entry ... tab? it works ok at me hehe, now i get the exception 8-)) have you commented the getvalueGross-call ? no should i? after i did it, the exception disappeared. anyway you won't have to do it that compicated doing something like x = blkINV_Item.fldInvValueGross.get () does the same and no exception occurs i think the blkINV_Item has no record at that time or at least it has no 'non-empty' record so if i use the call(...) it raises an exception, but with .get() it does not? (there's a bug in common's Base/ResultSet.post () code where an 'empty' record get's eliminated from the cache) *** holycow has quit IRC this is a problem for records which has been initialized by appserver (since they're not *dirty* and seem to be empty) *** holycow has joined #gnuenterprise at least for me the exception dissapeared ... the difference between call () and get () is who does call the proc on the call () method it's the *blkINV_Item*'s current record ah, i see using the get () method it's just accessing a property (which has been filled by appserver) but we would have to investigate it in more detail ... to catch the *real* problem real problem? computers! 8-)) :) ok, now using the .get() thing, original probelm comes back again. first line dissappears after leaving the Note entry... calcDueDate trigger ic enabled... *** johannesV has quit IRC *** johannesV has joined #gnuenterprise have to run, bbl *** kilo has quit IRC *** jamest has joined #gnuenterprise *** chillywilly has quit IRC *** chillywilly has joined #gnuenterprise *** johannesV_ has joined #gnuenterprise *** chillywilly has quit IRC *** chillywilly has joined #gnuenterprise *** johannesV has quit IRC *** holycow has quit IRC johannesV_: if i were to reload a class in a runnig server would the following be sufficient? def reloadClass (self, classname): classdef = self.__getClassdef (classname) classdef.replaceReferences (classdef.module) classdef.complete () the idea is only to reload procedures in a running server hmm what does self.__getClassdef () do ? it's from geasSessionManager.py, it returns a class definition sorry from geasSession.py replaceReferences () is used to replace instance-references loaded from repository.ini with *real* language-interface object instances it does *not* load anything new we could do something different (at least we could try) if we remove the class from sm.classes and then access it again from the docstring in classrep.Class """ This class updates all references of a class to it's module object and requests all properties and procedures to do update their references too. """ this would result in basedictionary.__getitem__ to reload the class def via find () well, this means "references" like a unicode-string holding a gnue-id get's replaced by the real object it referres to as well as all props have a look at src/classrep/__init__.py there the base classrep is loaded from a ini-file and wrapped by Module-Dicts/Class-Dicts/Property-Dicts/... but still all refs are only strings loaded from the ini-file *** lxf has joined #gnuenterprise this is where replaceRefernences () get's into the game ok it replaces all refs by a business object instance representing that reference so after the first recursive iteration of replaceReferences all following calls won't do anything since there are no strings to be replaced but let me try something other ... ok i have made a way to do it it's quite easy I've added a new method to geasSessionManager.py called "reloadClass (classname)" as well as to grpc/appserver.grpc this method looks like: def reloadClass (self, classname): del self.classes [classname] cDef = self.classes [classname] that's all about now one can call the session manager to reload a given class via rpc hmm but let me test a few minutes more ... ok, there's still a problem with the session-cache since this cache (internal session) still holds the *old* procedure code the method shown does not work 100% * johannesV_ still at work ... :) well if you commit it works... ie Session.commit() *** lxf has quit IRC ok, got it working now ... still testing ... ok, it works without a commit () yeah, looks good it works as described above (i had a bug in the test-code first so i though cache is an issue) s/though/thought/ i'll talk to reinhard if we do commit this patch into this release (since a prerelease started today) next thing to do would be to make gnue-readgcd to update a running application-server's classes ... :) do you mean the previous code is ok ? def reloadClass (self, classname): del self.classes [classname] cDef = self.classes [classname] yes it's ok you don't really need the assignment to cDef, just "self.classes [classname]" would do the job too johannesV_: thx i'll try it before tonight classrep.Base.BaseDictionary implements __getitem__ () which does the actual reloading if the requested key is missing in the dict but we would have to add a lot of other stuff regarding server-administration as well like 'session-management' reloading parts of the classrep (like modules, classes, ...) and much more ... :) so i don't know if we have such things in svn in the near future :) the problem is that now we are a few 'functionnal developper' modifying procedures on the same server and always restarting the complete server when you want to test a modif is annoying to the others that's right i cannot promise to introduce this method into the current version right now, but meanwhile you could work with the patch described before ... *** kilo has joined #gnuenterprise *** kilo has quit IRC *** kilo has joined #gnuenterprise *** jamest has left #gnuenterprise jcater: http://www.gnuenterprise.org/gallery/forms.php, last picture. Lovely goat, ain't it? @weather LHUD kilo: The current temperature in Szeged, Hungary is 40°F. Conditions: Partly Cloudy. Humidity: 42%. Dew Point: 25°F. Pressure: 30.23 in (1024 hPa). Visibility: 25.0 miles (40.0 kilometers). UV: 0 out of 12 *** holycow has joined #gnuenterprise * reinhard is confused didn't we actually want the procedures to not get cached? i thought that works but then again i guess it's better when procedures *are* cached well now it seems they are cause i have to restart to reload a proc lekma: can you live with adding the lines johannesV_ gave you yourself as a temporary solution? yes ok reinhard, still there ? *** jamest has joined #gnuenterprise *** sjc has joined #gnuenterprise johannesV_: would it be possible to do the same reloadClass with a gnue_id as parameter instead of a class name string? of course, but the procedure would change a bit .. let me try it first ... johannesV_: still here lekma, here we go: # --------------------------------------------------------------------------- # Refresh a class definition in the class repository # --------------------------------------------------------------------------- def reloadClass (self, item): """ This function refreshes a class definition in the class repository by completely reloading it from the backend. @param item: name or id of the class to be reloaded """ # if item is not a classname we assume it's a gnue_id of the class if not self.classes.has_key (item): item = self.classes.find (item).fullName del self.classes [item] self.classes [item] thousands thanks this way you're free to use either a classname or a gnue_id oth we could screw this up a bit and add a check for module too ... like if self.modules.has_key (item) ... to add reload-caps for whole modules ... :) reinhard, i thought you were off for today ... i assume you don't like to add a feature for reloading classes/modules like this in the current state of appserver, do you ? johannesV_: you assume correct that's why i did reinhard: lekma: can you live with adding the lines johannesV_ gave you yourself as a temporary solution? lekma: yes :) ok so i'm really off for today ... have a nice evening :) *** johannesV_ has quit IRC johannesV_: it works perfectly thank you very much i have to leave for today (one has to eat, sleep, ...sometimes) :) thanks again night all *** lekma has quit IRC night all *** reinhard has quit IRC *** bluesbaron_ has joined #gnuenterprise *** bluesbaron_ has left #gnuenterprise *** holycow has quit IRC *** ajmitch_ has joined #gnuenterprise weirdo... commenting code even in irc... weird austrians 8-))) *** jcater has quit IRC *** holycow has joined #gnuenterprise *** jamest has left #gnuenterprise *** kilo has quit IRC *** sjc has quit IRC *** holycow has quit IRC *** holycow has joined #gnuenterprise *** holycow has quit IRC *** dimas has quit IRC *** dimas has joined #gnuenterprise *** ajmitch_ has quit IRC *** ncjp has quit IRC *** Vee has quit IRC *** shmooz has quit IRC *** havoc has quit IRC *** agile has quit IRC *** Morphous has quit IRC *** involved has quit IRC *** dimas has quit IRC *** mustafa has quit IRC *** nickr has quit IRC *** chillywilly has quit IRC *** cilkay has quit IRC *** dneighbo has quit IRC *** dimas has joined #gnuenterprise *** Vee has joined #gnuenterprise *** ncjp has joined #gnuenterprise *** shmooz has joined #gnuenterprise *** mustafa has joined #gnuenterprise *** nickr has joined #gnuenterprise *** havoc has joined #gnuenterprise *** Morphous has joined #gnuenterprise *** involved has joined #gnuenterprise *** agile has joined #gnuenterprise *** chillywilly has joined #gnuenterprise *** cilkay has joined #gnuenterprise *** dneighbo has joined #gnuenterprise