[kforge-dev] Fwd: Re: domainmodel-test errors

John Bywater john.bywater at appropriatesoftwarefoundation.org
Thu Apr 12 19:05:19 UTC 2007

Hi Dave,

So, the domainmodel code has been fixed so that:

1. Its domainmodel-admin program actually works. So you can do 
.../domainmodel-admin db rebuild
2. Its domainmodel-test program actually works. So you can do 

In other words, domainmodel doesn't need to run against the kforge 
database anymore!

To install and test domainmodel (to be made into a doc):

1. get the source (recommend latest trunk, at the moment)
2. set environment variable 'PYTHONPATH' to .../svn/trunk/src
3. copy .../svn/trunk/etc/domainmodel.conf.new config file to somewhere new
4. set environment variable 'DOMAINMODEL_SETTING' to your new config file
5. establish database user account
6. establish database access grants for user with database (choose 
database name, password, etc)
7. edit your new config file for your context (at least set database 
name, password, etc.)
8. edit your new config file so that system_mode = development
8. run .../domainmodel-admin db create (enter database password, returns 
silently on success)
9. run .../domainmodel-admin db init (takes a little while, returns 
silently on success)
10. run .../domainmodel-test (prints OK message on success)
11. edit your new config file so that system_mode = production
12. run .../domainmodel-admin db rebuild (returns silently on success)
13. use the installation: can't cos it doesn't do anything

To develop domainmodel, write a test, get it to pass, check all tests 
pass, email an svn diff, or commit if has project developer role.

There isn't so much, but we could reduce the amount of required 
configuration in the config file. For example, plugin_data_dir isn't 
actaully needed, and we can't expect new people not to be troubled by 
it. So it we need to make the code not depend on having it (which it does).

To way to apply domainmodel would be roughly (also to be made into a doc):

1. in general, extend domainmodel classes. Applications of domainmodel 
should support being applied in the same way as domainmodel, so it makes 
sense to follow the module structure of domainmodel in applications of 
2. prepare by creating your application's project directory, with etc/, 
src/, and bin/ dirs.
3. copy domainmodel.conf.new into your etc/.
4. copy domainmodel-admin and -test to your bin; rename files after your 
application; edit files for your application.
5. create your own application test suite package, so -test has 
something to use
6. create your own Application test class, then create your own 
Application class
6. create your own ApplicationBuilder test class, then create your own 
ApplicationBuilder class
7. set your ApplicationBuilder on your Application
8. create your own ModelBuilder test class, then create your own 
ModelBuilder class
9. set your ModelBuilder on your ApplicationBuilder
10. create your own domain model classes
11. create your own command/initialise.py (initial domain objects)
12. create the database using your -admin: "-admin db create" and 
"-admin db init"
13. test the application using your -test
14. change the application tests, change the application
15. rebuild the database using ...-admin db rebuild
16. retest the application using your -test

Then, it's a matter of building up the application's domain model, and 
creating some UI to support interactions. But writing a developer guide 
would be good.

Domainmodel has an "admin" Web interface, which provides fully automatic 
list/create/read/update/delete of all domain model objects by reflection 
of the model, and a "registry" Web interface toolkit which allows Web 
interfaces to be built over the domain model by reflection of the model 
and selective overriding and extending of default "admin" behaviour.

So, should really bash a raw, or default Web interface into shape. 
Something that allows the skeleton model to be manipulated. We just need 
a bit of Apache config to setup the Python handlers, a 
scanbooker.django.settings.urls.dui module with url patterns mapped to 
Python methods for the admin views (just like normal). Should be quite 
simple, but I'm not sure what the value is. Demonstration, test, 
example, or indication of included capabilities?

Best wishes,


> David Heath wrote:
> > Hi John,
> >
> > I've installed domainmodel and I'm trying to run domainmodel-test 
> (seemed like a reasonable first thing to do). I'm getting lots of 
> errors, and I don't really understand why. I've installed Django 
> 0.95.1 and all other dependencies as far as I can tell. I've set up a 
> mysql database.

More information about the kforge-dev mailing list