示例#1
0
class User(object):
    email = None
    name = None

    def __init__(self):
        self.nodb = NoDB()
        self.nodb.bucket = 'herolfg-tests-learning-nodb-users'
        self.nodb.index = 'email'
        self.nodb.human_readable_indexes = True

    def __str__(self):
        return "{ email: '%s', name: '%s' }" % (self.email, self.name)

    def save(self):
        self.nodb.save(self)

    def load(self, email):
        instance = self.nodb.load(email)
        self.email = instance.email
        self.name = instance.name

    def delete(self, email):
        self.nodb.delete(email)

    def all(self):
        result = []

        bucket = self.nodb.s3.Bucket(self.nodb.bucket)
        for obj in bucket.objects.filter(Prefix=self.nodb.prefix):
            serialized = obj.get()["Body"].read()
            deserialized = self.nodb._deserialize(serialized)
            result.append(deserialized['obj'])

        return result
示例#2
0
    def test_nodb_cache(self):
        bucket_name = 'dummy'
        nodb = NoDB(bucket_name)
        self._create_mock_bucket(bucket_name)
        nodb.index = "Name"
        nodb.cache = True

        jeff = {"Name": "Jeff", "age": 19}
        serialized = nodb._serialize(jeff)

        real_index = nodb._format_index_value("Jeff")
        base_cache_path = os.path.join(tempfile.gettempdir(), '.nodb')
        if not os.path.isdir(base_cache_path):
            os.makedirs(base_cache_path)

        cache_path = os.path.join(base_cache_path, real_index)
        if not os.path.exists(cache_path):
            f = open(cache_path, 'a')
            f.close()

        with open(cache_path, "wb") as in_file:
            in_file.write(serialized.encode(NoDB.encoding))

        nodb.load("Jeff")
        loaded = nodb.load("Jeff", default={})
        self.assertEqual(loaded, jeff)
        loaded = nodb.load("Jeff", default="Booty")
        self.assertEqual(loaded, jeff)
        # test the cached item is deleted
        nodb.delete('Jeff')
        loaded = nodb.load("Jeff")
        self.assertIsNone(loaded)
        # test read from bucket when cache enabled
        # remove cached file
        nodb.save(jeff)
        if os.path.isfile(cache_path):
            os.remove(cache_path)
        nodb.load('Jeff')

        bcp = nodb._get_base_cache_path()