def lookup_student(obj): first = namecase(obj['first']) last = namecase(obj['last']) student = Students.fetch(first=first,family__last=last) if not student: student = Students.fetch(alt_first=first,family__last=last) return student
def update_existing_family(already, family): if not already.hid: already.hid = family.accessid if not already.phone: already.phone = family.home if not already.email: already.email = family.email if not already.address: already.address = Addresses.create( line1=family.street, line2='Apt. ' + family.apt if family.apt else '', city=family.city.title(), state=family.state.upper(), zipcode=family.zip, ) if not already.mother: already.mother = Parents.create( first=family.mfirst, # alt_first = family.mnick, alt_last='' if family.mlast == family.family else family.mlast, sex='F', alt_phone=0 if family.mcell == family.home else family.mcell, family_id=already.id, ) if not already.father: already.father = Parents.create( first=family.ffirst, # alt_first = family.fnick, alt_last='' if family.flast == family.family else family.flast, sex='M', alt_phone=0 if family.fcell == family.home else family.fcell, family_id=already.id, ) for student in OldStudents.filter(familyid=family.accessid): alreadyStudent = find_existing_student(already, student) if alreadyStudent: update_existing_student(alreadyStudent, student) else: stu = Students.create( oid=student.id, hid=student.studentid, created_at=student.creationdate, updated_at=student.moddate, family=already, first=namecase(student.first), alt_last='' if (not already) or already.last == student.last else student.last, alt_email='' if (not already) or already.email == student.email else student.email, sex=student.sex, birthday=student.dob if student.dob else '2020-12-31', grad_year=est_grad(student), tshirt=sub(student.tshirt, {'AXL': 'XL'}), needs=student.needsdescribe)
def family_post(request, ref): me = getme(request) if me: me.username = request.POST['username'] if me.owner: me.owner.save() new_family = copy(request.POST, ['last', 'phone', 'phone_type', 'email']) new_family['last'] = namecase(new_family['last']) new_user = copy(request.POST, ['username', 'password', 'pw_confm']) new_user['permission'] = 2 ouu = me and str(new_user['username']) == str(me.username) if Families.isValid(new_family) and Users.isValid( new_user, override_unique_username=ouu): new_user.pop('pw_confm') if not me: new_family = Families.create(**new_family) new_user['owner'] = new_family me = Users.create(**new_user) elif me and not me.owner: me.username = new_user['username'] new_family = Families.create(**new_family) me.owner = new_family me.save() elif me and me.owner: me.username = new_user['username'] family = me.owner family.last = new_family['last'] family.phone = new_family['phone'] family.email = new_family['email'] family.phone_type = new_family['phone_type'] print new_family['email'] print family.email family.save() me.save() request.session['e'] = {} request.session['meid'] = me.id return redirect('/register/parents') else: request.session['p'] = { 'family': new_family, 'user': new_user, } request.session['e'] = { 'family': Families.errors(new_family), 'user': Users.errors(new_user) } return redirect('/register/family')
def find_existing_family(family): already = Families.filter(last=namecase(family.family)) if already: # if len(already) == 1: # return already[0] # elif len(already) > 1: old_children = OldStudents.filter(familyid=family.accessid) old_children = set(Each(old_children).first.lower()) nMatches = [] for fam in already: new_children = set(Each(fam.children).first.lower()) new_children |= set(Each(fam.children).alt_first.lower()) nMatches.append(len(old_children & new_children)) nMatches.append(0) best = max(nMatches) if best: return already[nMatches.index(best)]
def create(self, **kwargs): if 'last' in kwargs: kwargs['last'] = namecase(kwargs['last']) las = kwargs['last'][:3].upper() # kwargs['hid'] = las + str(serial(self, 'hid', hid__startswith=las)) return super(FamilyManager, self).create(**kwargs)
def create(self, **kwargs): if 'alt_last' in kwargs: kwargs['alt_last'] = namecase(kwargs['alt_last']) return super(StudentManager, self).create(**kwargs)