Пример #1
0
    def company_import(self,
        timestamp,
        id,
        name,
        date,
        address
    ):
        product_company_address = addresser.get_product_address(id)

        product = product_pb2.Product_company(
            id=id,
            name=name,
            date=date,
            address=address
        )
        container = product_pb2.ProductCompanyContainer()
        
        state_entries = self._context.get_state(
            addresses=[product_company_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)

        container.entries.extend([product])
        data = container.SerializeToString()

        updated_state = {}
        updated_state[product_company_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
Пример #2
0
    def update_employee(self,
        timestamp,
        id,
        position,
        salary
    ):
        
        product_address = addresser.get_product_address(id)
        employee = product_pb2.Product.Employee(
            timestamp = timestamp,
            position = position,
            salary = salary
        )
        container = product_pb2.ProductContainer()
        state_entries = self._context.get_state(
            addresses=[product_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)
            for product in container.entries:
                if product.id == id:
                    product.employees.extend([employee])

        data = container.SerializeToString()
        updated_state = {}
        updated_state[product_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
Пример #3
0
    def update_location(self,
        timestamp,
        id,
        longitude,
        latitude
    ):
        product_address = addresser.get_product_address(id)
        location = product_pb2.Product.Location(
            timestamp = timestamp,
            longitude = longitude,
            latitude = latitude
        )
        container = product_pb2.ProductContainer()
        state_entries = self._context.get_state(
            addresses=[product_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)
            for product in container.entries:
                if product.id == id:
                    product.locations.extend([location])

        data = container.SerializeToString()
        updated_state = {}
        updated_state[product_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
Пример #4
0
    def update_company(self,
        timestamp,
        id,
        address,
        price_IPO
    ):
        product_address = addresser.get_product_address(id)
        company = product_pb2.Product.Company(
            timestamp = timestamp,
            address = address,
            price_IPO = price_IPO
        )
        container = product_pb2.ProductContainer()
        state_entries = self._context.get_state(
            addresses=[product_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)
            for product in container.entries:
                if product.id == id:
                    product.companies.extend([company])

        data = container.SerializeToString()
        updated_state = {}
        updated_state[product_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
def make_company_import_transaction(transaction_signer, batch_signer,
                                    timestamp, id, name, date, address):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.CompanyImport(id=id,
                                       name=name,
                                       date=date,
                                       address=address)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.COMPANY_IMPORT,
        company_import=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
Пример #6
0
    def update_status(self,
        timestamp,
        id,
        quantity,
        price
    ):

        product_address = addresser.get_product_address(id)
        status = product_pb2.Product.Status(
            timestamp = timestamp,
            quantity = quantity,
            price = price
        )
        container = product_pb2.ProductContainer()
        state_entries = self._context.get_state(
            addresses=[product_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)
            for product in container.entries:
                if product.id == id:
                    product.statuss.extend([status])

        data = container.SerializeToString()
        updated_state = {}
        updated_state[product_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
def make_employee_import_transaction(transaction_signer, batch_signer,
                                     timestamp, id, name, age, address, email,
                                     company_id):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.EmployeeImport(id=id,
                                        name=name,
                                        age=age,
                                        address=address,
                                        email=email,
                                        company_id=company_id)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.EMPLOYEE_IMPORT,
        employee_import=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
Пример #8
0
    def get_product(self, id):
        address = addresser.get_product_address(id)
        state_entries = self._context.get_state(
            addresses=[address], timeout=self._timeout)
        if state_entries:
            container = product_pb2.ProductContainer()
            container.ParseFromString(state_entries[0].data)
            for product in container.entries:
                if product.id == id:
                    return product

        return None
def make_get_transaction(transaction_signer, batch_signer, timestamp, id):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.GetDrug(id=id)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.make_get_transaction,
        get_transaction=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
Пример #10
0
def make_createLc_transaction(transaction_signer, batch_signer, timestamp,
                              content, publicKeyUser):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address()
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.Createlc(content=content, publicKeyUser=publicKeyUser)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.CREATELC,
        createLc=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
def make_update_status_transaction(transaction_signer, batch_signer, timestamp,
                                   id, quantity, price):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.UpdateStatus(id=id, quantity=quantity, price=price)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.UPDATE_STATUS,
        update_status=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
Пример #12
0
    def createLc(self,
        timestamp,
        content,
        publicKeyUser
    ):
        product_address = addresser.get_product_address()

        product = product_pb2.Product(
            content=content,
            publicKeyUser=publicKeyUser
        )
        container = product_pb2.ProductContainer()
        state_entries = self._context.get_state(
            addresses=[product_address], timeout=self._timeout)
        if state_entries:
            container.ParseFromString(state_entries[0].data)

        container.entries.extend([product])
        data = container.SerializeToString()

        updated_state = {}
        updated_state[product_address] = data
        self._context.set_state(updated_state, timeout=self._timeout)
def make_update_location_transaction(transaction_signer, batch_signer,
                                     timestamp, id, longitude, latitude):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.UpdateLocation(id=id,
                                        longitude=longitude,
                                        latitude=latitude)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.UPDATE_LOCATION,
        update_location=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
def make_update_employee_transaction(transaction_signer, batch_signer,
                                     timestamp, id, position, salary):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.UpdateEmployee(id=id,
                                        position=position,
                                        salary=salary)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.UPDATE_EMPLOYEE,
        update_employee=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)
def make_update_company_transaction(transaction_signer, batch_signer,
                                    timestamp, id, address, price_IPO):

    user_address = addresser.get_user_address(
        transaction_signer.get_public_key().as_hex())
    product_address = addresser.get_product_address(id)
    inputs = [user_address, product_address]
    outputs = [product_address]

    action = payload_pb2.UpdateCompany(id=id,
                                       address=address,
                                       price_IPO=price_IPO)

    payload = payload_pb2.SimpleSupplyPayload(
        action=payload_pb2.SimpleSupplyPayload.UPDATE_COMPANY,
        update_company=action,
        timestamp=timestamp)
    payload_bytes = payload.SerializeToString()

    return _make_batch(payload_bytes=payload_bytes,
                       inputs=inputs,
                       outputs=outputs,
                       transaction_signer=transaction_signer,
                       batch_signer=batch_signer)