Example #1
0
def add_dynasty():
    response.content_type = 'application/json'

    print('POST', request.json)
    result = dict()

    try:
        founder = Person(request.json['name'], request.json['byear'],
                         request.json['dyear'], request.json['gender'], None,
                         None)
        dynasty = Dynasty(request.json['dyn'], founder)
        founder_key = db.add_person(founder)
        dynasty_key = db.add_dynasty(dynasty, founder_key)
        founder.add_dynasty(dynasty_key)
        db.update_person(founder_key, founder)
        result['success'] = True
        result['dynasty_id'] = dynasty_key
        result['founder_id'] = founder_key
        result['dyn'] = request.json['dyn']
        result['name'] = request.json['name']
        result['byear'] = request.json['byear']
        result['dyear'] = request.json['dyear']
        result['gender'] = request.json['gender']

    except:
        result['success'] = False

    print(result)
    return json.dumps(result)
Example #2
0
 def add_person(self, person: Person):
     id_ = self.persons.next_id()
     mother = self.get_person(person.parents.__getitem__(0))
     father = self.get_person(person.parents.__getitem__(1))
     if mother is not None:
         mother.add_children(id_)
         self.update_person(person.parents.__getitem__(0), mother)
     if father is not None:
         father.add_children(id_)
         self.update_person(person.parents.__getitem__(1), father)
     if mother is not None and father is not None:
         mother_dynasty = self.get_dynasty({"_id": mother.dynasty})
         father_dynasty = self.get_dynasty({"_id": father.dynasty})
         if mother_dynasty is None:
             person.add_dynasty(self.get_dynasty({"_id": father.dynasty}))
         elif father_dynasty is None:
             person.add_dynasty(self.get_dynasty({"_id": mother.dynasty}))
         else:
             if self.get_person(mother_dynasty.founder
                                ).gender == 'F' and self.get_person(
                                    father_dynasty.founder).gender == 'M':
                 person.add_dynasty(father_dynasty)
             elif self.get_person(mother_dynasty.founder).gender == 'F':
                 person.add_dynasty(mother_dynasty)
             elif self.get_person(father_dynasty.founder).gender == 'F':
                 person.add_dynasty(father_dynasty)
             else:
                 person.add_dynasty(father_dynasty)
     try:
         self.persons.collection.insert_one({
             "_id":
             id_,
             "name":
             person.name,
             "byear":
             person.byear,
             "dyear":
             person.dyear,
             "gender":
             person.gender,
             "dynasty":
             person.dynasty,
             "mid":
             person.parents.__getitem__(0),
             "fid":
             person.parents.__getitem__(1),
             "children":
             person.children
         })
         return id_
     except:
         self.persons.collection.replace_one(
             self.persons.collection.find({
                 "_id": id_
             }).next(), {
                 "_id": id_,
                 "name": person.name,
                 "byear": person.byear,
                 "dyear": person.dyear,
                 "gender": person.gender,
                 "dynasty": person.dynasty,
                 "mid": person.parents.__getitem__(0),
                 "fid": person.parents.__getitem__(1),
                 "children": person.children
             })
         return id_