2008-07-03T00:14:57  <RaphaelBossek> may I edit the http://moinmo.in/MoinMoinTodo/Release%201.7.0 site to put my FeatureRequest into consideration for the next release ?
2008-07-03T00:15:15  <johill> 1.7.0 is already released
2008-07-03T00:15:47  <RaphaelBossek> will there be no maintenance release of 1.7 series anymore ?
2008-07-03T00:15:59  <johill> either way, I think no, we put stuff there we're willing to work on
2008-07-03T00:19:31  <xorAxAx> johill: cdb?
2008-07-03T00:20:22  <johill> xorAxAx: djb's constant database thing
2008-07-03T00:21:14  <xorAxAx> johill: is it written in python?
2008-07-03T00:21:23  <johill> no
2008-07-03T00:21:27  <xorAxAx> why?
2008-07-03T00:21:44  <johill> because I'm lazy
2008-07-03T00:22:14  <johill> look even debian oldstable ships it
2008-07-03T00:22:38  <johill> I'm not going to reinvent the wheel because the old wheel isn't shiny
2008-07-03T00:30:39  <xorAxAx> write a c2py converter :)
2008-07-03T00:30:47  <xorAxAx> you dont need to reinvent a wheel to translate code ;-)
2008-07-03T00:31:03  <johill> just invent a wheel machine
2008-07-03T00:32:37  <johill> are you concerned about the cdb dependency?
2008-07-03T00:32:46  <johill> we can always make a stupid version that uses anydbm and rw locks...
2008-07-03T00:36:47  <xorAxAx> djb is not known for portable well-licensed solutions :)
2008-07-03T00:43:07  <johill> public domain
2008-07-03T00:49:09  <xorAxAx> exactly
2008-07-03T00:49:53  <johill> look
2008-07-03T00:50:01  <johill> I can make an option to plug in the python implementation
2008-07-03T00:50:06  <johill> it's only two orders of magnitude slower
2008-07-03T00:51:02  <johill> or maybe three
2008-07-03T00:51:55  <johill> I don't see your problem
2008-07-03T00:52:16  <johill> and I think you're just trying to push me to reinvent the wheel. I'm not, you can do it
2008-07-03T00:53:46  <johill> I don't see why I should be worried about the licensing if debian ships a GPL2'ed python wrapper around djb's PD C code
2008-07-03T01:00:03  <xorAxAx> johill: well, the idea is that out of the box you shouldnt need external deps
2008-07-03T01:00:12  <xorAxAx> regardless of his (non-) license :)
2008-07-03T01:00:23  <xorAxAx> otherwise i would suggest going for sqlite ;-)
2008-07-03T01:02:24  <johill> I really don't see a problem with small external dependencies
2008-07-03T01:02:49  <johill> (that are easily available too)
2008-07-03T01:03:10  <johill> just because windows doesn't have a decent packaging system doesn't mean everybody has to suffer
2008-07-03T01:04:31  <xorAxAx> well, we are talking about easy deployment
2008-07-03T01:04:45  <xorAxAx> we dont want to assume that everysystem has a gcc installed and the user is able to fetch and compile code
2008-07-03T01:04:56  <xorAxAx> not everybody is running debian with root permissions
2008-07-03T01:05:40  <johill> it's not really a problem
2008-07-03T01:05:56  <johill> there's python code I can ship and import when cdb isn't available
2008-07-03T01:06:00  <johill> it'll just be stupidly slow
2008-07-03T01:06:48  <johill> but I'm not going to do extra work for those who are too stupid to install a trivial dependency
2008-07-03T01:09:45  <johill> and in my book that includes getting your hoster to install it if they don't
2008-07-03T01:09:51  <johill> it's just not a good use of my time
2008-07-03T01:10:26  <xorAxAx> no, thats perfectly fine
2008-07-03T01:11:12  <xorAxAx> so the only issue remains is that one might want some way of recreating the db if the db format changed because one installed the external tool or moved to another machine without it
2008-07-03T01:11:58  <johill> they have the same format
2008-07-03T01:13:36  <xorAxAx> hmm, didnt you say that there is no python implementation?
2008-07-03T01:14:07  <johill> there is
2008-07-03T01:14:16  <johill> it just doesn't count for being far too slow
2008-07-03T05:46:23  <gizmach> moin
2008-07-03T05:50:05  <gizmach> dreimark: "<dreimark> gizmach: self.config = self.TestConfig(group_manager=GroupManager([GroupManagerConfigBackend(groups1), ]),)" there are only defined groups
2008-07-03T05:57:49  <gizmach> dreimark: but the list that is passed is passed ok
2008-07-03T07:33:38  <gizmach> dreimark: http://paste.pocoo.org/show/78422/ this works, but when I try to pass form another method to ACLStringIterator
2008-07-03T07:33:45  <gizmach> it won't work
2008-07-03T07:50:14  <gizmach> msg nickserv id djuro
2008-07-03T07:50:37  <gizmach> ok wrong thing changed passwd
2008-07-03T07:50:39  <gizmach> :D
2008-07-03T08:08:09  <dreimark> gizmach: TestConfig key, values are based on multiconfig as config itselfs
2008-07-03T08:08:28  <gizmach> hi dreimark
2008-07-03T08:08:33  <dreimark> why don't you add append to TestConfig
2008-07-03T08:08:45  <gizmach> huh?
2008-07-03T08:08:47  <dreimark> so that it adds a new var
2008-07-03T08:09:17  <dreimark> to the existing ones ?
2008-07-03T08:09:38  <dreimark> hi gizmach
2008-07-03T08:09:59  <gizmach> hm.. I'm not quiet sure what u want to say
2008-07-03T08:10:13  <dreimark> you have two options
2008-07-03T08:10:59  <dreimark> you can find out what all config vars are needed to make the tests working and can define those self.TestConfig(defaults=['acl_rights_valid', ], group_ ...
2008-07-03T08:11:30  <gizmach> ok,..
2008-07-03T08:12:03  <dreimark> defaults of 'acl_rights_valid' uses config.acl_rights_valid
2008-07-03T08:13:19  <gizmach> yes
2008-07-03T08:13:59  <gizmach> but that is to ACLStringIterator sent as self.request.cfg.acl_rights_valid
2008-07-03T08:16:13  <gizmach> iter = acliter(self.request.cfg.acl_rights_valid, 'UserOne:read,sing,write,drink,sleep') like here in test_security.py
2008-07-03T08:18:22  <dreimark> please show the complete paste
2008-07-03T08:19:17  <dreimark> btw. iter is killed by aour definition
2008-07-03T08:19:37  <dreimark> s/aour/your/
2008-07-03T08:20:40  <gizmach> http://paste.pocoo.org/show/78423/
2008-07-03T08:22:36  <gizmach> I need to give the acl_rights valid and my parameters , and they are proceed right to the prat of code in security/__init__.py when I called the ACLStringIterator
2008-07-03T08:23:38  <gizmach> in my case the second argument is acl_lines [u'JoeDoe:read, write'] (when I run a test - before it fails)
2008-07-03T08:23:50  <dreimark> how does it fail
2008-07-03T08:24:51  <gizmach> http://paste.pocoo.org/show/78424/
2008-07-03T08:24:53  <dreimark> UserOne:read,sing,write,drink,sleep') like here in test_security.py
2008-07-03T08:24:53  <dreimark> 08:18 < dreimark> please show the complete paste
2008-07-03T08:25:03  <dreimark> sorry meant not that
2008-07-03T08:25:11  <dreimark>  'UserOne:read,sing,write,drink,sleep')
2008-07-03T08:25:28  <dreimark> where do you have defined sing ?
2008-07-03T08:26:28  <gizmach> http://paste.pocoo.org/show/78425/
2008-07-03T08:26:31  <gizmach> ah ardon
2008-07-03T08:26:39  <gizmach> it's a test for ignoring invalid arguments
2008-07-03T08:27:05  <dreimark> right, but which tests are from you
2008-07-03T08:27:15  <dreimark> and in which of your tests did what fail?
2008-07-03T08:27:23  <gizmach> dreimark: they are not, it was my example how it was done
2008-07-03T08:27:33  <gizmach> ok I will send you my test
2008-07-03T08:28:51  * dreimark waits
2008-07-03T08:29:03  <gizmach> http://paste.pocoo.org/show/78426/ this iter variable was just to check will that part work if I gave it self.request.cfg.acl_rights_valid
2008-07-03T08:30:12  <gizmach> and the error is http://paste.pocoo.org/show/78424/
2008-07-03T08:34:31  <dreimark> You have written a new Test Class based on TestAcl? and you just forgot to paste it ?
2008-07-03T08:35:16  <gizmach> dreimark: this is a complete new test
2008-07-03T08:35:30  <gizmach> in datastruct/backends/_tests
2008-07-03T08:35:37  <gizmach> I done some code splitting
2008-07-03T08:35:45  <ThomasWaldmann> gizmach: please test YOUR code (of datastruct)
2008-07-03T08:36:19  <ThomasWaldmann> it is totally pointless playing around with acl_rights_valid if you just have to test groups
2008-07-03T08:36:47  <ThomasWaldmann> (moin, btw :)
2008-07-03T08:37:30  <gizmach> ThomasWaldmann: but how else I could see if that part of code is really working?
2008-07-03T08:38:32  <gizmach> and moin
2008-07-03T08:40:01  <ThomasWaldmann> gizmach: there is read,write,delete,revert,admin in it by default
2008-07-03T08:40:29  <gizmach> yes
2008-07-03T08:50:12  <dreimark> TestConfig has two modes currently
2008-07-03T08:52:07  <gizmach> hm..
2008-07-03T08:52:23  <gizmach> mean defaults as one of them?
2008-07-03T08:52:30  <dreimark> right
2008-07-03T08:57:59  <gizmach> but isn't that what I'm trying to do?
2008-07-03T09:05:11  <ThomasWaldmann> your code has quite some typos making it impossible to work
2008-07-03T09:05:42  <gizmach> urgh
2008-07-03T09:06:24  <ThomasWaldmann> e.g. the right part of an acl entry is a list of right names separate by commas - but there are no blanks in that part
2008-07-03T09:06:56  <ThomasWaldmann> btw, "right part" has 2 correct readings above :))
2008-07-03T09:06:57  <gizmach> I removed blanks a bit before
2008-07-03T09:07:35  <gizmach> huh
2008-07-03T09:08:17  <ThomasWaldmann> you don't need ACLStringIterator for your test
2008-07-03T09:08:40  <gizmach> I know, I just tried if that works, also reemoved it
2008-07-03T09:10:16  <ThomasWaldmann> and of course acl_rights has to involve one of your groups
2008-07-03T09:11:20  <gizmach> ok
2008-07-03T09:14:16  <dreimark> gizmach: please add a setup_method and a teardown_method to the tests class defintion
2008-07-03T09:14:42  <gizmach> dreimark: ok
2008-07-03T09:25:11  <gizmach> ok solved one part of problem :)
2008-07-03T09:28:34  <ThomasWaldmann> gizmach: btw, that is not a test for the "may" method
2008-07-03T09:29:13  <ThomasWaldmann> you are doing a highlevel test whether your group code works withing ACLs
2008-07-03T09:31:37  <ThomasWaldmann> (maybe try to comment on a more semantic level, rather than repeating method/class/function names)
2008-07-03T09:34:09  <gizmach> ok will try to do that
2008-07-03T09:36:35  <ThomasWaldmann> (same is true for the datastruct comments, btw)
2008-07-03T09:37:42  <ThomasWaldmann> ok, after that please look for other groups use that still uses wikidicts and also change it to use your new code
2008-07-03T09:38:56  <ThomasWaldmann> btw, if you are looking at it, keep an eye on whether the usage requires keeping order of members
2008-07-03T09:39:09  <ThomasWaldmann> (the old code did that, the new does not)
2008-07-03T09:39:25  <gizmach> ok
2008-07-03T09:42:02  <gizmach> than I need to check if def _check(request, pagename, username, right): works
2008-07-03T09:42:10  <gizmach> for groups
2008-07-03T09:42:11  <ThomasWaldmann> btw, you have realized how it does the member list?
2008-07-03T09:43:53  <ThomasWaldmann> (how to get a member list from a Group object)
2008-07-03T09:46:24  <gizmach> members = gm[GroupObject] ? or you meant on something else?
2008-07-03T09:49:24  <ThomasWaldmann> that is NOT members. and GroupObject should be groupname.
2008-07-03T09:50:26  <xorAxAx> what is it if not members?
2008-07-03T09:50:45  <ThomasWaldmann> a Group object
2008-07-03T09:50:59  <xorAxAx> hmm, yes
2008-07-03T09:51:06  <xorAxAx> so iter(that)?
2008-07-03T09:51:42  <ThomasWaldmann> gizmach: so give a Group object "group", how do you get the group members?
2008-07-03T09:52:15  <ThomasWaldmann> s/give/given/
2008-07-03T10:02:45  <gizmach> for member in group : (do something) ?
2008-07-03T10:05:02  <xorAxAx> ThomasWaldmann: whats the problem about my suggestion?
2008-07-03T10:14:13  <ThomasWaldmann> gizmach: if you use for i in group, what is it calling from group?
2008-07-03T10:15:17  <gizmach> __iter__ ? (I'm not sure what you mean on it)
2008-07-03T10:15:39  <ThomasWaldmann> yes
2008-07-03T10:16:00  <ThomasWaldmann> and now, if you want all members at once?
2008-07-03T10:16:27  <xorAxAx> ThomasWaldmann: ?
2008-07-03T10:16:29  <gizmach> ah
2008-07-03T10:16:49  <xorAxAx> gizmach: havent you seen my msg either? :)
2008-07-03T10:16:53  <gizmach> i can use iter(group) and it creates an object
2008-07-03T10:16:55  <ThomasWaldmann> a list of all members is used at some places in moin
2008-07-03T10:17:20  <gizmach> xorAxAx: ah... didn't recognize
2008-07-03T10:17:38  <ThomasWaldmann> ok, to make it short: list(iterable_object) gives a list...
2008-07-03T10:17:56  <xorAxAx> hmm, yes, a list
2008-07-03T10:18:02  <ThomasWaldmann> and as Group obj has __iter__, it qualifies for that
2008-07-03T10:18:19  <gizmach> ok
2008-07-03T10:18:34  <ThomasWaldmann> gizmach: thus, you won't implement members(), but just use list(group)
2008-07-03T10:19:29  <ThomasWaldmann> and maybe add that list(group) hint below the __iter__ comment talking about that it might be expensive.
2008-07-03T10:19:51  <gizmach> :)
2008-07-03T10:20:23  <ThomasWaldmann> that way we maybe can avoid users of Group code carelessly fetching all members if they don't really need it
2008-07-03T10:21:47  <ThomasWaldmann> (but, at least 2 places in moin really need a full members list)
2008-07-03T10:22:10  <gizmach> yes I thihnk I have them written somewhere
2008-07-03T10:22:23  <ThomasWaldmann> otoh, it is rather unlikely that those groups will be in ldap :)
2008-07-03T10:22:44  <gizmach> heh yes
2008-07-03T10:40:52  <mmihaljevic> damit
2008-07-03T10:42:52  <mmihaljevic> ok I still have troubles with test :( I defined group_manager and I have it in Config object but when I try to run a test >       AttributeError: 'Config' object has no attribute 'group_manager'
2008-07-03T10:51:19  <xorAxAx> where did you define it?
2008-07-03T10:54:00  <mmihaljevic> in setUp but also in Config in wikiconfig_local
2008-07-03T10:55:21  <mmihaljevic>  group_manager = request.cfg.group_manager the line that is falling is
2008-07-03T10:55:35  <xorAxAx> umm
2008-07-03T10:55:43  <xorAxAx> setUp? wth?
2008-07-03T10:55:47  <xorAxAx> please put it into setup_class
2008-07-03T10:55:50  <xorAxAx> cf. the py.test docs
2008-07-03T10:56:01  <xorAxAx> and dont use wikiconfig_local for it
2008-07-03T10:56:14  <xorAxAx> it should work for everybody :)
2008-07-03T11:07:49  <mmihaljevic> xorAxAx: setUp in my test
2008-07-03T11:07:59  <mmihaljevic> but ok u r right
2008-07-03T11:14:05  <mmihaljevic> xorAxAx: setUp was in comments I found in configtest.py
2008-07-03T11:14:48  <mmihaljevic> xorAxAx: thx ;)
2008-07-03T11:16:00  <mmihaljevic> Finaly test works properly
2008-07-03T11:19:07  <xorAxAx> configtest?
2008-07-03T11:20:52  <xorAxAx> ah, then please fix the comment :)
2008-07-03T11:21:16  <xorAxAx> by generating a patch against the main repo
2008-07-03T11:25:53  <mmihaljevic> will do that
2008-07-03T11:25:59  <mmihaljevic> xorAxAx: huh?
2008-07-03T11:26:53  <xorAxAx> mmihaljevic: well, it should be valid for the main branch and not your repo :)
2008-07-03T11:27:04  <xorAxAx> because it is not a bug related to your branch :)
2008-07-03T11:27:21  <mmihaljevic> xorAxAx: well yes it's true
2008-07-03T11:27:49  <mmihaljevic> and it's conftest pardon
2008-07-03T11:58:00  <xorAxAx> the idea is to make sure yourself that you have understood the idea :)
2008-07-03T12:10:54  <CIA-53> MelitaMihaljevic default * 3689:24d40b02042e 1.8-ldapgroups-mmihaljevic/MoinMoin/datastruct/ (5 files in 2 dirs): splited datastruct code to a high level code and backend
2008-07-03T12:10:55  <CIA-53> MelitaMihaljevic default * 3690:3266cb6671e1 1.8-ldapgroups-mmihaljevic/MoinMoin/security/__init__.py: enabled config group backend to work with chackin acl rights
2008-07-03T12:10:56  <CIA-53> MelitaMihaljevic default * 3691:2d51cf058ef0 1.8-ldapgroups-mmihaljevic/MoinMoin/datastruct/backends/_tests/test_groupconfig.py: test to se whether group config backend works with ACL
2008-07-03T13:46:31  <xorAxAx> mitsuhiko: ping
2008-07-03T13:46:40  <mitsuhiko> xorAxAx: pon
2008-07-03T13:46:53  <xorAxAx> mitsuhiko: you didnt join the meeting yesterday
2008-07-03T13:46:57  <xorAxAx> neither did your student
2008-07-03T13:47:14  <mitsuhiko> xorAxAx: i was unable because i had driving security training
2008-07-03T13:47:29  <mitsuhiko> should have written a message earlier but totally forgot about that
2008-07-03T13:47:44  <xorAxAx> zenhase still havent shown up AFAIK
2008-07-03T13:47:44  <ThomasWaldmann> well, at least you survived :)
2008-07-03T13:47:47  <xorAxAx> s/v/s/
2008-07-03T13:48:04  <mitsuhiko> ThomasWaldmann: and it was great fun :)
2008-07-03T13:56:13  <ThomasWaldmann> mitsuhiko: please help zenhase with the midterm schedule. midterm stuff will mostly happen next week and the student shouldn't play last-minute.
2008-07-03T13:56:39  <ThomasWaldmann> (because the mentor will need a bit time looking at stuff, testing stuff and finally filling out the midterm forms for google)
2008-07-03T14:08:21  <xorAxAx> also we dont want to fail him
2008-07-03T14:14:34  <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4267:ec43d541bd0a 1.8-mercurialbackend-ppacana/ (208 files in 42 dirs): Merge with 1.8-storage-cdenter
2008-07-03T14:14:36  <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4268:0f0675dccd5d 1.8-mercurialbackend-ppacana/MoinMoin/storage/_tests/test_backends.py: (backend tests) Generic backend tests refactoring - more tests. Metadata tests import from memory backend tests. Fixed tests (related cset: ad9a4c844ec6).
2008-07-03T14:20:58  <xorAxAx> mitsuhiko: its rather bad because zenhase had already missed the first meeting
2008-07-03T14:21:07  <mitsuhiko> yes
2008-07-03T14:21:09  <xorAxAx> without providing any excuse
2008-07-03T14:32:33  <johill> PawelPacana: hehehe
2008-07-03T14:32:37  <johill> - Remember to set up your backend environment with items: either
2008-07-03T14:32:39  <johill> + Rebackender to set up your backend environment with items: either
2008-07-03T14:35:21  <johill> oi!
2008-07-03T14:35:37  <johill> does rename_item rename right away or only on commit? dennda, we need a test for that either way
2008-07-03T14:37:23  <johill> I think we should go for rename right away even if the other might make a bit more sense, it's much easier
2008-07-03T14:37:58  <PawelPacana> for now dennda defined in API right away
2008-07-03T14:38:49  <johill> yeah
2008-07-03T14:39:03  <PawelPacana> i would go for rename on commit, though
2008-07-03T14:39:59  <johill> but then we need to define a 'start_transaction' instead of doing it implicitly on create_revision
2008-07-03T14:40:45  <PawelPacana> johill: that docstring stuff came from s/memb/backend after test import ;)
2008-07-03T14:42:11  <johill> yeah I thought so :)
2008-07-03T14:42:27  <johill> we should discuss that with dennda
2008-07-03T14:43:18  <PawelPacana> if we define explicit start_transaction
2008-07-03T14:43:37  <johill> then?
2008-07-03T14:43:44  <PawelPacana> ah, ok
2008-07-03T14:43:57  <PawelPacana> commit is explicit end of transaction
2008-07-03T14:45:37  <johill> or rollback yeah
2008-07-03T14:46:06  <johill> yeah we can do start(), but the more we allow in a transaction the harder it gets to implement
2008-07-03T14:48:12  <PawelPacana> as for me, doing create_revision is just enough to signal that we're doing something new (implicit start()) to item which will be delivered at the end of transaction (with new revision)
2008-07-03T14:48:23  <johill> in fact, rename+new new revision is pretty hard to implement already in a filesystem backend
2008-07-03T14:48:39  <johill> right
2008-07-03T14:49:24  <johill> I can't think of a good way to imlement rename+newrev atomically on the filesystem
2008-07-03T14:52:07  <johill> ok the only thing I can come up with is (1) remove the old name, (2) add the revision, (3) add the new name
2008-07-03T14:53:28  <johill> but in reality it doesn't matter
2008-07-03T14:53:36  <johill> it's racy either way
2008-07-03T14:53:57  <johill> so I think we should just have rename_item act right away
2008-07-03T14:54:16  <xorAxAx> byegonweon: btw, its not necessary to log your actions for every day - grouping them by week is fine
2008-07-03T14:55:35  <PawelPacana> johill: ok, choose what fits most present and future backends
2008-07-03T14:55:59  <johill> I can't really know about future
2008-07-03T14:56:12  <johill> but see, the point is even if you rename+new-revision in one step
2008-07-03T14:56:39  <johill> then somebody can still have a page handle via the old name, and see the new revision under that page handle
2008-07-03T14:57:32  <johill> to protect against that we'd have to make that new revision invisible if accessed under the old-name-handle which is really complicated
2008-07-03T14:57:40  <johill> also, it doesn't really matter much
2008-07-03T14:57:55  <johill> from a user perspective, rename is always a bit racy
2008-07-03T14:58:02  <johill> so if we widen the race window a bit here it doesn't really matter
2008-07-03T15:01:57  <johill> of course, it's not so nice that one of them can fail and the other succeeds
2008-07-03T15:02:02  <johill> but in practice that won't happen
2008-07-03T15:02:55  <johill> so when it does, we just end up with a new revision that says "this page was renamed from XYZ" and the page is still named XYZ
2008-07-03T15:02:59  <johill> big deal
2008-07-03T15:05:57  <dreimark> mmihaljevic: _tests/test_datastruct.py[1] F
2008-07-03T15:06:30  <dreimark> the test is broken, please fix it
2008-07-03T15:16:28  <mmihaljevic> dreimark: ok will do now
2008-07-03T15:18:04  <mmihaljevic> dreimark: did
2008-07-03T15:20:35  <CIA-53> MelitaMihaljevic default * 3692:ee3824753858 1.8-ldapgroups-mmihaljevic/MoinMoin/datastruct/_tests/test_datastruct.py: fixed test
2008-07-03T15:20:37  <mmihaljevic> dreimark: now should work
2008-07-03T15:21:20  <mmihaljevic> dreimark: started enabling wiki groups
2008-07-03T15:24:50  <CIA-53> Johannes Berg <johannes AT sipsolutions DOT net> default * 3742:dcd932f8c4ec 1.7/MoinMoin/ (_tests/test_wikiutil.py wikiutil.py): fix MoinMoinBugs/TypeErrorInWikiutils
2008-07-03T15:26:46  <CIA-53> Johannes Berg <johannes AT sipsolutions DOT net> default * 3816:6e7ab559c67d 1.8/MoinMoin/ (5 files in 4 dirs): merge fixes from 1.7
2008-07-03T15:34:09  <ThomasWaldmann> bbl
2008-07-03T15:41:19  <dennda> johill: there are two tests (one with unicode) for renaming an item
2008-07-03T15:41:54  <dennda> And yes, it happens right away at the moment
2008-07-03T15:47:50  <mmihaljevic> dreimark: and ThomasWaldmann ok I think the part of wikigroups is changed in wikisync now,
2008-07-03T15:51:06  <dreimark> mmihaljevic: wikisync? more verbose why wikisync?
2008-07-03T15:51:33  <mmihaljevic> ok pastebin will help
2008-07-03T15:52:12  <johill> dennda: ok good, thanks
2008-07-03T15:52:20  <johill> dennda: any progress on hooking it up?
2008-07-03T15:53:43  <mmihaljevic> http://paste.pocoo.org/show/78443/ I enable wikigroups at any place is needed
2008-07-03T15:54:22  <mmihaljevic> "ThomasWaldmann> ok, after that please look for other groups use that still uses wikidicts and also change it to use your new code"
2008-07-03T15:54:29  <mmihaljevic> dreimark:
2008-07-03T15:54:32  <dennda> johill: hooking it up?
2008-07-03T15:54:56  <johill> making the rest of moin use it
2008-07-03T15:55:23  <dreimark> mmihaljevic: I know. you find any place which now needs to be changed by running py.test on the top level dir.
2008-07-03T15:55:41  <dreimark> so please explain 15:47 < mmihaljevic> dreimark: and ThomasWaldmann ok I think the part of wikigroups is changed in wikisync now,
2008-07-03T15:56:20  <mmihaljevic> well I changed this one
2008-07-03T15:56:36  <mmihaljevic> huh dono how to explain
2008-07-03T15:57:47  <xorAxAx> mmihaljevic: we need more context - where did you change that?
2008-07-03T15:59:40  <mmihaljevic> http://paste.pocoo.org/show/78445/ but need some small things to change here
2008-07-03T15:59:45  <mmihaljevic> diff
2008-07-03T16:00:36  <xorAxAx> why did you comment it out? also the star import is not nice
2008-07-03T16:00:58  <xorAxAx> furthermore your code contains a NameError
2008-07-03T16:01:10  <johill> dennda: also, have you seen http://moinmo.in/JohannesBerg/FilesystemStorage yet?
2008-07-03T16:01:16  <xorAxAx> sorry that i didnt write any unittests for that code - otherwise you will have noticed that :)
2008-07-03T16:02:49  <mmihaljevic> xorAxAx: comment is for me when I start to write something
2008-07-03T16:03:02  <mmihaljevic> that's the one ofthe things I'll remove
2008-07-03T16:03:18  <xorAxAx> yeah, but do so before committing please :)
2008-07-03T16:03:25  <mmihaljevic> true
2008-07-03T16:03:29  <mmihaljevic> I didn't commit
2008-07-03T16:03:52  <mmihaljevic> or you mean on the previuos code
2008-07-03T16:05:40  <mmihaljevic> and find NameError, thx
2008-07-03T16:06:22  <PawelPacana> dennda: in spare time, please have a look at test_backends.py and subclassed test_backends_hg.py. Try to subclass Memory backend tests then. Any merges should apply cleanly, as i merged your repo today
2008-07-03T16:07:20  <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4269:806b9c18e9d0 1.8-mercurialbackend-ppacana/MoinMoin/storage/_tests/test_backends.py: (backend tests) Fixed docstring after automated string replace.
2008-07-03T16:09:04  <dreimark> mmihaljevic: you have seen the other tests failing ?
2008-07-03T16:09:43  <mmihaljevic> dreimark: huh?
2008-07-03T16:10:03  <dreimark> cd
2008-07-03T16:10:08  <dreimark> cd MoinMoin
2008-07-03T16:10:10  <dreimark> py.test
2008-07-03T16:11:12  <mmihaljevic> running
2008-07-03T16:11:25  <mmihaljevic> and yes some of them are failing
2008-07-03T16:17:31  <dreimark> after changing wikisync and committing please find out why these tests are failing
2008-07-03T16:17:39  <dreimark> and try to fix it
2008-07-03T16:18:26  <dreimark> e.g. py.test test_Page.py
2008-07-03T16:18:32  <dreimark> bbl
2008-07-03T16:18:34  <mmihaljevic> dreimark: :) ok
2008-07-03T16:18:36  <dennda> johill: neither, I am in university (lecture) at the moment
2008-07-03T16:19:24  <johill> :)
2008-07-03T16:25:16  <PawelPacana> johill: are Items without Revisions allowed to exist?
2008-07-03T16:25:37  <johill> yes
2008-07-03T16:25:54  <johill> they they only have (potentially empty!) metadata
2008-07-03T16:26:31  <dennda> you store an item persistently with either publish_metadata or commit
2008-07-03T16:26:41  <PawelPacana> so that: item = back.create_item(name) ; item.commit() is allowed
2008-07-03T16:26:47  <dennda> no
2008-07-03T16:26:50  <dennda> that is not allowed
2008-07-03T16:27:12  <dennda> you need to distinguish between storing a revision on an item and storing metadata
2008-07-03T16:28:01  <dennda> item = back.create_item("foo"); item.create_revision(0); item.commit() OR item = back.create_item("foo"); item.change_metadata(); item["foo"] = "bar"; item.publish_metadata()
2008-07-03T16:28:08  <CIA-53> MelitaMihaljevic default * 3693:73f2f64c7e75 1.8-ldapgroups-mmihaljevic/MoinMoin/wikisync.py: change the code that was using wikiditct to use new backend code for groups
2008-07-03T16:28:14  <PawelPacana> point is, when Item starts to exist
2008-07-03T16:28:40  <johill> PawelPacana: when you commit() or when you publish_metadata()
2008-07-03T16:28:47  <PawelPacana> dennda: ok, thats what i was lokking for
2008-07-03T16:30:49  <johill> PawelPacana: but you wanted to not store item metadata persistently anyway, did you?
2008-07-03T16:31:16  <johill> I mean, in the hg repo
2008-07-03T16:31:34  <PawelPacana> no, meta is not in hg
2008-07-03T16:32:41  <johill> we should document such things somewhere
2008-07-03T16:33:13  <dennda> what things?
2008-07-03T16:33:33  <johill> for example that item metadata for the page backend shouldn't be used for important data
2008-07-03T16:33:57  <johill> that's a high-level thing
2008-07-03T16:35:45  <xorAxAx> define important :)
2008-07-03T16:36:02  <johill> non-transient
2008-07-03T16:36:36  <xorAxAx> well, wikisync data is non-transient
2008-07-03T16:37:20  <johill> what does it store there?
2008-07-03T16:37:36  <johill> and what happens if its lost?
2008-07-03T16:37:42  <xorAxAx> information about which remote pagename:rev it corresponds to
2008-07-03T16:37:53  <xorAxAx> the sync operation will produce conflicts
2008-07-03T16:38:59  <johill> why is that item metadata and not tied to a revision?
2008-07-03T16:39:45  <xorAxAx> because moin doesnt have revision-metadata :)
2008-07-03T16:40:00  <xorAxAx> i guess the algorithm could be changed to work on revisions for that part
2008-07-03T16:40:07  <johill> heh ok
2008-07-03T16:40:39  <johill> can you point me to the code?
2008-07-03T16:41:01  <xorAxAx> its in wikisync.py, action/SyncPages and xmlrpc
2008-07-03T16:41:15  <johill> well yeah
2008-07-03T16:41:19  <xorAxAx> the sync algo is in the action
2008-07-03T16:41:35  <johill> is that the tag store stuff?
2008-07-03T16:41:41  <xorAxAx> yes
2008-07-03T16:42:42  <xorAxAx> http://hg.moinmo.in/moin/1.8/file/6e7ab559c67d/MoinMoin/action/SyncPages.py : 306
2008-07-03T16:42:47  <xorAxAx> there it is digesting the tags
2008-07-03T16:42:58  <xorAxAx> and deduces which information is usable
2008-07-03T16:44:14  <xorAxAx> its basically using the newest tag that is matching for a remote site
2008-07-03T16:45:09  <johill> what's that talk about locking pages about?
2008-07-03T16:45:42  <mmihaljevic> dreimark: ok I know why tests fails:)
2008-07-03T16:46:17  <mmihaljevic> still problem in Config missing attributes
2008-07-03T16:46:25  <xorAxAx> johill: well, moin didnt have locking and thats still missing
2008-07-03T16:46:37  <xorAxAx> it needs exclusive write locks to avoid issues
2008-07-03T16:46:52  <johill> what sort of issues?
2008-07-03T16:46:57  <xorAxAx> data corruption :)
2008-07-03T16:47:01  <xorAxAx> broken wiki pages
2008-07-03T16:47:37  <xorAxAx> its assuming that the large loop in sync can use the page on its own
2008-07-03T16:47:53  <xorAxAx> and that loop may run up to 30 seconds
2008-07-03T16:48:09  <xorAxAx> per iteration :)
2008-07-03T16:48:25  <xorAxAx> (which doesnt mean that the total time is #secsperloop * #pages)
2008-07-03T16:48:40  <xorAxAx> but it implies that data corruption will happen quickly in real world usage
2008-07-03T16:48:57  <johill> I don't see how to fix that w/o doing locking all through which absolutely sucks for scalability
2008-07-03T16:49:49  <johill> but I also don't understand why it needs that promise
2008-07-03T16:51:15  <xorAxAx> locking all?
2008-07-03T16:51:20  <xorAxAx> i just need to lock a single page
2008-07-03T16:51:31  <xorAxAx> (but 8 pages will be locked in the end at a single time)
2008-07-03T16:51:38  <xorAxAx> johill: well, because its keeping local state
2008-07-03T16:51:49  <xorAxAx> that refers to the specific state it saw when entering the loop
2008-07-03T16:52:18  <johill> "locking all through", I was thinking RW locks on pages etc.
2008-07-03T16:52:42  <xorAxAx> locking on the upper layer is very important, yes
2008-07-03T16:53:02  <johill> no, it's not actually, for everything else
2008-07-03T16:53:26  <xorAxAx> ?
2008-07-03T16:53:44  <xorAxAx> well, if it works implicitly (through transactions) thats fine as well
2008-07-03T16:54:02  <johill> well, no, that cannot guarantee it'll work
2008-07-03T16:54:09  <xorAxAx> well, thats bad
2008-07-03T16:54:09  <johill> which wikisync seems to require
2008-07-03T16:54:18  <johill> it can only guarantee that it's consistent
2008-07-03T16:54:20  <xorAxAx> because you cant force everybody to code lockfree
2008-07-03T16:54:25  <xorAxAx> no, it cannot
2008-07-03T16:54:30  <xorAxAx> because this is a distributed operation
2008-07-03T16:54:36  <xorAxAx> its not only happening locally
2008-07-03T16:55:03  <johill> no what I'm saying is that all this trouble plagues only wikisync
2008-07-03T16:55:09  <johill> everything else is fine w/o locks
2008-07-03T16:56:45  <xorAxAx> well, i gave you the obvious reason :)
2008-07-03T16:57:15  <johill> what obvious reason?
2008-07-03T16:57:45  <xorAxAx> 16:54:30 <         xorAxAx > because this is a distributed operation
2008-07-03T16:57:45  <xorAxAx> 16:54:36 <         xorAxAx > its not only happening locally
2008-07-03T16:58:02  <johill> well yeah, for wikisync
2008-07-03T16:58:08  <xorAxAx> wikisync is always working on two machines parallely
2008-07-03T16:58:12  <johill> but it'd be very stupid to throw scalability out because of wikisync
2008-07-03T16:58:37  <xorAxAx> i dont see how that implies the other
2008-07-03T16:59:11  <xorAxAx> johill: do you know any wlan test tool for linux that you can use to see whether hw+drv work fine and support all stuff?
2008-07-03T16:59:14  <johill> doing read locks for every page access is far too expensive
2008-07-03T16:59:19  <xorAxAx> nobody said that
2008-07-03T16:59:30  <xorAxAx> wikisync doesnt mutate existing revisions
2008-07-03T16:59:34  <xorAxAx> it only adds new ones
2008-07-03T16:59:43  <johill> wireless test tool? not really, you'd have to have a test AP too
2008-07-03T17:00:00  <johill> yeah but it assumes nobody else can do that in the meantime
2008-07-03T17:00:00  <xorAxAx> i guess you could have one that pairs up with openwrt
2008-07-03T17:00:20  <johill> which means you'd have to have an exclusive "no new revisions" lock
2008-07-03T17:00:25  <xorAxAx> yes
2008-07-03T17:02:41  <johill> which, clearly, we don't implement at the moment nor plan to
2008-07-03T17:03:20  <xorAxAx> probably its not necessary if both sides support transactions
2008-07-03T17:03:44  <xorAxAx> hmm, 2 phase commit thats called
2008-07-03T17:03:55  <xorAxAx> the missing feature to make it robust again
2008-07-03T17:04:00  <xorAxAx> johill: will you implement that? :)
2008-07-03T17:04:31  <mmihaljevic> bb in 2h
2008-07-03T17:05:21  <johill> not currently planned, and very hard to implement too
2008-07-03T17:05:41  <johill> essentially it's no different from a lock
2008-07-03T17:05:52  <johill> except hte lock has to be on the logs rather than the items
2008-07-03T17:07:56  <johill> (because the new data may not yet be visible, but other transactions must already fail)
2008-07-03T17:10:08  <johill> all these protocols aren't designed with concurrency in mind
2008-07-03T17:11:07  <johill> concurrency within a node, I mean
2008-07-03T17:14:30  <johill> you could just require wikisync to have edit_locking = 'lock 10' required and use edit-locks yourself
2008-07-03T17:22:07  <xorAxAx> lol
2008-07-03T17:22:36  <johill> ?
2008-07-03T17:24:19  <xorAxAx> well, that was a suggestion to do abstraction inversion :)
2008-07-03T17:26:02  <johill> umm, not really
2008-07-03T17:26:10  <johill> edit-locks are high level locks as you require
2008-07-03T17:28:54  <johill> you want to lock out users so you might as well be explicit about it
2008-07-03T17:31:21  <xorAxAx> yes, thats a good point
2008-07-03T17:32:50  <johill> there's no inversion, those _are_ highlevel locks implemented using the storage primitives (atomic metadata updates), and that's exactly what you need
2008-07-03T17:33:05  <johill> the only thing is that they aren't exactly default
2008-07-03T17:33:26  <johill> you could instead implement a second lock that behaves similarly, of course
2008-07-03T17:49:50  <johill> it would be easy to encode the type of edit-lock instead of using the config, so wikisync could always set a real lock and the wiki could still use soft locks
2008-07-03T18:44:36  <dreimark> bbl ~4h
2008-07-03T18:49:15  <ThomasWaldmann> re
2008-07-03T18:55:10  <mmihaljevic> re
2008-07-03T19:04:37  <mmihaljevic>  I have falling test_Pages.py and find a reason for it but still thinking how to solve it
2008-07-03T19:04:50  <mmihaljevic> http://paste.pocoo.org/show/78463/ and my problem is how to put the config
2008-07-03T19:05:12  <mmihaljevic> in the backend/_tests/ was easy because I could give it as argument and it was defined in setup_class
2008-07-03T19:05:18  <mmihaljevic> here I can't do that
2008-07-03T19:05:26  <mmihaljevic> if anyone has some idea
2008-07-03T19:06:14  <xorAxAx> well, you need to modify multiconfig.py
2008-07-03T19:06:22  <xorAxAx> you are hitting the default case
2008-07-03T19:06:38  <xorAxAx> and multiconfig.py should init that attrib sanely and in a backwards compatible manner
2008-07-03T19:06:55  <xorAxAx> which means that it would fetch its groups from the wiki only
2008-07-03T19:19:08  <mmihaljevic> xorAxAx: ok thx
2008-07-03T19:22:49  <mmihaljevic> let's see
2008-07-03T19:27:06  <johill> dennda: has_item is buggy
2008-07-03T19:57:04  <johill> it works :)
2008-07-03T19:59:35  <johill> at least it passes all tests ;)
2008-07-03T20:00:34  <PawelPacana> johill: should it be possible to commit empty revisions? i mean: item.create_revision(num); item.commit(); item.create_revision(num+1); item.commit() ...
2008-07-03T20:01:04  <PawelPacana> or rather, revisions with data that hasnt changed
2008-07-03T20:02:51  <johill> yeah
2008-07-03T20:02:54  <johill> it could have metadata
2008-07-03T20:04:07  <CIA-53> Johannes Berg <johannes AT sipsolutions DOT net> default * 4240:fae11f79ee9e 1.8-storage-cdenter/MoinMoin/storage/tests_backend_api.py: storage: add a pure API test
2008-07-03T20:04:41  <johill> dennda: it fails :D
2008-07-03T20:06:36  <PawelPacana> the problem is, you cannot commit to repo item that hasnt changed
2008-07-03T20:07:48  <johill> heh what?
2008-07-03T20:09:08  <johill> I don't know what to tell you
2008-07-03T20:09:17  <PawelPacana> if i store revision data in hg, and it does not change in next rev, hg wont commit it
2008-07-03T20:09:23  <johill> it's definitely needed for when you delete a page, we then commit no revision data and just revision metadata
2008-07-03T20:10:00  <johill> you could have a 0-byte file, but I guess that won't work the second time around
2008-07-03T20:11:51  * mmihaljevic is desperate looking for some hint about adding defaults to multiconfig.py 
2008-07-03T20:12:12  <johill> mmihaljevic: merge 1.8
2008-07-03T20:12:54  <xorAxAx> mmihaljevic: most of the file isnt doing anything else than setting up defaults
2008-07-03T20:13:00  <mmihaljevic> johill: did
2008-07-03T20:13:22  <johill> mmihaljevic: in that case just look in MoinMoin/config/multiconfig.py
2008-07-03T20:13:26  <mmihaljevic> class DefaultExpression(object): probably need to add here
2008-07-03T20:13:30  <johill> no
2008-07-03T20:13:37  <mmihaljevic> johill: did that also
2008-07-03T20:13:40  <mmihaljevic> ok...
2008-07-03T20:13:50  <johill> look for options
2008-07-03T20:14:03  <johill> around line 1010
2008-07-03T20:14:33  <johill> you probably want to use the acl option group
2008-07-03T20:14:39  <mmihaljevic> ok there
2008-07-03T20:14:55  <johill> what are you trying to add?
2008-07-03T20:14:55  <mmihaljevic> :) need to add group_manager from the backend
2008-07-03T20:14:57  <johill> something like
2008-07-03T20:14:59  <johill> acl_group_manager?
2008-07-03T20:15:38  <mmihaljevic> well I need to instance GroupManager object
2008-07-03T20:15:48  <johill> ok then add this
2008-07-03T20:15:53  <mmihaljevic> not the acl_goup_manager
2008-07-03T20:16:04  <johill> why not?
2008-07-03T20:16:08  <johill> it's related to ACLs, no?
2008-07-03T20:16:50  <CIA-53> Johannes Berg <johannes AT sipsolutions DOT net> default * 4241:6dc08fc059d9 1.8-storage-cdenter/MoinMoin/storage/_tests/test_backends_memory.py: storage: fix memorybackend tests wrt. function nesting
2008-07-03T20:17:32  <mmihaljevic> yes but I don't want that to be acl_group_manager, because I defined it in wikiconfig as the group_manager and I want that like this .. Or not?
2008-07-03T20:18:57  <johill> well yeah but I think it probably should be called acl_group_manager
2008-07-03T20:19:12  <johill> in which case it's a lot simpler for you to add too
2008-07-03T20:19:35  <mmihaljevic> heh ok I hope thomas wouldn't mind a lot,
2008-07-03T20:19:51  <mmihaljevic> will change it than also in my config
2008-07-03T20:20:01  <johill> I'll convince him ;) we can easily change it anyway
2008-07-03T20:20:06  <johill> anyway
2008-07-03T20:20:18  <johill> find the line "('hierarchic', False, 'True to use hierarchical ACLs'),"
2008-07-03T20:20:20  <johill> and after that line, add
2008-07-03T20:20:36  <johill> ('group_manager', DefaultGroupManager(), 'ACL groups manager'),
2008-07-03T20:20:48  <johill> or whatever expressin you need for the default
2008-07-03T20:21:00  <mmihaljevic> ok
2008-07-03T20:21:04  <johill> and a better description (the third item in the tuple) would be good too
2008-07-03T20:21:43  <johill> because it's under the 'acl' group it'll then be called 'acl_group_manager'
2008-07-03T20:22:19  <mmihaljevic> ah ok I understand this
2008-07-03T20:22:43  <mmihaljevic> but wat the options can be defined as the second item
2008-07-03T20:22:57  <johill> hm?
2008-07-03T20:23:25  <mmihaljevic> I can instance an empty GroupManager, right?
2008-07-03T20:25:39  <johill> you should instantiate the default
2008-07-03T20:25:40  <xorAxAx> johill: hmm, often there is a None in the option groups
2008-07-03T20:25:44  <xorAxAx> johill: what does it mean? :)
2008-07-03T20:25:57  <johill> xorAxAx: hm?
2008-07-03T20:26:06  <xorAxAx> 'user': ('User Preferences related', None, (
2008-07-03T20:26:13  <johill> ah
2008-07-03T20:26:18  <xorAxAx> i guess it might make sense if you document the tuple above
2008-07-03T20:26:22  <johill> that's a group helptext
2008-07-03T20:26:42  <johill> yeah I'll add a note
2008-07-03T20:26:54  <xorAxAx> "dear user, this is a dict(group_name=tuple(group_headline, group_description, (group_element..."
2008-07-03T20:28:57  <xorAxAx> for developpy values of "user"
2008-07-03T20:32:57  <mmihaljevic> ok some tests passed, lets see the others
2008-07-03T20:33:10  <mmihaljevic> johill: thx a lot
2008-07-03T20:33:33  <CIA-53> Johannes Berg <johannes AT sipsolutions DOT net> default * 3817:98660492e634 1.8/MoinMoin/config/multiconfig.py: document new multiconfig option structure
2008-07-03T20:33:37  <johill> there's some documentation
2008-07-03T20:34:00  <mmihaljevic> btw why is the last test_Page,py taking so long
2008-07-03T20:34:49  <mmihaljevic> and are all Page test passing?
2008-07-03T20:34:55  <mmihaljevic> for me one fails
2008-07-03T20:35:15  <xorAxAx> test_page is using the pagelist somewhere
2008-07-03T20:35:24  <xorAxAx> that needs a lot of io
2008-07-03T20:35:41  <mmihaljevic> :) probably the last test
2008-07-03T20:36:00  <johill> yeah it's ugly
2008-07-03T20:36:29  <mmihaljevic>  def testGetPageLinks(self): this test falls for me
2008-07-03T20:38:50  <xorAxAx> how? put it into the paste bin
2008-07-03T20:38:54  <xorAxAx> mmihaljevic: which editor do you use?
2008-07-03T20:39:03  <xorAxAx> to edit the moin code
2008-07-03T20:39:13  <xorAxAx> there are various ways to ease the usage of the pastebin
2008-07-03T20:39:21  <mmihaljevic> xorAxAx: sometimes eclipse, sometimes vim
2008-07-03T20:39:22  <xorAxAx> e.g. vim/emacs plugins and a command line tool
2008-07-03T20:39:44  <xorAxAx> with the command line tool, you simply pipe the output to a file and call the tool for pasting
2008-07-03T20:40:01  <xorAxAx> if you want to show test errors to other people
2008-07-03T20:40:21  <mmihaljevic> http://paste.pocoo.org/show/78475/
2008-07-03T20:40:27  <mmihaljevic> ah cool
2008-07-03T20:40:48  <xorAxAx> that snippet isnt very useful :)
2008-07-03T20:40:49  <mmihaljevic> xorAxAx: forget the last pastebin
2008-07-03T20:40:51  <mmihaljevic> wring one
2008-07-03T20:40:56  <mmihaljevic> wrong one
2008-07-03T20:42:10  <xorAxAx> http://dev.pocoo.org/hg/lodgeit-main/raw-file/-1/scripts/lodgeit.py
2008-07-03T20:45:05  <mmihaljevic> http://paste.pocoo.org/show/78476/ hope this one will be better
2008-07-03T20:45:47  <xorAxAx> mmihaljevic: try cleaning your data dir
2008-07-03T20:46:00  <xorAxAx> with the above script, its as easy as py.test|lodgeit.py
2008-07-03T20:46:40  <xorAxAx> i.e. removing the testwiki data dir
2008-07-03T20:47:09  <ThomasWaldmann> mmihaljevic: this is normal if you killed the default FrontPage while experimenting
2008-07-03T20:47:24  <mmihaljevic> ThomasWaldmann: yes I did :|
2008-07-03T20:47:45  <mmihaljevic> xorAxAx: ok will thx for advices
2008-07-03T21:00:47  <CIA-53> MelitaMihaljevic default * 3840:864173cec7a6 1.8-ldapgroups-mmihaljevic/ (187 files in 37 dirs): commited after merging ,added to multiconfig acl_group_manager default option and changed variable from group_manager to acl_group_manager
2008-07-03T21:01:01  <xorAxAx> OMG
2008-07-03T21:01:03  <mmihaljevic> ThomasWaldmann: please don't kill me for this
2008-07-03T21:01:10  * xorAxAx kills melita :)
2008-07-03T21:01:18  <mmihaljevic> ok noone
2008-07-03T21:01:22  <xorAxAx> mmihaljevic: a merge changeset may only contain the merge itself and nothing else :)
2008-07-03T21:01:26  <xorAxAx> but next time you will now
2008-07-03T21:01:31  <xorAxAx> s/now/know/
2008-07-03T21:01:46  <xorAxAx> well, i am a bit confused, you seem to have realised that before you committed
2008-07-03T21:01:56  <xorAxAx> we could have given you help on how to clean it up
2008-07-03T21:02:19  <mmihaljevic> xorAxAx: I couldn't revert my code again
2008-07-03T21:03:04  <xorAxAx> mmihaljevic: basically you would have copied the files that you modified out of your dir, did a hg up -C
2008-07-03T21:03:16  <xorAxAx> mmihaljevic: then redone the merge
2008-07-03T21:03:22  <xorAxAx> mmihaljevic: then copied them back in, hg diff to check
2008-07-03T21:03:28  <xorAxAx> and then you could have committed
2008-07-03T21:10:47  <mmihaljevic> ok will do that
2008-07-03T21:11:04  <xorAxAx> well, now its a bit more difficult
2008-07-03T21:11:10  <mmihaljevic> ugh
2008-07-03T21:11:13  <xorAxAx> but still possible
2008-07-03T21:11:25  <xorAxAx> and i would certainly like if this was cleaned up again
2008-07-03T21:11:48  <xorAxAx> its not that hard ...
2008-07-03T21:12:06  <xorAxAx> mmihaljevic: did you already backup your modified files?
2008-07-03T21:12:30  <mmihaljevic> xorAxAx: yes I did
2008-07-03T21:13:35  <xorAxAx> then do hg clone -r your_latest_clean_rev your_broken_dir new_dir
2008-07-03T21:16:59  <byegonweon> xorAxAx: finally. I report bug to fckeditor team.
2008-07-03T21:17:07  <xorAxAx> byegonweon: cool, url? :)
2008-07-03T21:17:33  <byegonweon> xorAxAx: but. lots of hours I try to fix that bug. I couldn't :(
2008-07-03T21:17:37  <byegonweon> xorAxAx:report bug to fckeditor dev team : http://dev.fckeditor.net/ticket/2333
2008-07-03T21:17:50  <xorAxAx> mmihaljevic: and?
2008-07-03T21:18:04  <mmihaljevic> xorAxAx: after that to pull and merge and commit, after that to add changes and commit again
2008-07-03T21:18:12  <mmihaljevic> did
2008-07-03T21:18:32  <mmihaljevic> and than remove my old one?
2008-07-03T21:18:42  <xorAxAx> yes, then you need to replace your working repo with the new one
2008-07-03T21:18:50  <xorAxAx> and give thomas the coommand line to clone
2008-07-03T21:18:53  <xorAxAx> so he can do the same
2008-07-03T21:19:02  <xorAxAx> then you can push your new stuff to the cleaned repo
2008-07-03T21:19:06  <byegonweon> xorAxAx: this bug seems like original from browser problem.
2008-07-03T21:19:15  <johill> xorAxAx: eww.
2008-07-03T21:19:17  <xorAxAx> byegonweon: yeah, probably they can work it around
2008-07-03T21:19:36  <xorAxAx> johill: see, hg is more social than git. it encourages communication
2008-07-03T21:19:36  <mmihaljevic> hg clone -r 3693 1.8-ldapgroups 1.8-ldapgroups-mmihaljevic
2008-07-03T21:19:46  <mmihaljevic> :P
2008-07-03T21:19:47  <xorAxAx> ;-)
2008-07-03T21:19:47  <johill> hahaha
2008-07-03T21:20:01  <johill> still, publishing something and then... not nice
2008-07-03T21:20:19  <johill> (besides, in git you'd just stuff the old stuff into a branch and rebase the master)
2008-07-03T21:20:21  <xorAxAx> yes, we are playing ministry of information - rewriting the history :)
2008-07-03T21:20:31  <xorAxAx> oceania is in war with ldapland today :)
2008-07-03T21:20:45  <johill> and tomorrow it will never have been ;)
2008-07-03T21:20:51  <xorAxAx> ThomasWaldmann: can you rebase melitas repo? hg clone -r 3693 1.8-ldapgroups 1.8-ldapgroups-mmihaljevic
2008-07-03T21:21:04  <byegonweon> xorAxAx: I want to fix this bug myself. now I found where the bug is. I should find way of fix this bug.
2008-07-03T21:21:19  <xorAxAx> byegonweon: well, in a large pile of c++ and objc code probably :)
2008-07-03T21:21:26  <xorAxAx> you mean you want to workaround the bug :-)
2008-07-03T21:21:58  <byegonweon> xorAxAx: yes. :)
2008-07-03T21:26:27  <johill> xorAxAx: can I seek beyond the EOF in windows?
2008-07-03T21:26:40  <xorAxAx> johill: try it on wine
2008-07-03T21:27:21  <johill> oddly, wine doesn't run on my laptop ;)
2008-07-03T21:27:53  <johill> nor any other computer I own :)
2008-07-03T21:28:02  <xorAxAx> hmm, then your laptop is using an unauthorized cpu architecture where young operations dont respect elder ones
2008-07-03T21:28:26  <xorAxAx> and where there are no keyboard-controller driven gates :)
2008-07-03T21:28:38  <johill> winelib I might actually get to work, but that's a major undertaking I guess
2008-07-03T21:29:05  <xorAxAx> would be nice to weave wine and qemu :)
2008-07-03T21:29:23  <xorAxAx> worst pain of both worlds :)
2008-07-03T21:30:48  <johill> heh
2008-07-03T21:31:01  <johill> my G5 can run windows fairly decently in qemu
2008-07-03T21:32:36  <xorAxAx> didnt you get it to do osx development?
2008-07-03T21:32:59  <johill> no, linux
2008-07-03T21:35:52  <mmihaljevic> brb shower, hope Thomas will come in the midtime
2008-07-03T21:43:52  <johill> ok it looks like you can seek beyond eof and even try reading (and get nothing)
2008-07-03T21:44:05  <johill> good
2008-07-03T21:46:07  * johill makes files smaller when no revision data is present
2008-07-03T21:57:07  <mmihaljevic> re
2008-07-03T22:36:44  <johill> bleh
2008-07-03T22:36:50  <johill> lambda : 7
2008-07-03T22:37:01  <johill> is flagged by the pep8 checker: "space before colon"
2008-07-03T22:38:06  <xorAxAx> thats true
2008-07-03T22:38:20  <johill> yeah but "lambda: 7" looks even stranger
2008-07-03T22:38:21  <xorAxAx>  lambda: 7 is pythonic :)
2008-07-03T22:38:24  <xorAxAx> nope
2008-07-03T22:39:05  <johill> I love your "pythonic" argument. you can do everything with it because you define it :)
2008-07-03T22:39:41  <johill> I think lambda : 7 is much nicer because it shows much clearer that there are no arguments
2008-07-03T22:42:38  <xorAxAx> IMHO lambda: does it betterly because you have to read one char less :)
2008-07-03T22:43:02  <johill> your brain doesn't read spaces ;)
2008-07-03T22:43:18  <johill> anyway I'll just change it to have arguments :P
2008-07-03T22:43:19  <TheSheep> mine does!
2008-07-03T22:43:43  <johill> but because I don't like *args either I'll pass a tuple
2008-07-03T22:43:45  <TheSheep> johill: are you French? :)
2008-07-03T22:43:54  <johill> heh
2008-07-03T22:43:59  <TheSheep> I mean, are you French ?
2008-07-03T22:44:15  <johill> that wasn't an nbsd ;)
2008-07-03T22:44:26  <johill> nbsp
2008-07-03T22:44:36  <TheSheep> you're sure?
2008-07-03T22:45:10  <TheSheep> can you tell the difference between   and   on sight?
2008-07-03T22:45:44  <johill> no but I know how to use hexdump ;)
2008-07-03T22:45:54  <TheSheep> on irc?
2008-07-03T22:46:20  <johill> that'd be fun to have irc in 'hd' format, heh
2008-07-03T22:46:41  <johill> anyway, I think lambda: reads like something you assign to lambda like in a dict
2008-07-03T22:47:09  <johill> whereas visually, to me, lambda : has an empty argument list that is passed to what's behind the colon
2008-07-03T22:47:17  <TheSheep> I like  function () { ... } :)
2008-07-03T22:48:04  <johill> so how do you implement atomic file replacing on windows?
2008-07-03T22:48:20  <TheSheep> with pain
2008-07-03T22:48:31  <johill> that's ok I can surely copy it from somewhere ;)
2008-07-03T22:48:41  <TheSheep> johill: hg has a function specially for this
2008-07-03T22:48:55  <TheSheep> let me pastebin it for you
2008-07-03T22:50:08  <johill> I have a hg checkout somewhere
2008-07-03T22:50:16  <TheSheep> http://paste.pocoo.org/show/78498/
2008-07-03T22:51:10  <johill> wow that's broken
2008-07-03T22:51:17  <johill> they should just reject 'a' in flags
2008-07-03T22:52:20  <johill> so that doesn't work for less than NT either?
2008-07-03T22:52:21  <johill> fun
2008-07-03T22:53:07  <johill> oh well
2008-07-03T22:53:12  <johill> I'll just code a retry loop
2008-07-03T22:53:24  <TheSheep> http://paste.pocoo.org/show/78500/ <-- this is fun too
2008-07-03T22:53:37  <johill> none of the places where I need this are bound by any input/output to the network/client, all internal
2008-07-03T22:54:21  <johill> great stuff, lots of races trying to access the file when it doesn't exist
2008-07-03T22:54:22  <TheSheep> obviously they use locks
2008-07-03T22:54:55  <johill> I don't want read locks
2008-07-03T22:55:08  <johill> well I guess I can just use read locks on windows...
2008-07-03T22:55:32  <TheSheep> or allow this race condition ;)
2008-07-03T22:56:01  <johill> you mean use that forced rename? that'll make it crash ...
2008-07-03T22:57:00  <johill> or I guess I can use that rename and have the reader loop on ENOENT
2008-07-03T22:58:24  <TheSheep> hmm... http://paste.pocoo.org/show/78503/
2008-07-03T22:58:29  <TheSheep> funny
2008-07-03T22:59:21  <TheSheep> but they do support win95 somehow...
2008-07-03T22:59:33  <johill> heh
2008-07-03T23:00:53  <TheSheep> looking at window's filesystem semantics, no wonder databases are so popluar nowadays
2008-07-03T23:01:21  <TheSheep> I guess once moin requires python 2.5 it can use the sqlite backend by default...
2008-07-03T23:01:58  <johill> mind you, my code doesn't work properly on NFS either
2008-07-03T23:02:07  <johill> it needs proper append semantics
2008-07-03T23:02:13  <johill> (for the news log)
2008-07-03T23:03:41  <johill> I'm considering a "I have NFS" configuration option
2008-07-03T23:03:45  <TheSheep> I wonder if it has to bee so space-efficient once there is a choice of different backends
2008-07-03T23:04:06  <TheSheep> I'd assume the admins of 10k-page wikis would just use some db backend
2008-07-03T23:04:35  <johill> not sure if that's necessarily faster
2008-07-03T23:05:23  <TheSheep> at least you have all locking problems solved already
2008-07-03T23:05:49  <johill> well if I have decent posix fs semantics I don't really have any
2008-07-03T23:05:54  <TheSheep> johill: did you think about keeping the log and the revision in a database file too?
2008-07-03T23:06:16  <TheSheep> johill: once you require cdb...
2008-07-03T23:06:31  <johill> well cdb is write-only
2008-07-03T23:06:33  <johill> you can't change it
2008-07-03T23:06:41  <TheSheep> perfect for log :)
2008-07-03T23:06:44  <johill> which doesn't matter for the name/id table
2008-07-03T23:06:48  <johill> no you can't even append
2008-07-03T23:07:04  <TheSheep> soooo... how are you going to create new pages?
2008-07-03T23:07:10  <johill> name/id is very small so I just rewrite the whole thing
2008-07-03T23:07:25  <TheSheep> how about using anydb or such?
2008-07-03T23:07:29  <johill> as I posted on that page, it's very fast
2008-07-03T23:07:46  <johill> anydbm needs custom locking too and is a lot larger
2008-07-03T23:07:59  <johill> I'm also concerned with very fast lookups so read access is cheap
2008-07-03T23:08:23  <TheSheep> I guess you mostly need cheap access to metadata
2008-07-03T23:08:47  <johill> well I need cheap accesses page/id mapping first :)
2008-07-03T23:08:55  <TheSheep> that too
2008-07-03T23:09:09  <TheSheep> but practically any operation is going to check ACLs too, right?
2008-07-03T23:10:01  <johill> metadata access is open, read, read, seek
2008-07-03T23:11:03  <johill> and it unpickles which is a lot faster than parsing the ACLs out :)
2008-07-03T23:11:17  <TheSheep> heh
2008-07-03T23:11:45  <TheSheep> now consider the PageIndex action...
2008-07-03T23:11:45  <johill> so it's actually more than two read syscalls, but that hits the cache
2008-07-03T23:12:17  <TheSheep> that's why I hate permissions in a wiki
2008-07-03T23:12:30  <johill> heh
2008-07-03T23:12:42  <TheSheep> it causes unREST
2008-07-03T23:12:55  <johill> oh yeah w/o permissions it'd be dirt cheap, just read all the names from the name/id mapping file
2008-07-03T23:14:22  <TheSheep> what I'm talking about is that a lot of operations that need metadata operate on lots of pages, so maybe it would be wise to have all metadata (at least the most recent revision) in a single file...
2008-07-03T23:14:42  <johill> that'd be horrible to commit though
2008-07-03T23:14:57  <TheSheep> depends on how the file is organized
2008-07-03T23:16:30  <johill> guess you could use O_APPEND again
2008-07-03T23:16:37  <johill> nah not really
2008-07-03T23:16:48  <johill> you have to write the revision data and metadata at the same time
2008-07-03T23:16:54  <johill> so that'd need a global lock
2008-07-03T23:18:07  <TheSheep> right, too much hassle
2008-07-03T23:33:46  <johill> right now I only need a global lock for renaming and creating items
2008-07-03T23:33:50  <johill> and creating revisions on NFS :/
2008-07-03T23:33:56  <johill> (which I just made optional)
2008-07-03T23:38:11  <johill> dennda: you forgot __delitem__ for metadata
2008-07-03T23:38:54  <dennda> just looking at your changesets
2008-07-03T23:42:05  <dennda> win 33
2008-07-03T23:43:06  <CIA-53> Florian Krupicka <florian.krupicka@googlemail.com> default * 3709:04c37245e12d 1.8-wsgi-fkrupicka/MoinMoin/_tests/test_wikiutil.py: Fix tests: wikiutil.normalize_pagename (missing 2nd param, missing import)
2008-07-03T23:43:07  <CIA-53> Florian Krupicka <florian.krupicka@googlemail.com> default * 3710:c21991eed9c9 1.8-wsgi-fkrupicka/MoinMoin/web/contexts.py: Fixed: attribute lookup handling, in general as in uid_generator
2008-07-03T23:43:09  <CIA-53> Florian Krupicka <florian.krupicka@googlemail.com> default * 3711:40acd13fb3d6 1.8-wsgi-fkrupicka/MoinMoin/action/ (31 files): Changed form access to MultiDict forms
2008-07-03T23:43:46  <dreimark> re
2008-07-03T23:44:43  <TheSheep> dreimark: found a good way of replacing buttons with iocns
2008-07-03T23:45:10  <TheSheep> dreimark: actually, of removing the text from the buttons so that the background shows unobscured
2008-07-03T23:45:39  <johill> dennda: also, "if not isinstance(itemname, (str, unicode))" should be in the API code
2008-07-03T23:45:48  <TheSheep> dreimark: bascially you do  overflow: hidden; text-indent: -10000px;
2008-07-03T23:46:46  <dennda> johill: I don't quite get the point of that test you added -- maybe it's too late or I am just too stupid
2008-07-03T23:47:35  <dreimark> TheSheep: nice trick :)
2008-07-03T23:47:39  <johill> dennda: run it
2008-07-03T23:47:58  <TheSheep> dreimark: and it plays nicely with screenreaders too
2008-07-03T23:48:16  <johill> dennda: oh never mind about the isinstance thing, it can't be
2008-07-03T23:48:20  <dreimark> Oliver will also be happy about this
2008-07-03T23:48:57  <dennda> johill: ah you want it to return False?
2008-07-03T23:49:07  <johill> dennda: sure, that's how it's defined
2008-07-03T23:49:17  <johill> you just have except KeyError instead of except NoSuchItemError
2008-07-03T23:49:23  <dennda> yeh, sorry. I read assert not be.get_item("...
2008-07-03T23:49:46  <dreimark> TheSheep: it works still with post or do we need to use method get?
2008-07-03T23:52:08  <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4242:c04d253f9aee 1.8-storage-cdenter/MoinMoin/storage/__init__.py: storage: (API): Fix Backend.has_item
2008-07-03T23:52:20  <TheSheep> dreimark: it works with post, but I'd like to put it into a single form per image, at least
2008-07-03T23:52:44  <TheSheep> dreimark: it could require changes to the url api though
2008-07-03T23:54:26  <dreimark> TheSheep: that's ok if it is a requirement, some of the icons should not be shown for users which have no delete rights
2008-07-03T23:54:37  <TheSheep> dreimark: I can make a mockup of static html showing how I think it could look
2008-07-03T23:55:09  <dreimark> please do
2008-07-03T23:55:17  <dennda> PawelPacana: Wasn't there something you wanted me to do? I can't find it in the logs
2008-07-03T23:55:38  <TheSheep> dennda: I think he wanted to move some parts of tests to __init__
2008-07-03T23:56:40  <johill> I think he wanted you to merge the test abstraction
2008-07-03T23:57:14  <johill> ala http://hg.moinmo.in/moin/1.8-mercurialbackend-ppacana/rev/0f0675dccd5d
2008-07-03T23:57:16  * dennda looks at it
2008-07-03T23:57:42  <dennda> Yes, just discovered that spelling mistake he somehow managed to get in there :)
2008-07-03T23:57:58  <johill> s/memb/backend/ :)
2008-07-03T23:58:30  <johill> basically it's the "define tests in an abstract class and derive actual test classes from that"
2008-07-03T23:58:48  <dennda> yes
2008-07-03T23:58:57  <dennda> I wanted to do that anyway
2008-07-03T23:59:05  <dreimark> mmihaljevic: looks like 27mins ago the revert was done on http://hg.moinmo.in/
2008-07-03T23:59:47  <johill> dennda: he did that already

MoinMoin: MoinMoinChat/Logs/moin-dev/2008-07-03 (last edited 2008-07-02 22:15:02 by IrcLogImporter)