Exemplo n.º 1
0
	def generate_secret_key(self):
		secret_key = CustomAppSettings.get_new_secret_key()

		# Insert the key into the db
		db = self.get_user_profiles_db()
		res = db.users.update(spec={'_id':ObjectId(self.get_user_id())}, document={'$set':{'secret_key': secret_key}}, upsert=True)

		return secret_key, res
Exemplo n.º 2
0
	def create_user(alias='', plan_name='basic', email='', facebook_user={}, *args, **kwargs):
		db = User({}).get_user_profiles_db()
		u = None

		fb_id = ''

		# If Facebook user is supplied, use it as the highest priority
		if facebook_user:
			# Create a brand new user
			alias = facebook_user.get('name', '').strip()
			email = facebook_user.get('email', '').strip()
			fb_id = facebook_user.get('id', '').strip()

		elif email:
			email = email.strip()
			if User({})._validate_email(email):
				# Make sure email does not exist
				u = db.users.find_one({'contacts.email': email.lower(), 'role': 'user'})

				if u:
					return {'error': 'Email already occupied'}
			else:
				return {'error': 'Invalid email'}

		# ---- Green light for creating new user

		#get plan
		plan = db.plans.find_one({'name': plan_name})

		# Get db index
		db_ind = db.counters.find_and_modify(
			query={'_id': 'dbindex'},
			update={'$inc': {'seq': 1}},
			upsert=True,
			new=True
		)['seq']
		db_ind = int(db_ind)

		# Get new secret key
		secret_key = CustomAppSettings.get_new_secret_key()

		# Get time
		d = datetime.datetime.utcnow()

		# Create doc
		doc = {
			'alias': alias.strip(),
			'secret_key': secret_key.lower(),
			'db_ind': db_ind,
			'role': 'user',
			'is_active': 0,
			'created': d,
			'actdeact': d,
			'last_access': None, 
			'plan': {'id': plan['_id'], 'date': d},
			'plans_history': [],
			'contacts': {'email': email.lower(), 'cell': ''},
			'points': 100,
			'facebook_id': fb_id
		}

		# # Add additional fields
		# for k, v in kwargs.iteritems():
		# 	if not k in doc:
		# 		doc[k]  = v

		# Try to write
		userid = db.users.insert(doc)

		# Create indexes on user db
		cl = User({}).get_mongo()
		db = cl['webscr_' + str(db_ind)]
		db.urls.ensure_index('date_scraped', 1)
		db.task_meta.ensure_index('date_done', 1)

		return {'profile_id': userid}