Hi fellow Naimath developers!
I have been working really hard on three things and have them all to a point where I can show them off now:
- Getting a very basic pyramid app started. This has no screens/views/skins yet (Matt, this means you!)
- OrderedDict that is similar to the OrderedDict in the Python 2.7 collections module, but includes an 'insert' method that lets you insert the new key at any position in the dictionary. We can use these where one object has child objects that we want to have in some defined order. For example, the sub-questions under the "cough" question.
- Versioned objects and dictionaries. This capability is really exciting because it encapsulates all of the knowledge base versioning within each versioned object. So each object keeps track of its entire history, as well as what it looks like in each sandbox. The pyramid request object now has a "version" attribute which tells all of the versioned objects in the system what version to present themselves as. This will let us have thousands of interconnected versioned objects that will remember what they looked like, and what the interconnections looked like for any version or sandbox. The versioned objects also have a merge capability to merge the changes from more than one sandbox together and report MergeConflicts.
I have created a top-level object hierarchy (Pyramid calls this a "resource tree"):
- knowledge base
- expert
- contributor
- doctor
- patient
Each "version N" and "sandbox X" are copies of the same root versioned object. Everything within this is also a versioned object. Each version has the following folders:
- symptom
- sign
- investigation
- diagnosis
- rule
- case
I've made the OrderedDict and versioned objects as separate projects in the experimental directory. The name of the OrderedDict project is reorderable_dict, so as not to conflict with an ordereddict in pyramid (easy_install is apparently case insensitive).
To get going, go
here and follow the directions. You'll need an account on my desktop box here to get to the ZODB ZEO server, so I'll need what user name you want to use (makes it easier if this is the same name you use on your local box) and a copy of your ~/.ssh/id_rsa.pub (or ~/.ssh/id_dsa.pub) file. Please email this information to me, and I'll set you up!
Please take a few minutes to set this up and give it a try so that we can work out the bugs.
Thanks!
-Bruce