def store(self):
        print("store")
        update_flag = False
        now_str = SolrHelper.datetime2solrtime(datetime.utcnow())

        if self.key and self.riak_obj:
            if self.riak_obj.exists:
                update_flag = True

        if update_flag:
            # update
            print("update")
            self.riak_obj.data.update(self.meta)
            self.riak_obj.data["updated_at"] = now_str

        else:
            # insert
            self.key = KassisNumbering.numbering("M")
            print("new record: generate key=%s" % (str(self.key)))

            self.meta["record_identifier"] = self.key

            self.bucket = self.client.bucket_type(settings.RIAK["STORE_BUCKET_TYPE"]).bucket(settings.RIAK["STORE_BUCKET"])
            self.riak_obj = self.bucket.new(self.key, self.meta)
            self.riak_obj.data["created_at"] = now_str
            self.riak_obj.data["updated_at"] = now_str
        #
        meta = self.prepare_stored()

        riak_obj = self.riak_obj.store()

        # replicator
        # msgpack

        return riak_obj
Ejemplo n.º 2
0
    def store(self):
        print("store")
        update_flag = False
        now_str = SolrHelper.datetime2solrtime(datetime.utcnow())

        if self.key and self.riak_obj:
            if self.riak_obj.exists:
                update_flag = True

        update_flag = False
        if update_flag:
            print("update")

        else:
            # insert
            # TODO: ほんとうのunique番号の生成方法(現状だと同時アクセス時にconflictする)
            # TODO: 採番クラス用意する。
            counter_bucket = self.client.bucket_type(settings.RIAK["COUNTER_BUCKET_TYPE"]).bucket(Location.CounterBucketName)
            #counter_bucket.update_counter()
            counter = Counter(counter_bucket, Location.CounterBucketName)
            counter.increment()
            counter.store()
            self.key = str(counter.value)
            print("new record: generate key=%s" % (str(self.key)))

            self.meta["record_identifier"] = self.key

            self.bucket = self.client.bucket_type(settings.RIAK["STORE_BUCKET_TYPE"]).bucket(Location.BucketName)
            self.riak_obj = self.bucket.new(self.key, self.meta)
            self.riak_obj.data["created_at"] = now_str
            self.riak_obj.data["updated_at"] = now_str
        #
        #meta = self.prepare_stored()

        riak_obj = self.riak_obj.store()

        # replicator
        # msgpack

        return riak_obj