コード例 #1
0
 def test_recordtype_create_load(self):
     t  = RecordType.create(self.testcoll, "type1", recordtype_create_values(type_id="type1"))
     td = RecordType.load(self.testcoll, "type1").get_values()
     v  = recordtype_read_values(type_id="type1")
     self.assertKeysMatch(td, v)
     self.assertDictionaryMatch(td, v)
     return
コード例 #2
0
 def test_recordtype_create_load(self):
     t = RecordType.create(self.testcoll, "type1",
                           recordtype_create_values(type_id="type1"))
     td = RecordType.load(self.testcoll, "type1").get_values()
     v = recordtype_read_values(type_id="type1")
     self.assertKeysMatch(td, v)
     self.assertDictionaryMatch(td, v)
     return
コード例 #3
0
 def types(self):
     """
     Generator enumerates and returns record types that may be stored
     """
     for f in self._children(RecordType):
         t = RecordType.load(self, f)
         if t:
             yield t
     return
コード例 #4
0
 def _check_record_type_values(self, type_id, update="RecordType"):
     "Helper function checks content of record type entry with supplied type_id"
     self.assertTrue(RecordType.exists(self.testcoll, type_id))
     t = RecordType.load(self.testcoll, type_id)
     self.assertEqual(t.get_id(), type_id)
     self.assertEqual(t.get_view_url(),
                      TestHostUri + recordtype_url("testcoll", type_id))
     v = recordtype_values(type_id=type_id, update=update)
     self.assertDictionaryMatch(t.get_values(), v)
     return t
コード例 #5
0
    def get_type(self, type_id):
        """
        Retrieve identified type description

        type_id     local identifier for the type to retrieve.

        returns a RecordType object for the identified type, or None.
        """
        t = RecordType.load(self, type_id, altparent=self._parentsite)
        return t
コード例 #6
0
 def test_alt_parent_inherit_site(self):
     # Test inheritance of definitions from site with an alternative collection set
     coll_id = "newcoll"
     newcoll = Collection.create(self.testsite, coll_id, collection_create_values(coll_id))
     altparents = newcoll.set_alt_entities(self.testcoll)
     parentids  = [ p.get_id() for p in altparents ]
     self.assertEqual(parentids, ["newcoll", "testcoll", layout.SITEDATA_ID])
     self.assertTrue(RecordType.exists(newcoll, "Default_type", altscope="all"))
     def_type = RecordType.load(newcoll, "Default_type", altscope="all")
     self.assertEquals(def_type["rdfs:label"], "Default record")
     return
コード例 #7
0
ファイル: collection.py プロジェクト: juandesant/annalist
 def _load_types(self):
     """
     Initialize cache of RecordType entities
     """
     if not (self._types_by_id and self._types_by_uri):
         self._types_by_id  = {}
         self._types_by_uri = {}
         for type_id in self._children(RecordType, altscope="all"):
             t = RecordType.load(self, type_id, altscope="all")
             self._update_type_cache(t)
     return
コード例 #8
0
 def _load_types(self):
     """
     Initialize cache of RecordType entities
     """
     if not (self._types_by_id and self._types_by_uri):
         self._types_by_id = {}
         self._types_by_uri = {}
         for type_id in self._children(RecordType, altscope="all"):
             t = RecordType.load(self, type_id, altscope="all")
             self._update_type_cache(t)
     return
コード例 #9
0
    def get_type(self, type_id):
        """
        Retrieve identified type description

        type_id     local identifier for the type to retrieve.

        returns a RecordType object for the identified type, or None.
        """
        self._load_types()
        t = self._types_by_id.get(type_id, None)
        # Was it created but not cached?
        if not t and RecordType.exists(self, type_id, altscope="all"):
            log.info("___ Collection.get_type: " + type_id)
            t = RecordType.load(self, type_id, altscope="all")
            self._update_type_cache(t)
        return t
コード例 #10
0
ファイル: collection.py プロジェクト: juandesant/annalist
    def get_type(self, type_id):
        """
        Retrieve identified type description

        type_id     local identifier for the type to retrieve.

        returns a RecordType object for the identified type, or None.
        """
        self._load_types()
        t = self._types_by_id.get(type_id, None)
        # Was it created but not cached?
        if not t and RecordType.exists(self, type_id, altscope="all"):
            log.info("___ Collection.get_type: "+type_id)
            t = RecordType.load(self, type_id, altscope="all")
            self._update_type_cache(t)
        return t
コード例 #11
0
ファイル: collection.py プロジェクト: rklyne/annalist
    def cache_get_vocab(self, vocab_id):
        """
        Retrieve namespace vocabulary entity for id (namespace prefix) from cache.

        Returns namespace vocabulary entity if found, otherwise None.
        """
        vocab_cache.get_vocab(self, vocab_id)
        t = vocab_cache.get_vocab(self, vocab_id)
        # Was it previously created but not cached?
        if not t and RecordType.exists(self, vocab_id, altscope="all"):
            msg = (
                "Collection.get_vocab %s present but not cached for collection %s"%
                (vocab_id, self.get_id())
                )
            log.warning(msg)
            t = RecordType.load(self, vocab_id, altscope="all")
            vocab_cache.set_vocab(self, t)
            # raise ValueError(msg) #@@@ (used in testing to help pinpoint errors)
        return t
コード例 #12
0
ファイル: collection.py プロジェクト: gklyne/annalist
    def cache_get_vocab(self, vocab_id):
        """
        Retrieve namespace vocabulary entity for id (namespace prefix) from cache.

        Returns namespace vocabulary entity if found, otherwise None.
        """
        vocab_cache.get_vocab(self, vocab_id)
        t = vocab_cache.get_vocab(self, vocab_id)
        # Was it previously created but not cached?
        if not t and RecordType.exists(self, vocab_id, altscope="all"):
            msg = (
                "Collection.get_vocab %s present but not cached for collection %s"%
                (vocab_id, self.get_id())
                )
            log.warning(msg)
            t = RecordType.load(self, vocab_id, altscope="all")
            vocab_cache.set_vocab(self, t)
            # raise ValueError(msg) #@@@ (used in testing to help pinpoint errors)
        return t
コード例 #13
0
ファイル: collection.py プロジェクト: gklyne/annalist
    def cache_get_type(self, type_id):
        """
        Retrieve type from cache.

        Returns type entity if found, otherwise None.
        """
        type_cache.get_type(self, type_id)
        t = type_cache.get_type(self, type_id)
        # Was it previously created but not cached?
        if not t and RecordType.exists(self, type_id, altscope="all"):
            msg = (
                "Collection.get_type %s present but not cached for collection %s"%
                (type_id, self.get_id())
                )
            log.warning(msg)
            t = RecordType.load(self, type_id, altscope="all")
            type_cache.set_type(self, t)
            # raise ValueError(msg) #@@@ (used in testing to help pinpoint errors)
        return t
コード例 #14
0
ファイル: collection.py プロジェクト: rklyne/annalist
    def cache_get_type(self, type_id):
        """
        Retrieve type from cache.

        Returns type entity if found, otherwise None.
        """
        type_cache.get_type(self, type_id)
        t = type_cache.get_type(self, type_id)
        # Was it previously created but not cached?
        if not t and RecordType.exists(self, type_id, altscope="all"):
            msg = (
                "Collection.get_type %s present but not cached for collection %s"%
                (type_id, self.get_id())
                )
            log.warning(msg)
            t = RecordType.load(self, type_id, altscope="all")
            type_cache.set_type(self, t)
            # raise ValueError(msg) #@@@ (used in testing to help pinpoint errors)
        return t
コード例 #15
0
 def test_recordtype_default_data(self):
     t = RecordType.load(self.testcoll,
                         "Default_type",
                         altparent=self.testsite)
     self.assertEqual(t.get_id(), "Default_type")
     self.assertIn("/c/testcoll/_annalist_collection/types/Default_type",
                   t.get_url())
     self.assertEqual(t.get_type_id(), "_type")
     td = t.get_values()
     self.assertEqual(set(td.keys()),
                      set(recordtype_load_keys(type_uri=True)))
     v = recordtype_read_values(type_id="Default_type")
     v.update({
         'rdfs:label': 'Default record type',
         'rdfs:comment':
         'Default record type, applied when no type is specified when creating a record.',
         'annal:uri': 'annal:Default_type'
     })
     self.assertDictionaryMatch(td, v)
     return
コード例 #16
0
 def _check_record_type_values(self,
                               type_id,
                               update="RecordType",
                               type_uri=None,
                               extra_values=None):
     "Helper function checks content of record type entry with supplied type_id"
     self.assertTrue(RecordType.exists(self.testcoll, type_id))
     t = RecordType.load(self.testcoll, type_id)
     self.assertEqual(t.get_id(), type_id)
     self.assertEqual(t.get_view_url(),
                      TestHostUri + recordtype_url("testcoll", type_id))
     v = recordtype_values(type_id=type_id,
                           update=update,
                           type_uri=type_uri)
     if extra_values:
         v.update(extra_values)
     # print "t: "+repr(t.get_values())
     # print "v: "+repr(v)
     self.assertDictionaryMatch(t.get_values(), v)
     return t
コード例 #17
0
 def _check_record_type_values(self, type_id, 
         update="RecordType", 
         type_uri=None,
         extra_values=None
         ):
     "Helper function checks content of record type entry with supplied type_id"
     self.assertTrue(RecordType.exists(self.testcoll, type_id))
     t = RecordType.load(self.testcoll, type_id)
     self.assertEqual(t.get_id(), type_id)
     self.assertEqual(t.get_view_url(), TestHostUri + recordtype_url("testcoll", type_id))
     v = recordtype_values(
         type_id=type_id, 
         update=update, 
         type_uri=type_uri
         )
     if extra_values:
         v.update(extra_values)
     # print "t: "+repr(t.get_values())
     # print "v: "+repr(v)
     self.assertDictionaryMatch(t.get_values(), v)
     return t
コード例 #18
0
 def test_recordtype_default_data(self):
     t = RecordType.load(self.testcoll, "Default_type", altscope="all")
     self.assertEqual(t.get_id(), "Default_type")
     self.assertIn(
         "/c/_annalist_site/_annalist_collection/%(type_dir)s/Default_type"
         % self.layout, t.get_url())
     self.assertIn(
         "/c/testcoll/d/%(type_typeid)s/Default_type" % self.layout,
         t.get_view_url())
     self.assertEqual(t.get_type_id(), layout.TYPE_TYPEID)
     td = t.get_values()
     self.assertEqual(set(td.keys()),
                      set(recordtype_load_keys(type_uri=True)))
     v = recordtype_read_values(type_id="Default_type")
     v.update({
         'rdfs:label': 'Default record',
         'annal:uri': 'annal:Default_type'
     })
     v.pop('rdfs:comment', None)
     self.assertDictionaryMatch(td, v)
     return
コード例 #19
0
 def test_recordtype_default_data(self):
     t = RecordType.load(self.testcoll, "Default_type", altscope="all")
     self.assertEqual(t.get_id(), "Default_type")
     self.assertIn(
         "/c/_annalist_site/_annalist_collection/%(type_dir)s/Default_type"%self.layout, 
         t.get_url()
         )
     self.assertIn(
         "/c/testcoll/d/%(type_typeid)s/Default_type"%self.layout, 
         t.get_view_url()
         )
     self.assertEqual(t.get_type_id(), layout.TYPE_TYPEID)
     td = t.get_values()
     self.assertEqual(set(td.keys()), set(recordtype_load_keys(type_uri=True)))
     v = recordtype_read_values(type_id="Default_type")
     v.update(
         { 'rdfs:label':     'Default record'
         , 'annal:uri':      'annal:Default_type'
         })
     v.pop('rdfs:comment', None)
     self.assertDictionaryMatch(td, v)
     return
コード例 #20
0
    def __init__(self, site, coll, type_id, create_typedata=False):
        """
        Set up type attribute values.

        site            current site object
        coll            collection object in which type is used
        type_id         entity type id, which is a collection-defined value,
                        or one of a number of special site-wide built-in types.
        create_typedata if true, requests that a RecordTypeData entity be created
                        and saved on disk for user-defined types if it does not 
                        already exist.  (Creating a RecordTypeData entity ensures
                        that the corresponding data storage location is available 
                        for saving entity data.)

        Attributes of type information object are:

        recordtype      type object describing the identified type
        entityparent    Parent enbtity for entities of this type, or None if 
                        the type is not defined for the collection
        entityaltparent Alternative (site-wide) parent entity for built-in types, 
                        or None
        entityclass     Python class object for entity
        entitymessages  a table of message strings for diagnostics relating to 
                        operations on this type.

        and other values as initialized here.
        """
        self.entitysite      = site
        self.entitycoll      = coll
        self.recordtype      = None
        self.entityparent    = None
        self.coll_id         = coll.get_id()
        self.type_id         = type_id
        self.permissions_map = None
        if type_id in TYPE_CLASS_MAP:
            self.recordtype      = RecordType.load(coll, type_id, site)
            self.entityparent    = coll
            self.entityaltparent = site
            self.entityclass     = TYPE_CLASS_MAP[type_id]
            self.entitymessages  = TYPE_MESSAGE_MAP[type_id]
            self.permissions_map = TYPE_PERMISSIONS_MAP[type_id]
        else:
            if RecordType.exists(coll, type_id, site):
                self.recordtype     = RecordType.load(coll, type_id, site)
            if create_typedata and not RecordTypeData.exists(coll, type_id):
                self.entityparent   = RecordTypeData.create(coll, type_id, {})
            else:
                self.entityparent   = RecordTypeData(coll, type_id)
            self.entityaltparent = None
            self.entityclass     = EntityData
            self.entitymessages  = ENTITY_MESSAGES
            self.permissions_map = ENTITY_PERMISSIONS
        if not self.recordtype:
            # .recordtype is used by views.displayinfo to locate the default
            # view and/or list id for examining records of a particular type.
            #
            # Also used in entityedit for getting @type URI/CURIE values.
            #
            # Used in render_utils to get link to type record
            log.warning("EntityTypeInfo.__init__: RecordType %s not found"%type_id)
        return