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
Exemple #2
0
 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()
Exemple #3
0
 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()
Exemple #4
0
 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
Exemple #5
0
 def store_records(self, act_table, recs):
     """
     stores records retrieved for a given table
     """
     i = 0
     for record in recs:
         i += 1
         allow_write = self.check_allow_write(act_table, record)
         record = self.prep_update_keep_old(act_table, record)
         if (allow_write is False and self.update_keep_old is False):
             print('\n Not allowed to overwite record.' + str(i))
         else:
             # print('\n Adding record:' + str(record))
             newr = False
             if (act_table == 'link_annotations'):
                 newr = LinkAnnotation(**record)
             elif (act_table == 'link_entities'):
                 newr = LinkEntity(**record)
             elif (act_table == 'oc_assertions'):
                 newr = Assertion(**record)
             elif (act_table == 'oc_manifest'):
                 newr = Manifest(**record)
             elif (act_table == 'oc_subjects'):
                 newr = Subject(**record)
             elif (act_table == 'oc_mediafiles'):
                 newr = Mediafile(**record)
             elif (act_table == 'oc_documents'):
                 newr = OCdocument(**record)
             elif (act_table == 'oc_persons'):
                 newr = Person(**record)
             elif (act_table == 'oc_projects'):
                 newr = Project(**record)
             elif (act_table == 'oc_strings'):
                 newr = OCstring(**record)
             elif (act_table == 'oc_types'):
                 newr = OCtype(**record)
             elif (act_table == 'oc_geospace'):
                 newr = Geospace(**record)
             elif (act_table == 'oc_events'):
                 newr = Event(**record)
             elif (act_table == 'oc_predicates'):
                 newr = Predicate(**record)
             elif (act_table == 'oc_identifiers'):
                 newr = StableIdentifer(**record)
             elif (act_table == 'oc_obsmetadata'):
                 newr = ObsMetadata(**record)
             if (newr is not False):
                 try:
                     newr.save(force_insert=self.force_insert,
                               force_update=self.update_keep_old)
                 except Exception as error:
                     print('Something slipped past in ' + act_table +
                           '...' + str(error))
Exemple #6
0
 def store_records(self, act_table, recs):
     """
     stores records retrieved for a given table
     """
     for rkey, record in recs.items():
         if (act_table == 'link_annotations'):
             newr = LinkAnnotation(**record)
             newr.save()
         elif (act_table == 'link_entities'):
             newr = LinkEntity(**record)
             newr.save()
         elif (act_table == 'link_hierarchies'):
             newr = LinkHierarchy(**record)
             newr.save()
         elif (act_table == 'oc_chronology'):
             newr = Chronology(**record)
             newr.save()
         elif (act_table == 'oc_geodata'):
             newr = Geodata(**record)
             newr.save()
         elif (act_table == 'oc_mediafiles'):
             newr = Mediafile(**record)
             newr.save()
         elif (act_table == 'oc_documents'):
             newr = OCdocument(**record)
             newr.save()
         elif (act_table == 'oc_persons'):
             newr = Person(**record)
             newr.save()
         elif (act_table == 'oc_projects'):
             newr = Project(**record)
             newr.save()
         elif (act_table == 'oc_strings'):
             newr = OCstring(**record)
             newr.save()
         elif (act_table == 'oc_types'):
             newr = OCtype(**record)
             newr.save()
         elif (act_table == 'oc_events'):
             newr = Event(**record)
             newr.save()
         elif (act_table == 'oc_predicates'):
             newr = Predicate(**record)
             newr.save()
         elif (act_table == 'oc_identifiers'):
             newr = StableIdentifer(**record)
             newr.save()
         elif (act_table == 'oc_obsmetadata'):
             newr = ObsMetadata(**record)
             newr.save()
Exemple #7
0
 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
Exemple #9
0
 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