Topped off the day's work by starting on the account-search mechanism (a.k.a. the phonebook). This is your bog-standard search page, it searches 4 or 5 tables with various inter-relations to produce a set of root records (accounts) that match a search string (or integer).
You can write one that's tailor-made for a given application (from scratch, using raw CGI and SQL), complete with per-column specialised display, sorting, paging, etceteras in about four hours and have time to test and tweak it to do different things for different users (depending on their access level).
I've actually lost count of just how often I've written these things. Certainly there's been one in every web framework I've ever written. There were three of them written just over the lifetime of Cinemon. They're exactly the kind of code where the effort of taking a pre-constructed solution and adapting it to a particular situation is well within striking distance of writing from scratch, and the from-scratch result is generally going to work better than the adapted version.
Which is the whole problem with web frameworks in Python. It's too darn easy to write them! The code I wrote today to do the sorting is, like all the others I've written, a class with parameterisation up the wazoo... it looks like it's part of a web framework, even though I wasn't even thinking of ever reusing the code. It's almost impossible (for me at least) not to write something framework-ish when working in Python.
Anyway, it's been a long day. I feel like just dropping off to sleep, but there's all sorts of Open Source stuff calling my name.


Comments
2010-07-25 14:02
> and would have no Trac integ ration The trac-bzr plugin[ 1] seems to provide good integ ration between bzr and t [...]
2010-07-13 21:47
I've always been fascinated wi th the Asterisk AMI interface. So much so that I married tha t fascination with the [...]
2010-07-03 21:32
Yes, only references in dicti onaries are replaced, so hold ing references in lists, tuple s, etceteras keeps them alive.
2010-07-03 11:18
They hold references to remove and install?
2010-06-24 08:34
There's higher-level objects w hich are tracking what is repl aced (the actual Mock objects) . They hold references [...]
2010-06-24 08:23
I haven't tried it, but it see ms to me like this approach ha s one fundamental problem: If you replace all refs o [...]
2010-06-24 08:22
That's the "magic" that made m e go "ooh shiny"
2010-06-24 06:03
That's even more evil than the mock patch decorator...
2010-06-06 18:33
blush Oh.
2010-06-06 11:07
That's what the module does (a utomatically), but on a per-te st-run basis, and only for the process being tested (i [...]
2010-06-06 02:43
Maybe I'm missing something im portant here, but why not just write small scripts to mimic whatever dangerous utili [...]
2010-06-05 15:17
I thought about stubbing out t he python call to the process in the current process, but I want something which stu [...]
2010-06-05 14:47
Hmm... if Mock isn't flexibl e enough to handle mocking pro cesses adequately then I'd lik e to know how it could b [...]
2010-05-19 10:27
Hey, maybe it's a stupid new bie question, but where and ho w exactly should the patching of the core take place? [...]
2010-05-04 14:36
I used Qemu and VirtualBox pre tty extensively back when I wa s working for the OLPC, but mo st of the stuff we were [...]