*** wt has joined #gnuenterprise hi any admins here? I would love to get SSH access or at least ssh+svn access doesn't have to be writable no one is here *sings to self* *goes crazy* *signs GNU copyright assignment paperwork* if you want non cvs access i think there hourly snapshots derek, I want svn access but I can't access the normal svn stuff from work ssh works fine though *** reinhard has joined #gnuenterprise reinhard, hi reinhard, I found my copyright assignment paperwork reinhard, is there a web view of the svn anywhere? wt: I'm not sure reinhard, there's not dammit that is hurting the project reinhard, how do I get svn+ssh access IIRC jcater wanted to set up something doesn't even need to be writable I just need to be able to use ssh as a transport from work wt: ask jcater or jamest to create an account for you on ash they have root on that machine ash? ash.gnuenterprise.org? yes == www.gnuenterprise.org == svn.gnuenterprise.org is jcater a debian developer? no, I don't think so damn, I need a debian devel in memphis or near Chris Lawrence is no longer here actually I am not sure if there is such a thing like a read only ssh account of course you also could download the daily snapshots reinhard, I won't screw with the repository reinhard, I am sending in copyright assignment paperwork anyhow reinhard, and I am not malicious well, this was just a proposal how you easily and quickly could get the current source *** johannesV has joined #gnuenterprise good morning *** sjc has joined #gnuenterprise *** btami has joined #gnuenterprise good morning hi, btami hi wt what is up? does gnue have a GL yet? not yet or at least a General Journal? reinhard started it btami, do you use gnue? it's repo is gnue-luca I have it in my source lists I would like to get ssh+svn access we will introduse gnue-invoice soon here wt: jcater/jamest can give you an account after copyright assignment done I have an email queued for jcater for when I get home why doesn't our DCL work? seems like we aren't eating our own dogfood in a way derek has no time to restore the postgresql dump for DCL btami, then just install DCL fresh don't worry about the PG dump right now there is no bug tracking yes i know but i have no admin rights on ash well, I will definitely try to get whatever it is that i need to do that i'm only a contributor DCL doesn't use DCL for bug tracking? don't know never tried to report any DCL related bug to DCL :) I am just looking on their site this is looking sadder and sadder this can't make a good impression on a new user maybe writing a new bugtracking system with gnue-appserver is a way to go and eat our own dogfood DCL would technically be eating our own dogfood though it doesn't use the gnue framework good morning dimas, hi hi dimas hello wt, btami btami: sounds great, wrt bug tracking wt: i'v noticed it (the DCL issue) several times, but without any success... wt: DCL is a separate project dimas, but technically a part of gnue dimes: are you voluntering? :) according to DCL and gnue maybe for very new user it could looks so dimas, give me access and I will install DCL and attempt to make the web better dimas, I know it doesn't use gnue framework at all i have no that rights I am not that naive wt: the bigest problem with gnue in the last year: the core americans have approx 0 time to maintain the infrastructure btami, I will do what I can if I can get access we had psu before as web-admin, but unfortunately he's gone the packages seem to be growing in only a euro friendly way yes that could be a problem the same reason only europeans are active in packages well, I need svn+ssh at the very least wt: at least #dcl still exist ^) :) dcl functions as a separate project I think we need a gnue-packages/issuetracker and a good introduction into how to use the packages I know how to setup the database how do I use them once everything is in place? answer me that? wt: gnue-invoice has a scripts dir and a readme iiirc what do I do if I want to add a person? btami, does gnue-invoice use the packages? some parts of the base payment method on the invoice? why? can there be multiple payment methods? how do I put inventory into the system? how do I do anything useful? wt: kilo is your man to ask, but as i know invoice is independent from inventory at the moment it's only a standalone barebone invoicing stuff I am not asking with regard to invoice we need someone to start inventory and other packages too at the moment only reinhard started gl I know, but I don't know how the current packages are useful and kilo invoice look at the gnue-packages/finance/invoice/invoice.gcd it uses classes from other modules but how do I utilize it? look at invoice-hu in gnue-contrib it has .gcd .gsd .gfd .grd files that doesn't use the packages doesn't seem it _does_ I am looking in the forms dir if I run a form, it complains about not having an invoice datasource defined just look at setup-db-hu.sh and read the readme and install first you don't have to use the *-hu files of course and notice you have setup your gnue path in the setup-db scripts koz no package has setup install yet in gnue-packages dir this is all very opaque to me I will look at it again when I am not so tired in hopes that I will get it ok anyhow, you have to know, this is not an official way of installing any gnue package, just a quick hack, to test something it's in gnue-contrib! seems like everything in there should be in .glds to do it the appserver way no, .gcds are the main files .gld is for on the fly form generation, it's only an option for very simple forms not to write .gfd by hand http://www.gnuenterprise.org/cgi-bin/twiki/view/Main/FileTypes you posted it :) is there a way to list items that an appserver can dish out? apppserver could always generate any form, it does not depent on existing .gld files .gld only defines fancy labels I thought it had to be loaded with GLDs to do it or translations i did also :) how do I know what's in the appserver? wtf? for nowadays i would be testing gl module is there a way to list the forms? wt: appserver is capable to generate a form for *any* class you mean redirect the generated forms? wt: forms are generated by appserver on the fly as you request them. if there's a gld it will be used, otherwise appserver uses defaults to do so you could extract schema with ggcvs --database=db-backend --output schema.gsd how do I know what forms are available from appserver? there's a form for *every* class defined in appserver (by a gcd or manually) * btami is away: i'm busy so how do I access the form for inventory/inventory.gcd? module is INVENTORY a class in there is ITEM_Item gfcvs appserver://appserver/form/INVENTORY_ITEM_Item is not it for ITEM_Item the module is ITEM and the class is ITEM_Item and the call to appserver is: appserver://appserver/form/ITEM_Item (if the connection to appserver is called 'appserver') right that works, but had tabs for three different forms why does gfcvs appserver://appserver/form/Item not work when there is an "Item" class in the "ITEM" Module? which module should appserver use ??? there could be ten modules defining a class Item the tabs are one per module extending the class ITEM_Item there are three defining ITEM_Item only one module defines Item so I can redefine an object in Sales that is defined in another object? just extend why can't I open a form SALES_ITEM_Item that only opens the Sales ITEM_Item? why does that fail? this is really confusing because there is no class Sales_item_item ... anyway, you cannot assume an instance of a class can only live with it's extension-fields. maybe there are Validations which need other fields ... because not all classes are represented the same when trying to bring them up in the appserver johannesV, what is the stuff in sales.gcd then? these properties extend the class ITEM_Item by adding SALES_* properties is that not a class "ITEM_Item" in a module of "SALES"? like the price it's fully qualified property name is: ITEM_Item.SALES_price where "ITEM_Item" is the class name, and "SALES_price" the property name wt: classes in appserver are not classes as in oop ! so the _ makes the difference between extending and a new class? is that fair to say? wt: ITEM_Item is not a class in modules "SALES" but in module "ITEM". it only gets extended by the module "SALES" that's not obvious well, "_" splits module and class name (or module and property name) but if there is no _, it is a new class? is that fair? better style of XML is like this one: like if I had , it would be legal to say appserver://appserver/form/SALES_Item? wt, no there's no such class "SALES_Item" I am making an example * johannesV phone a crappy example so the _ makes a difference in what it is defining wt: please read this first: http://www.gnuenterprise.org/tools/appserver/docs/whitepaper/whitepaper.html#Features I have, and this stuff is still unobvious again, prolly too tire I understand it better now thanks is there any way to list the objects available from the appserver? specifically, the form objects/ there's a form for *every* class defined in appserver (by a gcd or manually) *** sjc has quit IRC you could extract schema with ggcvs --database=db-backend --output schema.gsd there is --system option for ggcvs that would extract all system classes as well clearly, what looks like a class is not always a class a class name with an _ indicates extension this is not obvious I like the other xml form you gave at least that is more obvious that it is special I just didn't realize that the _ made it different kinda counter to the XML way of doing things wt, the xml code is already valid, i don't know why kilo haven't used id s/id/it still seems that i should be able to look at only the form for the SALES module * btami thinks we all need more detailed appserver devguide :) the values of procedures don't get stored in the db, do they? * btami ducks wt: no, they are calculated at runtime btami, right, having a docu get's more and more importaint ... properties can also be calculated by a procedure and those are stored? no they aren't like LOC_Region.formatted? since they only appear to be a property but in real they're just procedures so...why are they not procedures? well, of course you can use calculated properties like you use stored properties (use for sorting/conditions/... and so on) small change needed in loc.gcd Index: loc.gcd =================================================================== --- loc.gcd (revision 6851) +++ loc.gcd (working copy) @@ -56,7 +56,8 @@ - return self.name + ' ' + self.type + if self.type != NULL: return self.name + ' ' + self.type + return self.name sorry for the flood I have an old version of the file maybe this has been fixed? the general concept of a resource should also be made *** holycow has joined #gnuenterprise of course, I don't know how to do that without inheretance like behaviour pardon my spelling, please what is the concept of a resource? dedicating a resource to a project maybe it's a person or a piece of equipment you talking about a project management module now? or about our own project management? a project management module not my own project management ah ok I just thought about it misunderstood you we have a person and an item but nothing that can be either a person or an item a resource, if you will Why not appserver://appserver/form/CORE/Code instead of appserver://appserver/form/CORE_Code? that makes a load more sense to me considering how other URIs work *** lekma has joined #gnuenterprise hi hi wt please don't mix the concept of filenames with the concept of classes I am not a single gcd-file can define 100's of classes right I am thinking appserver://server/form/module/class instead of module_class ah, ok wt: modulename and classname are separated with a "_" *everywhere* why, though? yes in this case it's a matter of parsing an URI johannesV: i read your mail about concurrent updates with psycopg not very URI like so it's just consistent to do the same in the url This does *not* work with psycopg <-- is there a big problem wt: the reason to use the _ is that it is allowed in identifiers should i switch to pygresql? while / isn't lekma, i'll post some test-scripts after lunch so everyone can check lekma: the problem is only when two people update the same record at the same time It would be nice to be able to get a list of forms in a module with a appserver://appserver/form/MODULE or something like that lekma, well, as long as you can make sure not two users changing the same instance at the same time maybe for gnue-navigator wt, i think this is an issue of the management-interface coming with version 0.5 or the like it would also be nice to be able to put any form into the appserver, instead of only the simple subset that can be represented by .gld so that you don't have to ship .gfd to every client wt: you could place .gfd's on web server and access over http why not from the appserver? that is better than I thought, however wt: I have seriously considered that actually reinhard, I think it would be a wonderful thing yes like a few other ideas we have for appserver :-) I would say put it in DCL, but there is no DCL or like having documentation even though the website says there is or a working gl module :) reinhard, does the gl module include a gj? General Journal? what is a gj? oh I don't know I am hoping that the GL is a real GL and not GNUCash's version I don't know all the English terms for accounting GNUCash's register is a GL it's GL is a GJ I don't use gnucash the list of all transactions is a GJ the list of accounts is the GL ah, such a thing will be in the gl module (if I understand you correctly) the GL allows for multiple trees of accounts? is gnue-commits working at all ? I got your commits from the weekend johannesV, nothing else is wt: I don't understand that question well, i've commited the test-units but there's no message on #gnue-commits might take some time hm err sorry i thought you meant the mailing list the channel is appearantly not working ah, ok did't see anything for a while i've thought something like that General Ledger Journal doesn't make sense I mean, I guess with the package name comments do not matter though there is only one journal? there are several journals you can post a journal and start a new one posted journals can't be changed any more wt: the current plan for gl is to create something that fits the European accounting style got it it might be that US style differs in some respects but of course I have to set priority to things that *I* can use :-) how does Euro work? I would like to work with you on this you mean the currency? it's just a currency no I mean the euro accounting european ah ok you have a chart of accounts same you have transactions same you define a group of transactions to be a journal that sounds right is a journal time boxed? a journal can be either open (= can still be changed) or closed/posted (noc changes allowed) you have accounting periods (= months) each journal may only contain transactions of a single accounting period do you have to close each month? not necessarily *** kilo has joined #gnuenterprise so you could have one journal per year, for instance? although there are some forms you have to fill out for each month good morning why would you not just use filters to do that? instead of keeping separate journals? after you filled that form and sent to the tax authority, you wouldn't want to cahnge anything possibly wt: that's one of the accounting rules here so mark transactions unchangeable or something reinhard: what is missed in gl module that you see important for yourself? dimas: most of it actually :) reinhard, can you create a table of accounts right now? dimas: the main transaaction entry form is not usable at all i've looked into what is there already and that looks good for me wt: i think I can i mead on gcd level mean without the use of psql? hehe dimas: you are very modest :) reinhard, do you allow transactions to be recorded in multiple journals? dimas: yes, gcd level is quite far however a main transaction entry form is something very important for a good accounting software bbl must run for lunch have fun wt: you could access appserver://appserver/gl_account and feel chart of accounts gfcvs ap[what you said]? yep just load the .gcd from the gl thingy? reinhard: modest? i do not know each and every english words :) wt: yes wow, people, slow down... * kilo reading logs dimas, why doesn't it use the Currency type already in base? kilo, no.no.no.no.no.no.no. :-P kilo, do you see that patch up there? kilo, what do you think? wt, plz give me 10 mins kilo, you got it shit, i've commited changes in samples.gcd/gld ... have to revert it johannesV, then revert it *** wt has quit IRC wt, the xml code is already valid, i don't know why kilo haven't used it beacuse i am evil 8-))) kilo: which xml code are you talking here? johannesV's version my version both mean tha same kilo, right, but using module="" name="" for class extensions is a bit cleaner i mean it's less confusing ok, i'm off for lunch now imho it is just a question of personal likings, like foo() or foo () *** dcmwai has quit IRC *** Vee has joined #gnuenterprise *** ajmitch_ has joined #gnuenterprise *** wt has joined #gnuenterprise johannesV: find() now finds all instances, both committed and dirty? kilo, yes it should and can it be instructed somehow to find only committed, or only dirty ones? no, it automatically finds both as it can only find "dirty" instances of your own session (well, better say transaction) could a switch be introduced to do that, after it's 4 existing parameters? as soon as you do a commit, another find will also find all commited changes made by other sessions as well why ? this makes no sense to me i can make uyp an example yes please, give me an example some kind of planning. you have some entities already in the db, that you would extend, and you would like to see both the sum result and this transactions's sum too kilo: uncommitted instances haven't run OnValidate so you could set a flag in OnValidate if you need to distinguish between committed and uncommitted instances although I am not sure I really understand your example nor do i, sorry ... *** aries has joined #gnuenterprise good day or you could look if there's a gnue_modifydate set or if it's None hi aries are there a new version of gnue-designer for my newborn wxpython? :] johannesV: hi! johannesV, reinhard: coffee -> kilo -> (hopefully) better example i know what i want but dont know how to tell it... are there a good tutorial about gnue's xml-definition to writing gnue apps without designer? hi aries szia I'm not a heavy user of xml kilo: szia! hi aries btami! *** dcmwai has joined #gnuenterprise when I try to run gnue-forms helloworld2.gfd, I'm getting the following error: UnicodeDecodeError: 'utf8' codec can't decode bytes in position 2-4: invalid data on startup or on data entry? reinhard: on startup strange, works for me *** jamest has joined #gnuenterprise wt: wake up! jamest on the board :) on startup it works, if you input chars like üóûõú into first entry, it fails sometime later @seen wt btami: wt was last seen here 3 hours, 4 minutes, and 10 seconds ago saying: johannesV, then revert it reinhard: the same with the intro.gfd reinhard: I've sent the full error msg to you via email aries: maybe you have to use some stable distro, not a dev version... btami: i know, but everything works except gnue. all of the packages are stable btami: packages are in stable phase btami: it's not gnue's fault, It's my fault, but I wouldn't change a distro to another because of there aren't the needed python stuffs for gnue aries, which driver are you using ? wx or gtk2 ? gtk2 he would like to use wx for designer... kilo: that's right * aries uses python only for the gnue, so if some could give me a statically linked python-wxpython-everythingforworkingwithmysql, it's welcome textEncoding = utf-8 in gnue.conf, is it bad? aries: probably your textEncoding is set wrong in gnue.conf heh yes, you have to set what you use in your locale erm, but I don't wan't to use iso8859-2, but utf8 although gtk2 shouldn't need that parameter at all, just looking at it with johannesV what is your LANG set to? well.. hu_HU just wait, we will sort that out :) :) should i set utf8 or utf-8 ? *** kilo has quit IRC i set it to iso8859-2 but intro.gfd do the same after the restart, I've clicked on the sample tab I've filled the Your Name field aries: working on it intro.gfd is hosed wrt encoding *** johannesV_ has joined #gnuenterprise reinhard: thanks btami, can you please check Menubar.py for win32 driver, so it is capable of handling unicode-labels hi, who is mr. gnue-designer? do you plan to fix the problem with wx2.5 soon? aries, please svn up and try it again johannesV: busy with work now, but will check it at home *** johannesV has quit IRC mnemoc: mr. gnue-designer is jcater btami: thanks mnemoc: I'm intrested in, but unfortunately I'm not Mr. Gnued =) johannesV_: ok, trying :) hmm, looks like i have forgotton to remove a debug-line (will do it now ... :) johannesV_: UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4-6: invalid data aries, i've removed the debug-line, would you please check again ? ok [root@ganja gnue-forms]# ./setup.py install running install error: invalid Python installation: unable to open /usr/lib/python2.4/config/Makefile (No such file or directory) when i try to install forms... python-dev? looks like it is missing, yes reinhard: thanks svn update gnue U gnue/gnue-forms/src/uidrivers/gtk2/MenuBar.py is it correct? is it working ? *** titopbs has quit IRC aries: that is correct, it means that this file was updated with a newer version erm, I can't install the python-dev now, but when I done, I'll drop you a mail, ok? ok i've checked the concurrent-update problem with "pgsql" driver for postgres it's working fine ! so it looks like only psycopg has troubles (of course we haven't looked at popy now) *** jcater has joined #gnuenterprise jcater: sorry to bug you, it seems #gnue-commits is broken, is there any way you can fix it? hmm did the commit this weekend do away with block level commits in forms? johannesV_: i may be wrong, but it seems to me the last changes put back OnValidate after not null checks is it correct?? hmm jamest: did we really wat block level commmits? bbl *** aries has quit IRC lekma, not that i wanted to move them ... but i'd have to check we discussed here and nobody found any reason why they could make sense i'm using psycopg btw, so i can test concurrent updates if you tell me which test script to use... lekma, i've added a new directory: appserver/src/testing there are two scripts atm, concurrent.py and dirty.py you can check "concurrent.py" for this purpose jamest: but still that's why johannesV_ worte that mail - to make sure the change was ok what mail? reinhard: from #commit's topic: " yes, CIA is down. scanline is out of town, so you'll have to wait." so not on our side :( the only mail I got was the commit Checked out revision 6885. i don't have a testing directory or :) depending on how you look at it jamest: to gnue-dev iirc jcater: ok, thanks for checking i swear i get about 1/2 that mail :( i just read it the commit lekma, sorry it's "gnue-appserver/samples/testing" and still digesting what it means to my forms i *think* form level commits work but one thing I have in one of my apps is tracking views so that I can tell when a person just looks at something even if they don't change it this is to catch the people that aren't properly following protocol here of making a note when they talk to a customer the first app to have this is a java app it hasn't been requested in any of our forms and I'm not sure this is an issue just thinking out loud :) bbl *** btami has quit IRC the problem that started it all was the form level commit with a multi-block form (where the blocks are non-master-detail) previously, this called a separate commit for each block breaking up the transaction to a block level and IOHO defeating the purpose of a transaction actually I *think* we could reintroduce block level commits which would actually be a block level postChanges and then a commit i'm not sure I need block level commits i was just clarifying the change as per definition in any db backends a commit is per session, not per cursor i think block-level commits are a 'bug' and thinking thru what it means wll, i'm just explaining :) :) :) i dbl checked and once again i didn't get any mail about this you are subscribed to gnue-dev, aren't you? :) * jamest doesn't understand why his !#!#!$#@ mail always breaks yeah i just don't get it i think you're right about the commit stuff can anybody else confirm that there were at least 3 mails from johannes to gnue-dev this weekend ? *** dcmwai has quit IRC as a form should be all or nothing and if a person ever did need something like I described it should be the exception not the rule http://lists.gnu.org/archive/html/gnue-dev/2005-01/msg00007.html *** dcmwai has joined #gnuenterprise jamest: the archive is our witness :) i can confirm, since i got them too ... :) i'm not questioning that they were sent i always have trouble with mail to the lists i don't recall if I fwd thru some machine but i'll even find that my account is disabled at times in mailman that's when 3 mails in a row to your address bounce IIRC maybe i have those to route thru gnue.org i *hate* that gnue.org and gnuenterprise.org have seperate mail servers johannesV_: requesting new session ... Searching for Mr. Spock on session A ... Result: 1 Mr. Spock: ZIP= 4711 STREET= Vulc Lane 1 Searching for Mr. Spock on session B ... Result: 1 Mr. Spock: ZIP= 4711 STREET= Vulc Lane 1 Press to start the game ... Changing ZIP of spock_a to: Mon Jan 10 16:36:07 2005 Ok Changin Street of spock_b to: Street: Mon Jan 10 16:36:07 2005 Ok Commiting session b ... jamest: i am subscribed as reinhard@gnue.org IIRC and it works fine for me Commiting session a ... app: ERROR POSTING RECORD # 1 ERROR: could not serialize access due to concurrent update UPDATE address_person SET gnue_modifyuser='test', gnue_modifydate='2005-01-10 16:36:07', address_zip='Mon Jan 10 16:36:07 2005' WHERE gnue_id = '00000000000000000000000000001101' For help, type: app --help is the result of concurrent.py with psycopg lekma, so you are using "psycopg" :) right and it seems good to me (ie if i lock a record nobody else can change it) but i may be wrong use either pygresql- or pgsql-driver (python-pgsql, or python-pygresql packages) i think as long as one doesn't change the same fields the update should work one of these packages had big problems with date/time fields but I don't remember which do you remember, jamest? i was just thinking about that why did we use psycopg all the time? johannesV_: do both other drivers work for postgres? because the other drivers had issues w/ various things johannesV_: i think psycopg behaviour is the right one popy returns all fields as type string IIRC reinhard, both other drivers are working well, at least for concurrent updates i think one or both pgsql and pygresql round timestamps so if you have a timestamp field in the db then you'll never match on our update if common does it's match by every field update statement ... if you have no primary key iirc you can fix this by specifying the PK field yes but then you still loose the higher resolution timestamp just for information for lekma - we do this for appserver lekma: i disagree the behaviour is "correct" from the user's point of view, a commit should *never* fail but the user should be warned if another person has the record locked that will require active locking which isn't supported by appserver yet (neither by forms) of course you are right that with "working" simultaneous changes you could create invalid state because both OnValidate only see their own change *** wendall911 has joined #gnuenterprise reinhard: that was my point the more I think about it, the more I understand why psycopg works the way it does we have a lot of calc props that depends on other props of the same object so if two concurrent updates occurs (even on different field) result may be right only for the time being (until the second change is commited) johannesV_: imagine you have an OnValidate that checks the combination of zip and street but changes from other session are only seen if *both* sessions are commited which may lead to further confusion so OnValidate only checks values which are consistent lekma: I am not sure how calcuated fields are affected so does the other sessions onValidate johannesV_: imagine you have street and pobox and OnValidate say either street or pobox must be not null before, both street and pobox are "foo" session a changes street to None session b changes pobox to None both commit at the same time ah ok i see you end up with both street and pobox being None that's a point we end up with an empty pair although all validations were valid well, looking from this pov psycopg does it right yep but to avoid such a situation appserver has a lot of extra work to do I think the only reasonable solution is active locking and if it did all that work, we've created another backend-database in python *lol* right ... which is currently scheduled for 0.6... the first write-access to an instance locks it (for all other sessions) or even earlier actually i would like the lock to happen as soon as i press the first key in a form field of course but this looks like a bigger change to forms to me and what about performance ? sending an rpc-call per key-press ? well, but it would IMHO be a good idea to tell the first keypress to appserver by posting an empty "store" on that gnue_id no only for the *first* key-press forms would have to remember if it already "locked" that instances that empty store is done by appserver's db-driver anyway ooooo I know I'm jumping in during the middle of a conversation I haven't been in (to get that initial *empty* record) but record-locking on first keypress is something we want on all dbdrivers johannesV_: only for new instances, or am I wrong? so if you add to appserver datasource, you might consider making it generic enough for all drivers (did I pull a derek again?) well, forms usually starts off having a 'new' record in every block jcater: good to hear that you will implement that on forms side ;-) um err great ! :) :) johannesV_: sorry, I was unprecise jcater: hi, do you plan to fix gnue-designed for wx2.5 soon? reinhard: example obj.a =1 obj.b =2 obj.c = obj.a + obj.b , if X put obj.a to 4, and Y puts obj.b to 6, they won't have the same result (if concurrent updates, X will have 6, Y will have 7) I meant mnemoc: what's it doing? lekma, i'm already convinced :) jcater: random crashes oooo looking at the street and po-box sample above it is already a no-go that sounds like fun to debug :) mnemoc: I'll try to as I get a chance jcater: randomness is always fun to debug but am not sure how soon that will be jcater: at least you now know :p johannesV_: I meant appserver could lock an instance with the first store() that is placed on that gnue_id, until the next commit or rollback and forms could for *existing* records issue a store (gnue_id = existing_gnue_id, fieldlist = empty) to trigger the lock reinhard, that's exactly what i've meant with "first write-access" so forms would have to send an additional storre when the first key is pressed yes a good question is now, who is gonna fire that trigger in forms ? maybe GFField ? since we need this per block ! yes we need it per block *** SachaS has joined #gnuenterprise ok, so if a record is locked, all other sessions might still 'reqeust ()' it and they get it, of course, but if they'd like to 'lock' it an exception will be raised johannesV_: we are not talking about an easy field now and facing the fact that psycopg at least fails with the update i am not sure we should mess around with that *now* johannesV, reinhard: i'm sorry to bug you, but can you verify that OnValidate is still triggered before not null checks, cause it seems we're kinda blocked by this here :( sorry, i've to leave for about an hour lekma: I will check lekma, not null checks should still come after onvalidate ok, really have to leave bbl reinhard: thx johannesV_: oh ok lekma: yes I can confirm then we have a pb some where else *** holycow has quit IRC what has changed wrt OnValidate is that no OnValidate is lost (the "correct" solution for the quick fix i gave you last week) correct -> hopefully correct you didn't do svn up in your production environment, did you? reinhard: nope not yet :) but we wanted to test dirty reads * reinhard wipes his forehead with a copy of prod db ok and we cannot commit anymore that's a good thing (tm) (the fact that you test with prod db copy, lol :) not the fact that you can't commit anymore) you get a nonull violation? lekma: you still here? what error message do you get when you try to commit? yep let make a small test let me make a small test reinhard: the OnValidate is triggered correctly, it seems i have another pb somewhere else (it has to be related with appserver changes, but i don't know yet which one) i'll investigate... maybe if you give me the error message i can see something or give you a hint the error is related to a not null check during insertion of a new record, the not null field value is given during the OnValidate so maybe the onvalidate proc is not right anymore i want to be sure before i can say there's a bug (even thougth everybody knows GNUe is bugfree (tm) :)) Is it an "Invalid value ... for property ..." message? or is it a postgres error message ? pg error: null value in column "..." violates not-null constraint the exception is raised by common/datasources/drivers/DBSIG2/RecordSet.py ConnectionError: ERROR POSTING RECORD that looks much like a bug in appserver because this means the validation in appserver is not executed at all neither the nonull checks nor the OnValidate *** holycow has joined #gnuenterprise *sigh* I fear something I fear that postgres doesn't like the insert statement crap now the order is like this 1. INSERT ... to db backend 2. run validation, OnValidate and nonull checks 3. UPDATE ... to db backend for things that changed in OnValidate 4. COMMIT to db backend I suspect that 1 already raises the exception that's it must run for dinner bbl we have to rethink the concept in dirty reads :( reinhard: here the pb is only seen when in a trigger (OnValidate at least) you instantiate a class of an external python code from xxx import yyy a = yyy.myClass(session, self) a.myMethod() when there is no outside call it seems to run correctly and what happens then? when you have that in a trigger? i think the problem occures as soon as a postChanges () will be done; since this really posts the pending but not yet commited changes to the backend. and if you fill in values to not null fields in OnValidate ... this is won't happened until then cause OnValidate gets executed in commit *** mnemoc_ has joined #gnuenterprise johannesV_: yes, exactly but not in postChanges ... so this is really a bad thing johannesV_: also, we should test how this behaves in master/detail cases i'd say this makes our solution to dirty-reads quite unusable could be that data.py posts the detail before the master will this also fail already on insert, or will it not? no, i did a lot of checks with master-detail and, what i would like to know also regarding to validation is it normal for sql databases to check NOT NULL on INSERT instead of on COMMIT but i'd have to re-investigate yes i think this is the usual way to do so sh*t gnue=# insert into test_head (test_name) values ('frodo') ; ERROR: null value in column "test_code" violates not-null constraint lekma: you have any idea about how to solve this problem? spontaneously I see a few ways to go calling OnValidate in postChanges () ? a) not define any column NOT NULL on db side b) calling OnValidate in postChanges c) rework everything b) is indiscutable IMHO a) would mean to do all that not-null-checks in OnValidate as I don't *want* to validate at that point we do that already anyway b) introduces so much side-effects you cannot handle it ... agree about b) c) is a lot of really hard work to do actually it's choosing between shit, shit, and shit yeah, that's it but i think we do not have an alternative to c) *** mnemoc has quit IRC I really would like to know the point in time when postgres would give an error about a missing master i've to go downstairs (for dinner) now, but i'll be back later ... reinhard: sorry i was away to be honest a) seems acceptable to me (at first sight) it will just cause some grief on update lekma: what would you think? (and we certailny would have to check if the problem really isn't there for other constraints like fk or unique indexes) reinhard: i'm running now with --debug-level 10 to see what's different between my two test cases (what i don't get is why when i call an external python things are different) i can change properties as long as i don't call external python which puzzles me a) seems a bit strange not defining NOT NULL constraints in db means geas has to check for it before posting, right ? yes, but geas does this already that code is already there and in effect and it runs right after OnValidate that's why I asked for the error message getting the postgres error message and not the geas error message made clear it's a bug in appserver %@&#! I guess this means back to the drawing board :( unless anybody has a _very_ good idea I think I have to sleep over this problem bbl ok, it stops when you actually cal a method ie you can instantiate an external class but calling a method of that class returns the not-null error lekma: that's correct calling a method first posts the dirty records to the db (without committing of course) so that find()s in that metod can see them so we have the exactly same problem here oh ok i'm sorry to be slow but i had pb understanding why only calling a method would change a behaviour that seemed sane lekma: you understand why we changed that? yep now i do and you have *any* idea on how to solve this problem? * reinhard is really lost brb bbl need a break to clear my mind need a smoke... *** dneighbo has quit IRC reinhard: suggestion from frances: add a OnCommit trigger that would commit the record and postChanges after OnValidate forget it that was just a loose idea in previous idea the not-null check would run between OnValidate and OnCommit *** sjc has joined #gnuenterprise reinhard: another idea would be to add an Object.post() that would let the developper control when to post changes *** dcmwai has quit IRC ie in an OnValidate proc i could do self.post() only when i know all data is here *** SachaS has quit IRC from frances: being able to control when you post changes (without committing) is a std feature in other erps we have to go, see you tomorrow *** lekma has quit IRC *** johannesV_ has quit IRC *** SachaS has joined #gnuenterprise *** jamest has left #gnuenterprise *** johannesV has joined #gnuenterprise * johannesV back again *** wt has quit IRC *** someon has joined #gnuenterprise Hey... was reading logs re: concurrent updates.. since appserv already records last-modified date, could we not do something along the lines of: Begin Transaction db.lastupdate=select last-update-time where gnueid=self.gnueid ; if db.lastupdate != self.lastupdate err("Record has been updated since loaded"), rollback this should work even with DB-Backends that round the date (it should round the same every time *** someon has left #gnuenterprise *** jamest has joined #gnuenterprise *** kilo has joined #gnuenterprise *** siesel has joined #gnuenterprise hi hi siesel! how are you? long time no see hi Sacha I'm fine i heard you are in Bonn, is that right? uhm, not anymore :( I've moved to stuttgart because of the job i am in bonn atm I've read your mail, just haven't answered yet ah the email I sent you 5 months ago? ;) probably I will come up there in the next 4-6 weeks. My parent lives around there siesel, ! haha! hey SachaS :) well hi holycow hey siesel are you around for a bit? I would happily invite you for a beer or two ;) Sascha, yes, seems like I don't use the account very often ;) holycow. yep, a bit. *** johannesV has quit IRC SachaS: great. I will come back to that. ok do you have my email? siesel, i was curious about the application server development ... and the web driver for it what was the idea behind that, that you could say create an app using the designer and then make it available on the web via the application server driver? yes. something like that the idea was that having a html forms client would be cool. ah, okay what i was wondering was if the push was for write once publish anywhere ir of the ui would haveto be redone for the web or even But I soon realized, that just by using html you cannot get the gnue-forms feeling. There has to be more ... javascript... my concept was: write once use everywhere cool :) was just curious *nod* I just used the designer way, to kind of "compile" gfd files to html forms oh yeah the javascript part is problematic really? oh that makes sense cool :) yes, especially if you want to avoid "reloading" forms and want to use the appserver xmlrpc interface that is because just mozilla and IE can be used to implement xmlrpc. that would be probably the basic web interface characteristic one would need to get rid of *nod* yeah thats some very cool stuff, i'm happy you had the time to explain it to me :) thank you :) reinhard: you here? *** siesel has quit IRC damn missed siesel siesel and me are going to meet for a beer ;) yay siesel did a commit wow kilo: can you do a hitlist of "longest timespan between two commits"? ;-) hmmm, sure will come up with something like that but i think user 'gnue' will win... i meant svn commits like the number of svn commits per user you did there are 2 commits with user name 'gnue' but was j/k anyway gack who was that?? dunno *** siesel has joined #gnuenterprise hey siesel hi reinhard you are in stuttgart now? you come nearer and nearer :) r5434 | jan | 2004-03-21 12:46:44 +0100 (Sun, 21 Mar 2004) | 2 lines add loglevel and "None"-Passing settings not at the moment, but normally is jan's last commit before tpoday hi siesel yeah. austria is like a magnet kilo: so that's not even a year ago hi kilo siesel: is there anything you wanted to ask me? kilo: I've a constant "free time" to "commit rate" ratio :( * reinhard is about to go to bed reinhard: r6432 | gnue | 2004-09-30 19:59:29 +0200 (Thu, 30 Sep 2004) | 1 line Moved the nightly ash scripts to svn yep: a bug in the samples module guess who was that kilo: ah, that was jcater on ash siesel: what bug? calling "gfcvs sample.gfd" on a fresh install ... returns a validation error: PropertyValidationError: Eigenschaft 'address_person.address_country' 'address_country' ist kein gültiger Typ and forms doesn't even startup svn or release? svn error message when starting appserver? no I have never seen that are you sure the db is loaded correctly ? yes. postgres? hmmm, reinhard, i was wrong, user 'gnue' had only 1 commit... yes can you check with psql select gnue_name from gnue_class; hi if you have person and country classes? ok, I found it. I've created the tables with another user night *** SachaS has left #gnuenterprise using the same user when starting appserver solves the problem ouch that's kinda bad error message for that case but good to know it :) :) reinhard: I see I have a few releases to catch up with? :) ajmitch_: yes ajmitch_: wb! thanks siesel: so you think you'll gnue again? oops but there is another error when closing down forms: Traceback (most recent call last): File "/home/jan/Projects/gnue/trunk/gnue-forms/scripts/gnue-forms", line 34, in ? client.run () File "/home/jan/Projects/gnue/trunk/.cvsdevelbase/gnue/forms/GFClient.py", line 174, in run self.getConnectionManager ().closeAll () File "/home/jan/Projects/gnue/trunk/.cvsdevelbase/gnue/common/datasources/GConnections.py", line 508, in closeAll or just a short intermezzo? connection.close () File "/home/jan/Projects/gnue/trunk/.cvsdevelbase/gnue/common/datasources/drivers/appserver/appserver/Connection.py", line 148, in close self._sm.close (self._sess_id, False) File "/home/jan/Projects/gnue/trunk/.cvsdevelbase/gnue/common/rpc/drivers/Base.py", line 232, in __call__ return self._adapter._runMethod (self._methodname, *args, **params) File "/home/jan/Projects/gnue/trunk/.cvsdevelbase/gnue/common/rpc/drivers/xmlrpc/py_xmlrpc/ClientAdapter.py", line 117, in _runMethod raise client.Error, str(sys.exc_info()) Error: ('xmlrpc.error', 'got EOS while reading', ) reinhard: I don't think that I really want to stop gnue at the moment I have holidays, ... i.e. some free time. siesel: that error looks like xmlrpc breakage you didn't stop appserver before closing the form, did you? lol no, I didn't I must confess that since I use sarge for more than a year now I haven't used py_xmlrpc in ages neither has AFAICT anybody else of the usual appserver suspects but this looks like something located exactly in py_xmlrpc is it reproducible? yes you run on woody? Seems like you don't want to hear that ;) yes nevertheless, I need to sleep. Morning is already breaking. CU *** siesel has quit IRC 2004 results reinhard: 579 johannes: 486 jcater: 283 btami: 179 kilo: 127 jamest: 66 jan: 47 dneighbo: 15 dimas: 2 dhill: 1 florin: 1 gnue: 1 2005 results (10 days into this year) johannes: 19 reinhard: 13 jcater: 4 dimas: 2 kilo: 2 btami: 1 jan: 1 alltime results as of 2005/jan/10 jcater: 1918 reinhard: 1106 jamest: 675 johannes: 517 siesel: 442 ntiffin: 439 treshna: 439 dneighbo: 369 btami: 346 kilo: 129 arturas: 127 jmeskill: 118 baumannd: 88 jbailey: 23 cspence: 18 dimas: 13 madlocke: 4 root: 4 gnue: 2 micah: 2 arno: 1 dhill: 1 florin: 1 psu_gnue: 1 wow still half way behind jcater :) night all *** reinhard has left #gnuenterprise *** jamest has left #gnuenterprise *** kilo has quit IRC *** jcater has quit IRC *** holycow has quit IRC *** jamest has joined #gnuenterprise *** sjc has quit IRC *** dcmwai has joined #gnuenterprise *** jamest has left #gnuenterprise *** jcater has joined #gnuenterprise *** wendall911 has quit IRC