def get_workorders(self, arrangement_id: bytes = None, bob_verifying_key: bytes = None, session=None) -> List[Workorder]: """ Returns a list of Workorders by HRAC. """ session = session or self._session_on_init_thread query = session.query(Workorder) if not arrangement_id and not bob_verifying_key: workorders = query.all() # Return all records else: # Return arrangement records if arrangement_id: workorders = query.filter_by(arrangement_id=arrangement_id) # Return records for Bob else: fingerprint = fingerprint_from_key(bob_verifying_key) key = session.query(Key).filter_by( fingerprint=fingerprint).first() workorders = query.filter_by(bob_verifying_key_id=key.id) if not workorders: raise NotFound return list(workorders)
def add_key(self, key, is_signing=True, session=None) -> Key: """ :param key: Keypair object to store in the keystore. :return: The newly added key object. """ session = session or self._session_on_init_thread fingerprint = fingerprint_from_key(key) key_data = bytes(key) new_key = Key(fingerprint, key_data, is_signing) session.add(new_key) session.commit() return new_key
def save_workorder(self, bob_verifying_key, bob_signature, arrangement_id, session=None) -> Workorder: """ Adds a Workorder to the keystore. """ session = session or self._session_on_init_thread # Get or Create Bob Verifying Key fingerprint = fingerprint_from_key(bob_verifying_key) key = session.query(Key).filter_by(fingerprint=fingerprint).first() if not key: key = self.add_key(key=bob_verifying_key) new_workorder = Workorder(bob_verifying_key_id=key.id, bob_signature=bob_signature, arrangement_id=arrangement_id) session.add(new_workorder) session.commit() return new_workorder
def from_umbral_key(cls, umbral_key, is_signing): fingerprint = fingerprint_from_key(umbral_key) key_data = bytes(umbral_key) return cls(fingerprint, key_data, is_signing)