Пример #1
0
	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()
Пример #2
0
	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()
Пример #3
0
 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)
Пример #4
0
 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()
Пример #5
0
	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()
Пример #6
0
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))