예제 #1
0
	def add_company(self,id=None,name=None):
		# get company profile from LinkedIn
		if name is not None:
			data = self.fetch_co_li_profile(name=name)
		elif id is not None:
			data = self.fetch_co_li_profile(co_id=id)
		# if nothing returned from LI, return None
		if data is None:
			# TODO add company
			if name is not None:
				print "EDGE CASE: add_company, no data returned from LI: " + name
			if id is not None:
				print "EDGE CASE: add_company, no data returned from LI: " + str(id)

			return None
		
		# add to database
		co = Entity()
		co.name = data['name']
		co.type = 'organization'
		
		## V2 Edit -- make sure we get that id
		if 'id' in data:
			co.li_uniq_id = data['id']
		if 'universalName' in data:
			co.li_univ_name = data['universalName']
		if 'companyType' in data:
			# try to convert raw LI code to something more readble
			try:
				li_type = self.company_types[data['companyType']['code']]
			except:
				li_type = data['companyType']['code'] 
			co.li_type = li_type
		if 'ticker' in data:
			co.ticker = data['ticker']
		if 'websiteUrl' in data:
			co.web_url = data['websiteUrl']
		# co.domain = data['industries']
		# co.li_status = data['status']
		if 'blog-url' in data:
			co.blog_url = data['blog-url']
		if 'twitterId' in data:
			co.twitter_handle = data['twitterId']
		if 'employeeCountRange' in data:
			co.size_range = data['employeeCountRange']['name']
		if 'description' in data:
			co.description = data['description']
		if 'stockExchange' in data:
			co.stock_exchange = data['stockExchange']['code']
		co.li_last_scanned = datetime.now()
		co.save()

		# add industries
		# TODO add manager that handles this any time domain is added to co
		if 'industries' in data:
			for i in data['industries']['values']:
				# check to see if industry already exists
				industry = self.get_industry(i['name'],i['code'])
				if industry:
					# add industry to domain of company
					co.domains.add(industry)
					if self.logging:
						print '@addCompany(), found existing industry'
				else:
					# create new industry
					if self.logging:
						print "@ addCompany(), creating new industry: " + i['name'] + ' - ' + str(i['code'])

					industry = Industry()
					industry.name=i['name']
					industry.li_code=int(i['code'])
					if industry.li_code in self.industry_groups:
						industry.li_group=self.industry_groups[industry.li_code]
					industry.save()
					# add to domain of company
					co.domains.add(industry)
					

		# check to see if company has a logo url
		if 'logoUrl' in data:
			# get company logo
			self.save_li_image(co,data['logoUrl'])

		# check to see if locations in company profile
		if 'locations' in data:
			# add offices
			if 'values' in data['locations']:
				for l in data['locations']['values']:
					self.add_office(co,l)


		if self.logging:
			print 'Add Company: (' + str(co.id) + ') ' + co.name + ' ' + str(co.li_uniq_id)
 
		return co
예제 #2
0
	def add_company(self,id=None,name=None):
		# get company profile from LinkedIn
		if name is not None:
			data = self.get_co_li_profile(name=name)
		elif id is not None:
			data = self.get_co_li_profile(co_id=id)
		# if nothing returned from LI, return None
		if data is None:
			# TODO add company
			return None
		
		# add to database
		co = Entity()
		co.name = data['name']
		co.type = 'organization'
		co.li_uniq_id = id
		# coValues = {'li_univ_name':'universalName','li_type':''}
		if 'universalName' in data:
			co.li_univ_name = data['universalName']
		if 'companyType' in data:
			co.li_type = data['companyType']['code']
		if 'ticker' in data:
			co.ticker = data['ticker']
		if 'websiteUrl' in data:
			co.web_url = data['websiteUrl']
		# co.domain = data['industries']
		# co.li_status = data['status']
		if 'blog-url' in data:
			co.blog_url = data['blog-url']
		if 'twitterId' in data:
			co.twitter_handle = data['twitterId']
		if 'employeeCountRange' in data:
			co.size_range = data['employeeCountRange']['name']
		if 'description' in data:
			co.description = data['description']
		if 'stockExchange' in data:
			co.stock_exchange = data['stockExchange']['code']
		co.li_last_scanned = datetime.now()
		co.save()

		# add industries
		# TODO add manager that handles this any time domain is added to co
		if 'industries' in data:
			for i in data['industries']['values']:
				# check to see if industry already exists
				industry = self.get_industry(i['name'],i['code'])
				if industry:
					# add industry to domain of company
					co.domains.add(industry)
				else:
					# create new industry
					industry = Industry()
					industry.name=i['name']
					industry.li_code=i['code']
					industry.save()
					# add to domain of company
					co.domains.add(industry)

		# check to see if company has a logo url
		if 'logoUrl' in data:
			# get company logo
			self.save_li_image(co,data['logoUrl'])

		# check to see if locations in company profile
		if 'locations' in data:
			# add offices
			for l in data['locations']['values']:
				self.add_office(co,l)

		return co