def find(**kwargs): if 'deviceID' in kwargs: kwargs['deviceID'] = '"' + _URL + _DEVICE_PATH + "/" + kwargs['deviceID'] + '"' if 'individualID' in kwargs: kwargs['individualID'] = '"' + _URL + _INDIVIDUAL_PATH + "/" + kwargs['individualID'] + '"' attachments = LajiStoreAPI.get_all_deviceindividual(**kwargs) devices = LajiStoreAPI.get_all_devices() deviceIDs = set([d["id"] for d in devices]) individuals = LajiStoreAPI.get_all_individuals() individualIDs = set() for i in individuals: # soft removed? if not i["deleted"]: individualIDs.add(i["id"]) valid = [] for attachment in attachments: if "removed" not in attachment: attachment["removed"] = None # really removed? if attachment['deviceID'] in deviceIDs and attachment['individualID'] in individualIDs: valid.append(attachment) return valid
def update(self): ''' Saves changes to the object to the corresponding LajiStore entry. ''' self.dateEdited = current_time_as_lajistore_timestamp() dict = self.to_dict() LajiStoreAPI.update_document(**dict) # to_dict() puts all arguments here
def testGetAll(self): response = LajiStoreAPI.get_all_documents() self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_devices() self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_individuals() self.assertGreaterEqual(len(response), 0)
def testSingleArgumentQueries(self): response = LajiStoreAPI.get_all_devices(deviceManufacturerID="ABCD1234567") self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_documents(deviceID="ABCDTESTTEST") self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_individuals(deleted=True) self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_documents(deviceID="NOTFOUND") self.assertEqual(len(response), 0)
def testLajiStoreIndividual(self): response = LajiStoreAPI.post_individual(**self.individual) self.assertEquals(True, "id" in response) response = LajiStoreAPI.get_individual(response["id"]) self.assertEquals(True, "id" in response) self.individual["id"] = response["id"] response = LajiStoreAPI.update_individual(**self.individual) self.assertEquals(True, "id" in response) response = LajiStoreAPI.delete_individual(response["id"]) self.assertEquals(204, response.status_code)
def testLajiStoreNews(self): response = LajiStoreAPI.post_news(**self.news) self.assertEquals(True, "id" in response) response = LajiStoreAPI.get_news(response["id"]) self.assertEquals(True, "id" in response) self.news["id"] = response["id"] response = LajiStoreAPI.update_news(**self.news) self.assertEquals(True, "id" in response) response = LajiStoreAPI.delete_news(response["id"]) self.assertEquals(204, response.status_code)
def testLajiStoreDevice(self): response = LajiStoreAPI.post_device(**self.device) self.assertEquals(True, "id" in response) response = LajiStoreAPI.get_device(response["id"]) self.assertEquals(True, "id" in response) self.device["id"] = response["id"] response = LajiStoreAPI.update_device(**self.device) self.assertEquals(True, "id" in response) response = LajiStoreAPI.delete_device(response["id"]) self.assertEquals(204, response.status_code)
def testSingleArgumentQueries(self): response = LajiStoreAPI.get_all_devices(deviceId="ABCD1234567") self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_documents(documentId="ABCDTESTTEST") self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_individuals(individualId="INDIVIDUALABCD") self.assertGreaterEqual(len(response), 0) response = LajiStoreAPI.get_all_documents(documentId="NOTFOUND") self.assertEqual(len(response), 0)
def testAddQuery(self): q = LajiStoreAPI._add_query(arg1="test") self.assertEquals(q, "?q=arg1:test") self.assertTrue(" AND " not in q) q = LajiStoreAPI._add_query(arg1="test", arg2="value") self.assertTrue("arg1:test" in q) self.assertTrue("arg2:value" in q) self.assertTrue(" AND " in q) q = LajiStoreAPI._add_query(arg1="test", arg2="value", arg3=2) self.assertTrue("arg1:test" in q) self.assertTrue("arg2:value" in q) self.assertTrue("arg3:2" in q) self.assertTrue(" AND " in q)
def _get_many(**kwargs): data = LajiStoreAPI.get_all_individuals(**kwargs) individuals = [] for individual in data: # creates a list of individuals to return individuals.append(Individual(**individual)) return individuals
def get(id): ''' Gets a device from LajiStore :param id: The LajiStore ID of the individual :return: A Individual object ''' individual = LajiStoreAPI.get_individual(id) return Individual(**individual)
def get(id): ''' Gets a device from LajiStore :param id: The LajiStore ID of the device :return: A Device object ''' device = LajiStoreAPI.get_device(id) return Device(**device)
def create(deviceId, deviceType, deviceManufacturer, createdAt, lastModifiedAt, facts): ''' Creates a device instance in LajiStore and a corresponding Device object :return: A Device object ''' device = LajiStoreAPI.post_device(deviceId, deviceType, deviceManufacturer, createdAt, lastModifiedAt, facts) return Device(**device)
def get(id): ''' Gets a document from LajiStore :param id: The LajiStore ID of the document :return: A Document object ''' document = LajiStoreAPI.get_document(id) return Document(**document)
def create(individualId, taxon): ''' Creates an individual instance in LajiStore and a corresponding Indiviual object :param id: The LajiStore ID of the object :param taxon: The LajiStore taxon of the object :return: An Individual object ''' individual = LajiStoreAPI.post_individual(individualId, taxon) return Individual(**individual)
def find(**kwargs): ''' Find all matching devices. :param kwargs: Search parameters. No parameters will search all devices. :return: A list of Device objects. ''' data = LajiStoreAPI.get_all_devices(**kwargs) devices = [] for device in data: # Creates a list of devices to return devices.append(Device(**device)) return devices
def find(**kwargs): ''' Find all matching individuals :param kwargs: Search parameters :return: A list of Individual objects ''' data = LajiStoreAPI.get_all_individuals(**kwargs) individuals = [] for individual in data: # creates a list of individuals to return individuals.append(Individual(**individual)) return individuals
def find(**kwargs): ''' Find all matching documents. :param kwargs: Search parameters. :return: A list of Document objects. ''' data = LajiStoreAPI.get_all_documents(**kwargs) documents = [] for document in data: # creates a list of documents to return documents.append(Document(**document)) return documents
def find(**kwargs): ''' Find all matching news. :param kwargs: Search parameters. No parameters will search all news. :return: A list of News objects. ''' data = LajiStoreAPI.get_all_news(**kwargs) news = [] for n in data: # Creates a list of news to return news.append(News(**n)) return news
def get(id): ''' Gets a piece of news from LajiStore :param id: The LajiStore ID of the news :return: A news object ''' news = LajiStoreAPI.get_news(id) if 'id' in news: return News(**news) else: return None
def create(gatherings, deviceID, dateCreated=None, dateEdited=None): ''' Creates a document instance in LajiStore and a corresponding Document object :return: A Document object ''' current_time = current_time_as_lajistore_timestamp() dateCreated = dateCreated if dateCreated else current_time dateEdited = dateEdited if dateEdited else current_time document = Document(gatherings, deviceID, dateCreated, dateEdited) data = LajiStoreAPI.post_document(**document.to_dict()) document.id = data["id"] return document
def create(documentId, gatherings, deviceId, facts=[], lastModifiedAt=None, createdAt=None): ''' Creates a document instance in LajiStore and a corresponding Document object :return: A Document object ''' if lastModifiedAt == None: lastModifiedAt = current_time_as_lajistore_timestamp() if createdAt == None: createdAt = current_time_as_lajistore_timestamp() document = LajiStoreAPI.post_document(documentId=documentId, lastModifiedAt=lastModifiedAt, deviceId=deviceId , createdAt=createdAt, facts=facts, gatherings=[g.to_lajistore_json() for g in gatherings]) return Document(**document)
def create(nickname, taxon, description=None, descriptionURL=None): ''' Creates an individual instance in LajiStore and a corresponding Individual object :param nickname: nickname for the individual :param taxon: The LajiStore taxon of the object :return: An Individual object ''' individual = Individual(nickname, taxon, description, descriptionURL) data = LajiStoreAPI.post_individual(**individual.__dict__) individual.id = data['id'] return individual
def create(title, content, language, publishDate=None, eventDate=None, targets=None): ''' Creates a news instance in LajiStore and a corresponding News object :return: A News object ''' try: news = News(title, content, language, publishDate, eventDate, targets) data = LajiStoreAPI.post_news(**news.__dict__) news.id = data['id'] except Exception as e: raise Exception("Error saving data") return news
def create(deviceType, deviceManufacturer, deviceManufacturerID, dateCreated=None, dateEdited=None): ''' Creates a device instance in LajiStore and a corresponding Device object :return: A Device object ''' originaldevice = _find_duplicate(deviceManufacturerID) if originaldevice is not None: return originaldevice current_time = current_time_as_lajistore_timestamp() dateCreated = dateCreated if dateCreated else current_time dateEdited = dateEdited if dateEdited else current_time device = Device(deviceType, deviceManufacturer, deviceManufacturerID, dateCreated, dateEdited) data = LajiStoreAPI.post_device(**device.__dict__) device.id = data['id'] return device
def update(self): ''' Saves changes to the object to the corresponding LajiStore entry. ''' LajiStoreAPI.update_news(**self.__dict__) # __dict__ puts all arguments here.
def delete(self): ''' Deletes the news from LajiStore. Note that the object is not destroyed! ''' LajiStoreAPI.delete_news(self.id)
def delete_all(): ''' Deletes all news. Can only be used in test enviroment. ''' LajiStoreAPI.delete_all_news()
def _get_many(**kwargs): data = LajiStoreAPI.get_all_documents(**kwargs) documents = [] for document in data: # creates a list of documents to return documents.append(Document(**document)) return documents
def delete_all(): ''' Deletes all documents. Can only be used in test enviroment. ''' LajiStoreAPI.delete_all_documents()