예제 #1
0
    def createEntitiesCleanup(self, file, fields, cases_map, fix):

        reader = csv.reader(file, skipinitialspace=True, delimiter=b",", quoting=csv.QUOTE_MINIMAL, quotechar=b'"')
        for line in reader:
            row = {}
            for f, d in zip(fields, line):
                c = d.strip()
                if f == "case_id":
                    if c == "":
                        row[f] = 0
                    else:
                        row[f] = cases_map[int(c)]
                elif str(f) == "role":
                    row["role"] = FindInList(self.roles, "role", c, default={"id": 1, "role": ""})["id"]
                elif str(f) == "prefix":
                    row["prefix"] = FindInList(self.prefixs, "prefix", c, default={"id": 1, "prefix": ""})["id"]
                elif str(f) == "suffix":
                    row["suffix"] = FindInList(self.suffixs, "suffix", c, default={"id": 1, "suffix": ""})["id"]
                else:
                    row[f] = c.replace("\n", "").replace("\r", "").replace('"', "").strip()

            row["import_file"] = self.request.params.get("import.marker", "not provided")

            if fix:
                self._fix_firstname_issues_and_insert(row)
            else:
                entities = Entities(**row)
                lastid = entities.insert(self.request)
                print "Uploaded Entity ID: " + str(lastid)
예제 #2
0
    def _fix_firstname_issues_and_insert(self, row):
        firstname = row["firstname"].replace(" and ", "|")
        firstname = firstname.replace(" & ", "|")
        firstname = firstname.replace(", ", "|")

        entities = firstname.split("|")
        for e in entities:
            p, f, m, s = self._fix_firstnames(e)
            row["firstname"] = f
            row["middlename"] = m
            row["prefix"] = FindInList(self.prefixs, "prefix", p, default={"id": 1, "prefix": ""})["id"]
            row["suffix"] = FindInList(self.suffixs, "suffix", s, default={"id": 1, "suffix": ""})["id"]

            entities = Entities(**row)
            lastid = entities.insert(self.request)
            print "Uploaded 'CLEANED' Entity ID: " + str(lastid)
예제 #3
0
 def _save(self, case_id):
     entities, new_entities = {}, {}
     cases, new_cases = {}, {}
     
     for k,v in self.request.params.items():
         action, table, attr, id = k.split('.')
         if action == 'edit':
             if table == 'Entities':
                 if id not in entities:
                     entities[id] = { attr : v }
                 else:
                     entities[id][attr] = v
                     
             if table == 'Cases':
                 if id not in cases:
                     cases[id] = { attr : v }
                 else:
                     cases[id][attr] = v
                     
         if action == 'new':
             if table == 'Entities':
                 if id not in new_entities:
                     new_entities[id] = { attr : v }
                 else:
                     new_entities[id][attr] = v
                     
             if table == 'Cases':
                 if id not in new_cases:
                     new_cases[id] = { attr : v }
                 else:
                     new_cases[id][attr] = v
                     
                     
         #new_cases[id]['year'] = self._determine_year
                     
     # save new cases
     for k,v in new_cases.items():
         case = Cases()
         for attr,value in v.items():
             setattr(case,attr,value)
         case.year = self._determine_year(case.year_text)[0]
         case_id = case.insert(self.request)
     
     # save new entities
     for k,v in new_entities.items():
         entity = Entities()
         for attr,value in v.items():
             setattr(entity,attr,value)
         entity.case_id = case_id
         entity.insert(self.request)
                     
     # save existing cases
     for k,v in cases.items():
         case = Cases.load(id=k)
         for attr,value in v.items():
             setattr(case,attr,value)
         case.year = self._determine_year(case.year_text)[0]
         case.save(self.request)
     
     # save existing entities
     for k,v in entities.items():
         entity = Entities.load(id=k)
         for attr,value in v.items():
             setattr(entity,attr,value)
         entity.save(self.request)