Skip to content
Snippets Groups Projects
Commit cc9b9624 authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

ENH: first test running

parent 422f3306
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""does something"""
import argparse
from argparse import RawTextHelpFormatter
import re
import caosdb as db
from datetime import datetime
from caosdb.exceptions import TransactionError
class CFood(object):
def __init__(self, pattern):
self.pattern = re.compile(pattern)
def treat_match(self, filename, match):
entities = self.create_identifiables(filename, match)
for key, ent in entities.items():
existing = find_existing(ent)
if existing is None:
print(key, "does not exist")
ent.insert()
print(key, "inserted")
entities[key] = ent
else:
print(key, "exists")
entities[key] = existing
self.update_identifiables(entities, filename, match)
def create_identifiables(self, filename, match):
entities = {}
entities["exp"] = db.Record()
#import IPython
#IPython.embed()
entities["exp"].add_parent(name="Experiment")
entities["exp"].add_property(name="species", value=match.group)
return entities
def update_identifiables(self, entities, filename, match):
entities["exp"].add_property(name="date",
value=datetime.today().isoformat())
db.Container().extend(entities.values).update()
@staticmethod
def find_existing(entity):
query_string = "FIND Record "+ entity.get_parents()[0].name
query_string += " with " + "and".join(["'" + p.name + "'='" + p.value +"'"
for p in entity.get_properties()])
print(query_string)
q = db.Query(query_string)
try:
r = q.execute(unique=True)
except TransactionError as er:
r = None
return r
def get_parser():
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=RawTextHelpFormatter)
return parser
if __name__ == "__main__":
parser = get_parser()
args = parser.parse_args()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""does something"""
import argparse
from argparse import RawTextHelpFormatter
from cfood import CFood
class Crawler(object):
def __init__(self, food):
self.food = food
def crawl(self):
filename="path/to/file"
for cfood in self.food:
match = cfood.pattern.match(filename)
if match is not None:
print("match")
cfood.treat_match(filename, match)
def get_parser():
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=RawTextHelpFormatter)
return parser
if __name__ == "__main__":
parser = get_parser()
args = parser.parse_args()
f = CFood(pattern="(.*)to(.*)")
c = Crawler(food=[f])
c.crawl()
import unittest
from tempfile import NamedTemporaryFile
import caosdb as db
from caosadvancedtools.cfood import CFood
class CFoodTest(unittest.TestCase):
def setUp(self):
self.exp = db.Record()
self.exp.add_parent(name="Experiment")
self.exp.add_property(name="species", value="microunicorn")
pass
def test_check_existence(self):
assert CFood.find_existing(self.exp) is None
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment