IRC logs of #tryton for Thursday, 2011-10-20 #tryton log beginning Thu Oct 20 00:00:03 CEST 2011
zxq9Python question. Why do I always see triple quotesd for __doc__ strings in Python documentation (at, but in Tryton code just single quotes?00:54
ciupicrizxq9, as long as the string is valid it doesn't matter01:18
ciupicrizxq9, triple quotes strings have the advantage of being able to include a quote, e.g. """He said "I love you!" yesterday."""01:19
zxq9ciupicri: Ah, that makes perfect sense now. Thanks!01:38
ciupicrizxq9, you're welcome01:38
zxq9Are there any other Tryton code branches currently linked/available from I'm a little confused (used to the way GitHub and intranet Git repos work -- this project is a bit opaque to me at the moment...)07:14
plantianHere is some more information about the releases:
plantianActually I guess I'm not sure what would tell you but there are repositories under the major version:
plantianfor example07:19
plantianzxq9:  see above07:19
zxq9But I mean individual developer repositories. Where you can say "hey, I just imped feature X, please pull from and test" or whatever07:20
plantianFurthermore you can see the modules at urls such as
plantianRight, not that I know of, usually patches are put up via codereview.07:20
zxq9So there is Trunk, and not really anything else?07:20
plantianI guess people could use bitbucket to clone the repos.07:21
zxq9I'm checking intuxication to see if it permits a slightly looser branching style.07:21
plantianoh yeah there are some repositories on intuxication but for the most part 3rd party development is usually in modules as far as I know07:23
plantianotherwise via patches put on codereview07:23
zxq9Modules is primarily what I'm interested in, but some may require adjustment to existing modules -- or definition of modules which would exclude existing ones (this is probably the better method)07:24
plantianWell most adjustment can be made to existing modules with other modules, although that isn't always completely true.07:25
zxq9Its not in this case.07:25
plantianI don't understand you second case... what do you mean exclude existing ones.07:25
plantianYou can just not install modules.07:26
zxq9I am interested in shuffling some data definitions around to make the system model reality more closely.07:26
plantian*your second07:26
zxq9The current way that data is modeled in company, company.employee, res.user and party.* requires a lot of double-entry of data in a prime/subcontracting situation.07:28
zxq9The same entity (person) is very often a subcontractor, a customer, an employee and needs a Tryton account related to whatever the current contract is, and the way things work right now these relationships are cumbersome to form.07:29
zxq9So I want to move party back one level of abstraction, and permit a party to become a user, a "company", an employee, a manager of other employees (or managed), a supplier, a customer, etc.07:31
zxq9That way relationships can be determined by whatever the real (possibly changing from contract to contract) situation is instead of locked in a supplier <-> seller, user || employee situation.07:32
plantianSo wait, is the problem that the model is redundant or just cannot model the data at all?  The party model isn't that fresh in my mind, but I assumed that party could be the base for multiple roles.07:37
zxq9party *can* be the base for multiple roles. It is perfect for it. But using it correctly for this makes company.* redundant, and party needs to be linked to res.user and a few other things more closely to work well.07:38
zxq9I am interested in expanding the utility of party -- but in ways that will interfere with the current model of company and a few other things.07:38
zxq9I also want to make things like address records many2many, because all of the party records that are employees for a party that is a company would have the same work address -- so reusing that address record makes the most sense.07:39
udonozxq9: Hi, for me the employee address is the address of the employee, not the company. When need the company address I use this. Many2many on addresses is very dangerous. Think about a big business center all shops have the same address. One shop moves away, you fix the address. Then all the other shops in the business center have a new address.07:45
plantianzxq9: I write modules and use tryton but I have tried really hard to avoid heavy changes to the core modules.  You would have to convince the core devs.  My rough guess would be that making these changes would be more of a pain than they would be worth.07:46
zxq9You can't just copy the record to a new one that is exclusive to the moved company?07:46
zxq9Addresses should be like locations, not easily changable. So an address record gets dropped or created, not changed.07:47
udonozxq9: You wanted to use a many2many relationship, not me ;-)07:47
zxq9In my way of thinking (and in other systems I've dealt with)07:47
zxq9So if one center moves, that center's association to the existing address is removed, and a new address created and associated with the record. The existing address is never edited, specifically for the reason you cite.07:48
zxq9This is a much better simulation of reality.07:48
plantianWell either way changing it I think will be a pain because anything that references will be broken.07:49
zxq9And if linked to the googlemaps module could me easily made a pin-and-click feature.07:49
zxq9plantian: That was my point with easy branching methods. It will require a lot of reassociations to make the data models fit the way reality works better. So including my new module should exclude the existing company module, and vice versa.07:50
zxq9Because things would definitely break. Conversion rules would be pretty easy to write once everything is worked out, but installing both modules at the same time would be a disaster.07:51
plantianzxq9: Well in that case you might have to just copy and rewrite all the modules.  Then your modules wouldn't work with other peoples and their modules wouldn't work for you.  It is the pain of shared modules.07:51
zxq9Yeah... But not *everything* would break. I think I can limit the damage.07:52
udonozxq9: sounds interesting. Do you have a big picture?07:52
udonozxq9: anything public to read?07:53
zxq9The goal is to let Tryton move from being retail focused to being used for anything, including contract management and projects.07:53
zxq9Not yet.07:53
plantianIs Tryton retail focused?07:54
plantianI thought there was some sort of projects module.07:54
zxq9Tryton is an amazing framework. Cedrik and others have done some really great things. But it has some legacy underworkings that don't permit some uses well.07:54
zxq9There is a projects module, and it is a good beginning.07:54
zxq9But it doesn't let me create contracts as separate entities that "own" a project via a user/party/employee who is "owned" by another party/company, etc.07:55
zxq9The fact that company, party, user, employee and customer as completely different data sets is the thing I want to fix. Legal persons are legal person in reality, they should be in Tryton as well.07:55
zxq9...and if they are it gives us huge flexibility in the way Tryton is used (while still being familiar to old users)07:56
udonozxq9: for the difference of person and organization we use party_type module07:57
zxq9And similarly locations on the map exist only one time, so they should in Tryton as well. They can't be easily "edited" in reality, so they shouldn't be edited in Tryton, either. Creation and reassignment is what happens in reality, so I think it makes the most sense to do that with many2many address records, etc.07:57
zxq9what about person and user?07:57
zxq9Or person and subcontractor? or employee?07:58
udonozxq9: connected via employee07:58
udonozxq9: user is connected to employee07:58
zxq9I think we're doing too many gymnastics around the existing data set because it isn't an accurate model.07:58
udonozxq9: we use the one from Silverston in Data Model Resource Book Part 1. Which you use?07:59
zxq9That is a Tryton module?07:59
plantianI think he is talking about the party schema used throughout tryton.08:00
zxq9I do not have a book reference. I do have a real-world problem that the current Tryton data model is not adequate to handle (but the GFEBS model recently deployed in USDoD is)08:02
plantianzxq9: I think it will be hard to change but people will look at a proposal.  I have been looking at the code but still don't 100% understand the problems.08:05
plantianI understand the address problem.08:05
zxq9I think a working example is best.08:06
zxq9Its easiest to explain through working code to other programmers/data modelers.08:06
plantianIt seems since everything but user inherits from party you could use the same party.08:06
zxq9I am going to try this way first.08:06
zxq9The existing party model is very close to what I need.08:06
zxq9I want to expand its use and make it more central.08:07
plantianI have found that it is easier to just work around the core than change it even if it isn't perfect.08:07
zxq9But that mkes it more difficult for the next person to understand the problems without a lot of study!08:07
zxq9The real problem with what I want to do is legacy databases already in production. Nobody will want to go to the trouble to write a clean conversion routine.08:08
plantianWell you can include conversions in modules but it will be hard to do cross-module conversions.08:09
zxq9Yes, very hard. So nobody will.08:09
plantianActually that isn't entirely true it could be done between major versions.08:10
plantianList of changes needed to make to fit your model would be good to make though then we could look at them.08:10
zxq9This is the kind of change that would probably require a major version change.08:10
zxq9I think I should make a small repo somewhere to work on this publicly, but not in a place where it will bother you guys until I'm ready to show you something solid.08:11
plantianYeah maybe start with just a list of the changes at a high level before drowing in the code and see if there is a better way to work around them.08:12
zxq9Unfortunately mercurial.intuxication is a bit of a digital ghetto compared to GitHub... :-( The "help" link gives me "Forbidden 403" error, and other barriers exist to access repos.08:13
zxq9Where should I post my change ideas?08:13
zxq9Is the mailinglist a good place to post ideas/get flamed?08:14
plantianHa, you can post ideas and flaming should be avoided.  Just don't cover yourself in gasoline.  I use bitbucket sometimes to post code.08:14
zxq9I think that changes to or modules exclusive of something like will probably attract some interested attention (and in this case I think that is a polite phrase for "flames")08:15
plantianJust coming back here and asking about the link works too.  Remember that a lot of people are in europe too so you might get different level of discussions at different times.08:16
zxq9Ah, that is another issue. A lot of the defaults (like VAT and VIES) are very Euro-centric and don't make any sense here (I'm in Japan)08:17
plantianI think you should just try to express the ideas on a high level first though.  Changing all the core modules will I think take forever without prior detailed discussion.08:17
zxq9But those are easy to turn off in the XML -- but a cleaner interface is a better answer, I think.08:17
zxq9I'll give it a shot and see what happens.08:17
plantianHa 400 weeks later.  Maybe you are better developer than me though.08:18
zxq9I doubt that.08:18
zxq9I do have a real set of project concerns, though, and Tryton is just a great framework. So even if I have to write a bunch of custom modules to lay over or replace existing ones, *something* will come out in workable form.08:19
plantianzxq9: Yeah sounds good, I have had to rewrite a few pieces myself but luckily they were on the perimeter of the core modules.08:23
plantianudono: pong?08:23
zxq9bah! my pong is broken...08:23
udonoyes thanks, didn't recognize I was offline :-)08:24
udonoACTION reading the log08:24
zxq9Hate it when that happens.08:26
udonoSo party_type is a module. Now it is on intuxication, but I will upload it to bitbucket today08:28
zxq9How do I find it in intuxication? That site is a bit awkward to me at the moment.08:28
udonozxq9: but it is old. I'll upload a 2.0 Version to bitbucket.08:31
zxq9 Is this link working for you?08:32
zxq9I think intuxication is having some trouble right now...08:32
udonozxq9: Do you have a link describing the handling of parties in GFEBS?08:33
zxq9Not off hand. Let me look.08:33
zxq9Unfortunately I stopped working there just after we deployed the system, so I don't have access to the system myself anymore -- but it was pretty decent, just really, really huge.08:34
zxq9I can't find anything below the unit level -- and the unit -> soldier level was the most interesting part because GFEBS can handle everything from contracts to project execution to payroll and inter-unit billing across fiscal year cycles.08:37
zxq9And the user ID scheme works through the AKO UID/login process, which means the payroll/HR employee entities are the same as the UID entities.08:38
zxq9Of course, GFEBS has to work across all of DoD, so it must keep its own user database separate from AKO, DKO, NKO, AFO, etc. but the user end is fairly well unified and uniform -- and getting a cost of operation/period is relatively easy.08:40
udonozxq9: for me it sounds like the different roles a party can play in relationships...08:42
zxq9You're right.08:42
zxq9I need to make party a more universal idea, so that it can cover the role of employee, organization/company, and user.08:44
zxq9If that were the case, then project and contract management with really widely varying circumstances is easy and natural to handle.08:45
zxq9At the moment I cannot easily write a module to handle contracts where in one contract company A is a subcontractor, and on the next contract (maybe at the same time) they are a customer also.08:45
zxq9Without creating that entity twice, once as a party and once as a company -- which defeats the purpose of ERP.08:46
udonozxq9: but this does not depends to the party model. Isn't it more a missing feature from a party_role and a party_relationship module?08:49
udonozxq9: this functionality is not used always. Its customer or business-specific.08:50
zxq9Where is party_role and party_relationship? I don't see them on
zxq9Perhaps the modules listed as the complete set is not complete, and this may have something to do with the apparent problem.08:53
udonozxq9: not existing yet. I've started some dev two years ago, but never finished, because the final solution would be to complicated for most users.08:53
zxq9well, this is getting to the root of my problem.08:54
zxq9I think there is a way to make this simpler for users than the way things are now.08:54
zxq9For example, it is confusing that I have these menu options: [Party -> Parties -> Paties associates to Sales] and also have [Party -> Categories -> Categories]08:55
zxq9Which is just one small example, but a lot of the Party relationships are pretty strange like this. Also having Company under Party when it is not treated as a Party in the data is a little strange. Etc.08:55
zxq9A clear separation between addresses and parties should be made (at least for the user), and parties should be made a universal class that can acquire the role(s) of user, employee, company, group, customer, supplier, sub-contractor, etc.08:57
zxq9I think doing this provides more freedom to extend the use of Tryton and make things a little more simple at the same time.08:58
udonozxq9: tryton is a framework. Its users are usually programmer who customize it for their "users". That's the reason why it feels so "unusable", raw and generic. It usually needs customization.08:58
udonoThe menu order try to follow the internal data model. That's good for the programmer, bad for the user...08:59
zxq9I understand, but then why do we have any modules at all? There are some business concepts that are universal because they happen in reality every time.08:59
zxq9Like parties are always legal persons, whether they are companies/corporations, or people doing business or working.09:00
zxq9The same with locations. Locations/addresses themselves don't change when a party moves, the party moves and assigns themselves a new address and disassociates from the old one. This happens the same way in reality, so why not in Tryton?09:01
zxq9Then we can move the requirement for customization down one step closer to the users, and clean up the interface.09:01
udonoA tryton user is not a party. A tryton user is login credentials and access rules. A tryton user can be a system, which push or pull informations into tryton. This system is not nessessarily a legal busines party.09:01
zxq9This is not so different from how Unix users are defined. There are system users/daemons, PAM authentication routines and human users who have extensions for themselves that exist in their interface suite.09:02
udonozxq9: A person user in tryton is connected to an employee, which is an extended party.09:03
zxq9So the UID concept and a party concept are different, but not exclusive. Some daemons dont have a user, for example.09:03
zxq9That is not the way the data model looks to me.09:03
zxq9I can create a user in Tryton and it has no effect on party or employee.09:04
zxq9How do I find them in employee or party?09:04
udonozxq9: This is what I said. A user is not a party in tryton. A user is ... read above09:05
zxq9How do I connect a user to an employee?09:05
udonozxq9: You link it to an employee and a company. See user form.09:05
udonozxq9: A user can use Tryton. A party can be part of a business relation in tryton. This is a difference.09:07
udonozxq9: But a user is not necessarily a party.09:08
zxq9OK, the relationship works backwards to what I expected.09:09
zxq9How about parties being groups which own other parties?09:10
udonozxq9: I have just some writings about this:
udonozxq9: you can put your comments into the reviewif you like.09:11
zxq9Maybe all I need to do is extend in a few places, like making party have a parent/child relationship to other parties?09:11
udonozxq9: yes, I guess09:12
zxq9And set creation/editing rules for some things like many2many addresses (to make them safe like the way you mentioned earlier)09:12
zxq9Does it seem like employee is an implied category that is just not listed?09:14
udonozxq9: possible. But the first step is planning what you exactly need.09:14
zxq9I should start with a definition of contract/sub-contract requirements and how that governs projects and interacts with parties, I think.09:15
zxq9Other things like pass/licensing expiration/recertification management should be pretty simple add-ons to existing party functionality.09:16
udonozxq9: employee is an extension to party model (Keyword: _inherits). Create an employee, look into the database table party_party and company_employee.09:16
udonozxq9: you will see, that the party-part of your employee is stored in the party table and the employee-part is stored in company_employee. Additionally in company_employee is a foreign key in column party, which refers to the party row.09:22
zxq9I can see that.09:22
zxq9And its very helpful.09:22
zxq9I was not realizing that company.employee points both ways.09:22
zxq9It still leaves some problems, but not as big as I thought.09:22
zxq9Which is VERY nice to discover. (^.^)09:23
zxq9Wow, this party_rollup discussion is very old.09:25
zxq9udono: Your party_rollup* and party_type idea accomplishes almost exactly the kind of thing I want to do. A little different way than I was thinking, but it is very close.09:31
-!- hoRn( has left #tryton12:40
-!- ciupicri(~ciupicri@unaffiliated/ciupicri) has joined #tryton12:58
-!- elbenfreund( has left #tryton16:28
ndn_pitwhere can I find examples about workflow?18:22
cedkndn_pit: in modules: sale, purchase, account_invoice18:30
ndn_pitcedk: thank you18:31
cedkndn_pit: perhaps sale_opportunity is simplier18:32
ndn_pitcedk: ok18:33
-!- pjstevns( has left #tryton18:35
cedkyangoon: did you have tested the patch for translation?20:50

Generated by 2.11.0 by Marius Gedminas - find it at!