+1
On Apr 4, 2007, at 11:26 AM, Morgen Sagen wrote:

We need to settle on how we're going to dump and reload data that lives under //parcels, including preferences information. Let me explain how I am doing things, and we can see if this works for everyone else. (This assumes that the dump code is only going to iterate items outside of //parcels, and the logic for doing so is moving out of Main.py and into dumpreload.py)


So osaf.sharing has an out-of-the-box (OOTB) Reference item named "currentSharingAccount" which has a bi-directional-reference to whatever the "current" sharing account item is. Originally, the OOTB sharing account item lived under //parcels. I recently changed sharing/__init__.py to create the OOTB account outside of // parcels (//userdata now). So now that account will get dumped just like any other account.

As for sharing preferences, I defined a model.SharePrefsRecord which contains the UUID of the "current" sharing account:

   class SharePrefsRecord(eim.Record):
       URI = "http://osafoundation.org/eim/sharing/prefs/0";
currentAccount = eim.field(schema.UUID) # empty string means no account


...and added the following methods to DumpTranslator:

    @model.SharePrefsRecord.importer
    def import_share_prefs(self, record):

        if record.currentAccount:
            @self.withItemForUUID(record.currentAccount,
                accounts.SharingAccount)
            def set_current(account):
ref = schema.ns("osaf.sharing", self.rv).currentSharingAccount
                ref.item = account

    # Called from finishExport()
    def export_share_prefs(self):

        ref = schema.ns("osaf.sharing", self.rv).currentSharingAccount
        if ref.item is None:
            currentAccount = ""
        else:
            currentAccount = ref.item.itsUUID.str16()
        cur = ref.item

        yield model.SharePrefsRecord(currentAccount)


Note that export_share_prefs is a regular method called directly from DumpTranslator's finishExport( ) method. The SharePrefsRecord is imported using the decorated import_share_prefs method. Note also that since there is ever only one SharePrefsRecord instance, that record type doesn't need to have any key fields.


In the future we'll improve the Translator code so that parcels can register themselves and get hooked into what the translator is doing, but for now just add specific "yield" statements to DumpTranslator.finishExport( ).

Sound good?
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to