The place of the default metadata has changed. So the top line at the model files should change from:
from camelot.model import metadata
to:
from camelot.core.sql import metadata
All Camelot models that you wish to use should be explicitely imported in the setup_model method in settings.py. And the metadata should be bound to the engine explicitly in the setup_model method:
def setup_model():
from camelot.core.sql import metadata
metadata.bind = ENGINE()
from camelot.model import authentication
from camelot.model import party
from camelot.model import i18n
from camelot.model import memento
from camelot.model import fixture
setup_model( True )
The authentication module has been split into authentication and party. Person and Organization related imports should be redefined
from camelot.model.authentication import Person
Should become
from camelot.model.party import Person
There were some changes in the data model of Camelot, in the parts that track change history and handle authentication. Run this SQL script against your database to do the upgrade, after taking a backup.
On Postgresql
ALTER TABLE memento ADD memento_type INT;
ALTER TABLE memento ADD COLUMN previous_attributes bytea;
UPDATE memento SET
memento_type = 1,
previous_attributes = memento_update.previous_attributes
FROM memento_update WHERE memento.id = memento_update.memento_id;
UPDATE memento SET
memento_type = 2,
previous_attributes = memento_delete.previous_attributes
FROM memento_delete WHERE memento.id = memento_delete.memento_id;
UPDATE memento SET
memento_type = 3
FROM memento_create WHERE memento.id = memento_create.memento_id;
ALTER TABLE memento ALTER COLUMN memento_type SET NOT NULL;
ALTER TABLE memento DROP COLUMN row_type;
DROP TABLE memento_update;
DROP TABLE memento_delete;
DROP TABLE memento_create;
CREATE INDEX ix_memento_memento_type
ON memento (memento_type);
ALTER TABLE authentication_mechanism ADD COLUMN authentication_type INT;
ALTER TABLE authentication_mechanism ADD COLUMN username VARCHAR(40);
ALTER TABLE authentication_mechanism ADD COLUMN password VARCHAR(200);
ALTER TABLE authentication_mechanism ADD COLUMN from_date DATE;
ALTER TABLE authentication_mechanism ADD COLUMN thru_date DATE;
ALTER TABLE authentication_mechanism DROP COLUMN row_type;
ALTER TABLE authentication_mechanism DROP COLUMN is_active;
UPDATE authentication_mechanism SET
authentication_type = 1,
from_date = '2000-01-01',
thru_date = '2400-12-31',
username = authentication_mechanism_username.username,
password = authentication_mechanism_username.password
FROM authentication_mechanism_username WHERE authentication_mechanism.id = authentication_mechanism_username.authenticationmechanism_id;
ALTER TABLE authentication_mechanism ALTER COLUMN authentication_type SET NOT NULL;
ALTER TABLE authentication_mechanism ALTER COLUMN from_date SET NOT NULL;
ALTER TABLE authentication_mechanism ALTER COLUMN thru_date SET NOT NULL;
DROP TABLE authentication_mechanism_username;
CREATE INDEX ix_authentication_mechanism_from_date
ON authentication_mechanism (from_date);
CREATE INDEX ix_authentication_mechanism_thru_date
ON authentication_mechanism (thru_date);
CREATE INDEX ix_authentication_mechanism_username
ON authentication_mechanism (username);
CREATE INDEX ix_authentication_mechanism_authentication_type
ON authentication_mechanism (authentication_type);
On MySQL
ALTER TABLE memento ADD memento_type INT;
ALTER TABLE memento ADD COLUMN previous_attributes blob;
UPDATE memento, memento_update SET
memento.memento_type = 1,
memento.previous_attributes = memento_update.previous_attributes
WHERE memento.id = memento_update.memento_id;
UPDATE memento, memento_delete SET
memento.memento_type = 2,
memento.previous_attributes = memento_delete.previous_attributes
WHERE memento.id = memento_delete.memento_id;
UPDATE memento, memento_create SET
memento.memento_type = 3
WHERE memento.id = memento_create.memento_id;
ALTER TABLE memento ALTER COLUMN memento_type SET NOT NULL;
ALTER TABLE memento DROP COLUMN row_type;
DROP TABLE memento_update;
DROP TABLE memento_delete;
DROP TABLE memento_create;
CREATE INDEX ix_memento_memento_type
ON memento (memento_type);
ALTER TABLE authentication_mechanism ADD COLUMN authentication_type INT;
ALTER TABLE authentication_mechanism ADD COLUMN username VARCHAR(40);
ALTER TABLE authentication_mechanism ADD COLUMN password VARCHAR(200);
ALTER TABLE authentication_mechanism ADD COLUMN from_date DATE;
ALTER TABLE authentication_mechanism ADD COLUMN thru_date DATE;
ALTER TABLE authentication_mechanism DROP COLUMN row_type;
ALTER TABLE authentication_mechanism DROP COLUMN is_active;
UPDATE authentication_mechanism, authentication_mechanism_username SET
authentication_mechanism.authentication_type = 1,
authentication_mechanism.from_date = '2000-01-01',
authentication_mechanism.thru_date = '2400-12-31',
authentication_mechanism.username = authentication_mechanism_username.username,
authentication_mechanism.password = authentication_mechanism_username.password
WHERE authentication_mechanism.id = authentication_mechanism_username.authenticationmechanism_id;
ALTER TABLE authentication_mechanism ALTER COLUMN authentication_type SET NOT NULL;
ALTER TABLE authentication_mechanism ALTER COLUMN from_date SET NOT NULL;
ALTER TABLE authentication_mechanism ALTER COLUMN thru_date SET NOT NULL;
DROP TABLE authentication_mechanism_username;
CREATE INDEX ix_authentication_mechanism_from_date
ON authentication_mechanism (from_date);
CREATE INDEX ix_authentication_mechanism_thru_date
ON authentication_mechanism (thru_date);
CREATE INDEX ix_authentication_mechanism_username
ON authentication_mechanism (username);
CREATE INDEX ix_authentication_mechanism_authentication_type
ON authentication_mechanism (authentication_type);
Or simply drop these tables and have them recreated by Camelot and lose the history information
DROP TABLE memento_update;
DROP TABLE memento_delete;
DROP TABLE memento_create;
DROP TABLE memento;
DROP TABLE authentication_mechanism_username;
DROP TABLE authentication_mechanism;
Consider converting your settings.py module to a settings object .