def add_predicate(self, predicate_uuid, label, data_type): """ adds the predicate """ if predicate_uuid not in self.predicates: self.predicates.append(predicate_uuid) pred_exists = self.check_manifest_exists(predicate_uuid) if pred_exists is False: print('New predicate: ' + label + ' ' + predicate_uuid) preds = Predicate.objects\ .filter(project_uuid=self.project_uuid) sort = len(preds) + 1 man = Manifest() man.uuid = predicate_uuid man.label = label man.project_uuid = self.project_uuid man.source_id = self.source_id man.item_type = 'predicates' man.class_uri = 'variable' man.save() pred = Predicate() pred.uuid = predicate_uuid pred.project_uuid = self.project_uuid pred.source_id = self.source_id pred.data_type = data_type pred.sort = sort pred.save()
def get_make_predicate(self, predicate_label, predicate_type, data_type=False): """ gets a predicate, filtered by label, predicate_type, and data_type """ self.manifest = False self.predicate = False if (data_type is not False): self.data_type = data_type plist = Manifest.objects.filter(label=predicate_label, item_type='predicates', project_uuid=self.project_uuid, class_uri=predicate_type) for pitem in plist: if (self.manifest is False): if (data_type is not False): try: # try to find the predicate with a given data_type self.predicate = Predicate.objects.get( uuid=pitem.uuid, data_type=data_type) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False else: try: # look for the predicate item self.predicate = Predicate.objects.get(uuid=pitem.uuid) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False if (self.manifest is False and self.predicate is False): uuid = GenUUID.uuid4() newpred = Predicate() newpred.uuid = uuid newpred.project_uuid = self.project_uuid newpred.source_id = self.source_id newpred.data_type = self.data_type newpred.sort = self.sort newpred.created = datetime.datetime.now() newpred.save() self.predicate = newpred #now make a manifest record for the item newman = Manifest() newman.uuid = uuid newman.project_uuid = self.project_uuid newman.source_id = self.source_id newman.item_type = 'predicates' newman.repo = '' newman.class_uri = predicate_type newman.label = predicate_label newman.des_predicate_uuid = '' newman.views = 0 newman.revised = datetime.datetime.now() newman.save() self.manifest = newman return self.predicate
def get_make_predicate(self, predicate_label, predicate_type, data_type=False): """ gets a predicate, filtered by label, predicate_type, and data_type """ self.manifest = False self.predicate = False if(data_type is not False): self.data_type = data_type plist = Manifest.objects.filter(label=predicate_label, item_type='predicates', project_uuid=self.project_uuid, class_uri=predicate_type) for pitem in plist: if(self.manifest is False): if(data_type is not False): try: # try to find the predicate with a given data_type self.predicate = Predicate.objects.get(uuid=pitem.uuid, data_type=data_type) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False else: try: # look for the predicate item self.predicate = Predicate.objects.get(uuid=pitem.uuid) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False if(self.manifest is False and self.predicate is False): uuid = GenUUID.uuid4() newpred = Predicate() newpred.uuid = uuid newpred.project_uuid = self.project_uuid newpred.source_id = self.source_id newpred.data_type = self.data_type newpred.sort = self.sort newpred.created = datetime.datetime.now() newpred.save() self.predicate = newpred #now make a manifest record for the item newman = Manifest() newman.uuid = uuid newman.project_uuid = self.project_uuid newman.source_id = self.source_id newman.item_type = 'predicates' newman.repo = '' newman.class_uri = predicate_type newman.label = predicate_label newman.des_predicate_uuid = '' newman.views = 0 newman.revised = datetime.datetime.now() newman.save() self.manifest = newman return self.predicate
def get_make_predicate(self, predicate_label, predicate_type, data_type=False): """ gets a predicate, filtered by label, predicate_type, and data_type """ self.manifest = False self.predicate = False if data_type is not False: self.data_type = data_type plist = Manifest.objects.filter(label=predicate_label, item_type='predicates', project_uuid=self.project_uuid, class_uri=predicate_type) for pitem in plist: if self.sup_reconcile_key is not None and\ self.sup_reconcile_value is not None: # checks to see if the supplemental JSON has a matching key, value pair # this lets us further constrain reconciliation, say with FAIMS predicates sup_key_ok = pitem.check_sup_json_key_value(self.sup_reconcile_key, self.sup_reconcile_value) else: sup_key_ok = True # default to true, only false if the key does NOT match if self.manifest is False and sup_key_ok: if data_type is not False: try: # try to find the predicate with a given data_type self.predicate = Predicate.objects.get(uuid=pitem.uuid, data_type=data_type) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False else: try: # look for the predicate item self.predicate = Predicate.objects.get(uuid=pitem.uuid) self.manifest = pitem except Predicate.DoesNotExist: self.predicate = False self.manifest = False if self.manifest is False and self.predicate is False: uuid = GenUUID.uuid4() newpred = Predicate() newpred.uuid = uuid newpred.project_uuid = self.project_uuid newpred.source_id = self.source_id newpred.data_type = self.data_type newpred.sort = self.sort newpred.created = datetime.datetime.now() newpred.save() self.predicate = newpred #now make a manifest record for the item newman = Manifest() newman.uuid = uuid newman.project_uuid = self.project_uuid newman.source_id = self.source_id newman.item_type = 'predicates' newman.repo = '' newman.class_uri = predicate_type newman.label = predicate_label newman.des_predicate_uuid = '' newman.views = 0 newman.revised = datetime.datetime.now() newman.sup_json = self.sup_dict newman.save() self.manifest = newman return self.predicate
def create_predicate(self, post_data): """ creates a predicate item into a project """ ok = True required_params = ['source_id', 'item_type', 'label', 'note', 'class_uri', 'data_type'] for r_param in required_params: if r_param not in post_data: # we're missing some required data # don't create the item ok = False message = 'Missing paramater: ' + r_param + '' self.errors.append(message) uuid = self.create_or_validate_uuid(post_data) if uuid is False: ok = False note = '; '.join(self.errors) if ok: # now check to see if this already exists note = '' item_type = 'predicates' source_id = post_data['source_id'].strip() label = post_data['label'].strip() if len(label) < 1: ok = False message = 'The label cannot be blank.' self.errors.append(message) note = '; '.join(self.errors) else: exist_uuid = self.get_uuid_manifest_label(label, item_type) if exist_uuid is not False: ok = False message = 'Cannot create a predicated called "' + label + '"' message += ', becuase it already exists with UUID: ' + uuid note += self.errors['uuid'] + ' ' pred_note = post_data['note'].strip() class_uri = post_data['class_uri'].strip() if class_uri not in Predicate.CLASS_TYPES: ok = False message = class_uri + ' is not a valid Predicate class.' self.errors.append(message) note = '; '.join(self.errors) data_type = post_data['data_type'].strip() if data_type not in Predicate.DATA_TYPES_HUMAN: ok = False message = data_type + ' is not a valid Predicate data-type.' self.errors.append(message) note = '; '.join(self.errors) if ok: note = 'Predicate "' + label + '" created with UUID:' + uuid # everything checked out OK, so make the predicate new_pred = Predicate() new_pred.uuid = uuid new_pred.project_uuid = self.project_uuid new_pred.source_id = source_id new_pred.data_type = data_type new_pred.sort = 1 new_pred.save() # now save to the manifest new_man = Manifest() new_man.uuid = uuid new_man.project_uuid = self.project_uuid new_man.source_id = source_id new_man.item_type = 'predicates' new_man.repo = '' new_man.class_uri = class_uri new_man.label = label new_man.des_predicate_uuid = '' new_man.views = 0 new_man.save() self.created_uuid = uuid # now add the note if not empty self.add_description_note(uuid, 'predicates', source_id, pred_note) if ok: # now clear the cache a change was made self.clear_caches() self.response = {'action': 'create-item-into', 'ok': ok, 'change': {'uuid': uuid, 'label': label, 'note': self.add_creation_note(ok)}} return self.response
def create_predicate(self, post_data): """ creates a type item into a project """ ok = True required_params = [ 'source_id', 'item_type', 'label', 'note', 'class_uri', 'data_type' ] for r_param in required_params: if r_param not in post_data: # we're missing some required data # don't create the item ok = False message = 'Missing paramater: ' + r_param + '' if self.errors['params'] is False: self.errors['params'] = message else: self.errors['params'] += '; ' + message uuid = self.create_or_validate_uuid(post_data) if uuid is False: ok = False note = self.errors['uuid'] if ok: # now check to see if this already exists note = '' item_type = 'predicates' source_id = post_data['source_id'].strip() label = post_data['label'].strip() if len(label) < 1: ok = False self.errors['label'] = 'The label cannot be blank.' note += self.errors['label'] + ' ' else: exist_uuid = self.get_uuid_manifest_label(label, item_type) if exist_uuid is not False: ok = False self.errors[ 'uuid'] = 'Cannot create a category called "' + label + '"' self.errors[ 'uuid'] += ', becuase it already exists with UUID: ' + uuid note += self.errors['uuid'] + ' ' pred_note = post_data['note'].strip() class_uri = post_data['class_uri'].strip() if class_uri not in Predicate.CLASS_TYPES: ok = False self.errors[ 'class_uri'] = class_uri + ' is not a valid Predicate class.' note += self.errors['class_uri'] + ' ' data_type = post_data['data_type'].strip() if data_type not in Predicate.DATA_TYPES_HUMAN: ok = False self.errors[ 'data_type'] = data_type + ' is not a valid Predicate data-type.' note += self.errors['data_type'] + ' ' if ok: note = 'Predicate "' + label + '" created with UUID:' + uuid # everything checked out OK, so make the predicate new_pred = Predicate() new_pred.uuid = uuid new_pred.project_uuid = self.project_uuid new_pred.source_id = source_id new_pred.data_type = data_type new_pred.sort = 1 new_pred.save() # now save to the manifest new_man = Manifest() new_man.uuid = uuid new_man.project_uuid = self.project_uuid new_man.source_id = source_id new_man.item_type = 'predicates' new_man.repo = '' new_man.class_uri = class_uri new_man.label = label new_man.des_predicate_uuid = '' new_man.views = 0 new_man.save() # now add the note if not empty self.add_description_note(uuid, 'predicates', source_id, pred_note) self.response = { 'action': 'create-item-into', 'ok': ok, 'change': { 'uuid': uuid, 'label': label, 'note': self.add_creation_note(ok) } } return self.response