[Dev] Contact quandary
Katie Capps Parlante
capps at osafoundation.org
Mon Mar 1 17:13:36 PST 2004
There's another bug related to this problem, bug #1311 (essentially a
duplicate, I think).
I think that the intent was that sectionOwner should be the inverse of
section and all subAttributes (homeSection and workSection). Indeed, the
repository does not currently support this setup well, and that causes
various problems, including the deleting problem you mention. (The
repository will complain if you call the check() method on your view of
the repository.) In theory, we could support such a setup: homeSection
and workSection are also sections. Andi had some thoughts about how the
bidirectional relationship could actually get this right, but it would
require storing more information on the link.
We talked about going back and adding workSectionFor and homeSectionFor
attributes, but decided against it as it wasn't really the solution the
design team was looking for. If it would help the work you are doing
right now (i.e. so that you could delete), you could go ahead and add
them as a temporary measure.
Also, Andi has some changes queued up (some related to delete I think),
which he will add when he gets back from vacation. If delete still
causes you problems, its likely a bug that should be addressed.
As for the subAttributes issue, its on the list to address in the next
pass through the data model. I hope to write up such a list (issues that
we've run into on the application side of things) soon.
Jeffrey Harris wrote:
> Hi Folks,
> I've been trying to get Contacts created that can be deleted, and I'm
> having problems.
> When I create a new Contact with homeSection or workSection set, things
> look fine. But when I try to delete the new Contact, I run into
> trouble. I filed bug 1351 for this, thinking it's a repository problem,
> but now that I've pulled my hair out a little more and looked at the
> schema more carefully, I wonder if there's a problem there.
> If you look at
> you'll see that homeSection and workSection don't have direct
> inverseAttributes. They do have sections as a superAttribute, but I'm
> not sure this works. Try this thought experiment:
> Create a Contact contact.
> Create a ContactSection section.
> Set contact.homeSection=section.
> At this point the bi-directional link between contact and section has
> contact.homeSection pointing to section.sectionOwner. But
> section.sectionOwner is pointing at contact.sections, not back at
> contact.homeSection, and in fact attributes may not exist.
> Is this a problem, or am I misunderstanding how bi-directional links work?
> Interestingly, when I do this in python, the repository doesn't complain
> about creating or committing contact.homeSection, but it fails whenever
> I try to delete contact. That seemed to me to be because of this
> bi-directional problem.
> The remedy to this, I thought, would be to create homeSectionFor and
> workSectionFor in ContactSection, and change homeSection and workSection
> to have these attributes as their inverseAttributes. That seemed to
> work, but delete still doesn't quite work, so I don't know what's going on.
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> Open Source Applications Foundation "Dev" mailing list
More information about the Dev