Ejemplo n.º 1
0
 def _UpdateSerialisableInfo( self, version, old_serialisable_info ):
     
     if version == 1:
         
         serialisable_tag_display_types_to_service_keys_to_tag_filters = old_serialisable_info
         
         tag_autocomplete_options_list = HydrusSerialisable.SerialisableList()
         
         new_serialisable_info = [
             serialisable_tag_display_types_to_service_keys_to_tag_filters,
             tag_autocomplete_options_list.GetSerialisableTuple()
         ]
         
         return ( 2, new_serialisable_info )
         
     
     if version == 2:
         
         [
             serialisable_tag_display_types_to_service_keys_to_tag_filters,
             serialisable_tag_autocomplete_options
         ] = old_serialisable_info
         
         service_keys_to_ordered_sibling_service_keys = collections.defaultdict( list )
         service_keys_to_ordered_parent_service_keys = collections.defaultdict( list )
         
         serialisable_service_keys_to_ordered_sibling_service_keys = HydrusSerialisable.SerialisableBytesDictionary( service_keys_to_ordered_sibling_service_keys ).GetSerialisableTuple()
         serialisable_service_keys_to_ordered_parent_service_keys = HydrusSerialisable.SerialisableBytesDictionary( service_keys_to_ordered_parent_service_keys ).GetSerialisableTuple()
         
         new_serialisable_info = [
             serialisable_tag_display_types_to_service_keys_to_tag_filters,
             serialisable_tag_autocomplete_options,
             serialisable_service_keys_to_ordered_sibling_service_keys,
             serialisable_service_keys_to_ordered_parent_service_keys
         ]
         
         return ( 3, new_serialisable_info )
         
     
     if version == 3:
         
         # took it out again lmao, down to the db
         
         [
             serialisable_tag_display_types_to_service_keys_to_tag_filters,
             serialisable_tag_autocomplete_options,
             serialisable_service_keys_to_ordered_sibling_service_keys,
             serialisable_service_keys_to_ordered_parent_service_keys
         ] = old_serialisable_info
         
         
         new_serialisable_info = [
             serialisable_tag_display_types_to_service_keys_to_tag_filters,
             serialisable_tag_autocomplete_options
         ]
         
         return ( 4, new_serialisable_info )
    def test_basics(self):
        def test(obj, dupe_obj):

            self.assertEqual(len(list(obj.items())),
                             len(list(dupe_obj.items())))

            for (key, value) in list(obj.items()):

                self.assertEqual(value, dupe_obj[key])

        #

        d = HydrusSerialisable.SerialisableDictionary()

        d[1] = 2
        d[3] = 'test1'

        d['test2'] = 4
        d['test3'] = 5

        d[6] = HydrusSerialisable.SerialisableDictionary(
            {i: 'test' + str(i)
             for i in range(20)})
        d[ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG,
                                 'test pred 1')] = 56

        d[ClientSearch.Predicate(
            ClientSearch.PREDICATE_TYPE_TAG,
            'test pred 2')] = HydrusSerialisable.SerialisableList([
                ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG,
                                       'test' + str(i)) for i in range(10)
            ])

        self.assertEqual(len(list(d.keys())), 7)

        for (key, value) in list(d.items()):

            self.assertEqual(d[key], value)

        self._dump_and_load_and_test(d, test)

        #

        db = HydrusSerialisable.SerialisableBytesDictionary()

        db[HydrusData.GenerateKey()] = HydrusData.GenerateKey()
        db[HydrusData.GenerateKey()] = [
            HydrusData.GenerateKey() for i in range(10)
        ]
        db[1] = HydrusData.GenerateKey()
        db[2] = [HydrusData.GenerateKey() for i in range(10)]

        self.assertEqual(len(list(db.keys())), 4)

        for (key, value) in list(db.items()):

            self.assertEqual(db[key], value)

        self._dump_and_load_and_test(db, test)