def add_position(self,user,co,data): # dectionary of values to test for and then add if present positionValues = {'title':'title','description':'summary','current':'isCurrent'} # Toss out "student" positions in experience (v3 edit, 7/12) if data["title"] == "Student" or data["title"] == "student": return pos = Position() pos.entity = co pos.person = user for k,v in positionValues.iteritems(): if v in data: setattr(pos,k,data[v]) # check for start date if 'startDate' in data: pos.start_date = self.format_dates(data['startDate']) # check for end date if 'endDate' in data: pos.end_date = self.format_dates(data['endDate']) pos.save() # if pos.title: careers = careerlib.match_careers_to_position(pos) # match position to ideal position careerlib.match_position_to_ideals(pos) # print careers for c_id in careers: c = Career.objects.get(pk=c_id) # print c pos.careers.add(c) pos.save()
def add_unverified_position(self,user,co,data): """ Special case in which entity has no li_uniq_id, try and add "unverified" position TODO: merge this with add_position, only a single line difference Return: None """ positionValues = {'title':'title','description':'summary','current':'isCurrent'} pos = Position() pos.entity = co pos.person = user pos.status = "unverified" for k,v in positionValues.iteritems(): if v in data: setattr(pos,k,data[v]) # check for start date if 'startDate' in data: pos.start_date = self.format_dates(data['startDate']) # check for end date if 'endDate' in data: pos.end_date = self.format_dates(data['endDate']) pos.save() careers = careerlib.match_careers_to_position(pos) # match position to ideal position careerlib.match_position_to_ideals(pos) # print careers for c_id in careers: c = Career.objects.get(pk=c_id) # print c pos.careers.add(c) pos.save()
def add_positions(self, person, rels): for r in rels: # check if current position if r["is_past"] == False: current = True else: current = False # check to see if position already exists org = Entity.objects.filter(Q(cb_permalink=r["firm"]["permalink"]) | Q(name=r["firm"]["name"])) if not org.exists(): org = self.add_org(r["firm"]["permalink"], r["firm"]["type_of_entity"]) else: org = org[0] pos = Position.objects.filter(title=r["title"], entity=org) if not pos.exists(): # create new position try: pos = Position(title=r["title"][:150], entity=org, person=person, current=current) pos.save() except ValueError, e: print str(e)
def add_educations(self, person, educations): for e in educations: # check to see if institution already exists inst = Entity.objects.filter(name=e["institution"]) if not inst.exists(): inst = self.add_institution(e["institution"]) else: inst = inst[0] # check to see if education already exists ed = Position.objects.filter(degree=e["degree_type"], entity=inst) if not ed.exists(): end_date = self.construct_date(e["graduated_year"], e["graduated_month"], e["graduated_day"]) ed = Position( entity=inst, person=person, degree=e["degree_type"], field=e["subject"], end_date=end_date, current=True, ) ed.save()
def add_ed_position(self,user,ed,data): """ Adds position with type='education', attempts to add 'degree' and 'field' if found Return: None """ pos = Position() pos.entity = ed pos.person = user pos.type = 'education' pos.title = 'Student' # not necessary, but convenient if 'degree' in data: pos.degree = data['degree'] if 'fieldOfStudy' in data: pos.field = data['fieldOfStudy'] # check for start date if 'start_date' in data: pos.start_date = self.format_dates(data['start_date']) # check for end date if 'end_date' in data: pos.end_date = self.format_dates(data['end_date']) pos.save()
def add_to_profile(request): # check for form submission if request.POST: from accounts.forms import AddEducationForm, AddExperienceForm, AddGeographyForm, AddGoalForm, AddProfilePicForm from django.core.files import File import accounts.tasks as tasks if request.POST['type'] == "profile_pic": # bind form form = AddProfilePicForm(request.POST,request.FILES) # validate form if form.is_valid(): # create picture object img_filename = request.user.profile.std_name() + ".jpg" pic = Picture() pic.person = request.user.profile pic.source = 'user' pic.save() with open('tmp_img','wb') as f: f.write(request.FILES['pic'].read()) with open('tmp_img','r') as f: img_file = File(f) pic.pic.save(img_filename,img_file,True) os.remove('tmp_img') response = { 'result':'success', 'pic':pic.pic.url } else: response = { 'result':'failure', 'position':form.errors } return HttpResponse(json.dumps(response)) if request.POST['type'] == "education": # bind form form = AddEducationForm(request.POST) # validate form if form.is_valid(): try: school = Entity.objects.get(name=form.cleaned_data['school']) except MultipleObjectsReturned: school = Entity.objects.filter(name=form.cleaned_data['school'])[0] except ObjectDoesNotExist: school = Entity(name=form.cleaned_data['school']) school.save() ed = Position(type="education",entity=school,end_date=form.cleaned_data['end_date'],degree=form.cleaned_data['degree'],field=form.cleaned_data['field'],person=request.user) ed.save() # kick off task to process for career matches tasks.match_position(ed) position_data = { 'degree':ed.degree, 'pos_id':ed.id, 'field':ed.field, 'entity':ed.entity.name } response = { 'result':'success', 'position':position_data } else: response = { 'result':'failure', 'errors':form.errors } return HttpResponse(json.dumps(response)) if request.POST['type'] == "experience": # bind form form = AddExperienceForm(request.POST) # validate form if form.is_valid(): try: entity = Entity.objects.get(name=form.cleaned_data['entity']) except MultipleObjectsReturned: entity = Entity.objects.filter(name=form.cleaned_data['entity'])[0] except ObjectDoesNotExist: entity = Entity(name=form.cleaned_data['entity']) entity.save() pos = Position( type="professional", entity=entity, person=request.user, start_date=form.cleaned_data['start_date'], end_date=form.cleaned_data['end_date'], title=form.cleaned_data['title'] ) pos.save() # kick off task to process career matches tasks.match_position(pos) # return json response position_data = { 'title':pos.title, 'pos_id':pos.id, 'entity':pos.entity.name } response = { 'result':'success', 'position':position_data } else: response = { 'result':'failure', 'errors':form.errors } return HttpResponse(json.dumps(response)) if request.POST['type'] == "geography": # bind form form = AddGeographyForm(request.POST) # validate form if form.is_valid(): try: reg = Region.objects.get(name=form.cleaned_data['region']) except MultipleObjectsReturned: reg = Region.objects.filter(name=form.cleaned_data['region'])[0] reg.people.add(request.user) response = { 'result':'success', 'geo':reg.name } else: response = { 'result':'failure', 'errors':form.errors } return HttpResponse(json.dumps(response)) if request.POST['type'] == "goal": # bind form form = AddGoalForm(request.POST) # validate form if form.is_valid(): try: ideal = IdealPosition.objects.get(title=form.cleaned_data['goal']) except MultipleObjectsReturned: ideal = IdealPosition.objects.filter(title=form.cleaned_data['goal'])[0] g = GoalPosition(position=ideal,owner=request.user) g.save() response = { 'result':'success', 'goal':g.position.title } else: response = { 'result':'failure', 'errors':form.errors } return HttpResponse(json.dumps(response))