def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower() + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter(username=validated_username).count() if username_check == 0 and len(validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email']) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile() user_profile.user = user user_profile.save() if 'is_worker' in self.validated_data or self.validated_data['is_worker']: worker = models.Worker() worker.profile = user_profile worker.alias = username worker.save() if 'is_requester' in self.validated_data or self.validated_data['is_requester']: requester = models.Requester() requester.profile = user_profile requester.alias = username requester.save() if settings.EMAIL_ENABLED: salt = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.RegistrationModel() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email_sendgrid(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() return user
def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower( ) + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter( username=validated_username).count() if username_check == 0 and len( validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email'] ) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile() user_profile.user = user user_profile.save() if self.validated_data.get('is_requester', False): requester = models.Requester() requester.profile = user_profile requester.alias = username requester.save() ''' For experimental phase only, to be removed later. {begin experiment} ''' try: if self.initial_data.get('experiment_fields', False): requester_experiment = experimental_models.RequesterExperiment( ) requester_experiment.requester = requester requester_experiment.has_prototype = self.initial_data[ 'experiment_fields'].get('has_prototype', True) requester_experiment.has_boomerang = self.initial_data[ 'experiment_fields'].get('has_boomerang', True) requester_experiment.pool = self.initial_data[ 'experiment_fields'].get('pool', 0) requester_experiment.save() else: experimental_models.WorkerExperiment.objects.create( requester=requester) except Exception as e: pass # it's ok to fail silently here ''' {end experiment} ''' has_profile_info = self.validated_data.get( 'is_requester', False) or self.validated_data.get( 'is_worker', False) if self.validated_data.get('is_worker', False) or not has_profile_info: worker = models.Worker() worker.profile = user_profile worker.alias = username worker.save() ''' For experimental phase only, to be removed later. {begin experiment} ''' try: if self.initial_data.get('experiment_fields', False): worker_experiment = experimental_models.WorkerExperiment() worker_experiment.worker = worker worker_experiment.has_prototype = self.initial_data[ 'experiment_fields'].get('has_prototype', True) worker_experiment.sorting_type = self.initial_data[ 'experiment_fields'].get('sorting_type', 1) worker_experiment.is_subject_to_cascade= self.initial_data['experiment_fields']\ .get('is_subject_to_cascade', True) worker_experiment.pool = self.initial_data[ 'experiment_fields'].get('pool', 0) worker_experiment.save() else: experimental_models.WorkerExperiment.objects.create( worker=worker) except Exception as e: pass # it's ok to fail silently here ''' {end experiment} ''' if settings.EMAIL_ENABLED: salt = hashlib.sha1(str( random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.RegistrationModel() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email_sendgrid( email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() return user
def create(self, **kwargs): print "in serial create" username = '' validated_username = self.validated_data['first_name'].lower( ) + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter( username=validated_username).count() if username_check == 0 and len( validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email'] ) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] print "in serial create - uname val done" user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) # if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile.objects.create(user=user, is_worker=False, is_requester=False, handle=username) profile_data = { 'location': self.initial_data.get('location', {}), 'birthday': self.initial_data.get('birthday', None), 'user': {} } user_profile_serializer = UserProfileSerializer(instance=user_profile, data=profile_data, partial=True) if user_profile_serializer.is_valid(): user_profile = user_profile_serializer.update() update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'is_worker', 0) update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'is_requester', 0) # update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'birthday_year', # user_profile.birthday.year) models.UserPreferences.objects.create(user=user) # if self.validated_data.get('is_requester', True): # user_profile.is_requester = True # user_profile.save() # requester_financial_account = models.FinancialAccount() # requester_financial_account.owner = user # requester_financial_account.type = models.FinancialAccount.TYPE_REQUESTER # requester_financial_account.save() # # has_profile_info = self.validated_data.get('is_requester', False) or self.validated_data.get('is_worker', # False) # if self.validated_data.get('is_worker', True) or not has_profile_info: # user_profile.is_worker = True # user_profile.save() # worker_financial_account = models.FinancialAccount() # worker_financial_account.owner = user # worker_financial_account.type = models.FinancialAccount.TYPE_WORKER # worker_financial_account.save() ################Bir Commented out to discourse############# if settings.EMAIL_ENABLED: print "in EMAIL_ENABLED" salt = hashlib.sha1(str( random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.UserRegistration() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() # if settings.DISCOURSE_BASE_URL and settings.DISCOURSE_API_KEY: # try: # client = DiscourseClient( # settings.DISCOURSE_BASE_URL, # api_username='******', # api_key=settings.DISCOURSE_API_KEY) # client.create_user(name=user.get_full_name(), # username=user.profile.handle, # email=user.email, # password=self.initial_data.get('password1'), # active=True, # approved=True) # except Exception: # print("Failed to create Discourse user!") return user
def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower() + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter(username=validated_username).count() if username_check == 0 and len(validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email']) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile() user_profile.user = user user_profile.save() user_financial_account = models.FinancialAccount() user_financial_account.owner = user_profile user_financial_account.type = 'general' user_financial_account.save() if self.validated_data.get('is_requester', True): requester = models.Requester() requester.profile = user_profile requester.alias = username requester.save() requester_financial_account = models.FinancialAccount() requester_financial_account.owner = user_profile requester_financial_account.type = 'requester' requester_financial_account.save() has_profile_info = self.validated_data.get('is_requester', False) or self.validated_data.get('is_worker', False) if self.validated_data.get('is_worker', False) or not has_profile_info: worker = models.Worker() worker.profile = user_profile worker.alias = username worker.save() worker_financial_account = models.FinancialAccount() worker_financial_account.owner = user_profile worker_financial_account.type = 'worker' worker_financial_account.save() if settings.EMAIL_ENABLED: salt = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.RegistrationModel() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() return user
def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower() + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter(username=validated_username).count() if username_check == 0 and len(validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email']) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile() user_profile.user = user user_profile.save() if self.validated_data.get('is_requester', False): requester = models.Requester() requester.profile = user_profile requester.alias = username requester.save() ''' For experimental phase only, to be removed later. {begin experiment} ''' try: if self.initial_data.get('experiment_fields', False): requester_experiment = experimental_models.RequesterExperiment() requester_experiment.requester = requester requester_experiment.has_prototype = self.initial_data['experiment_fields'].get('has_prototype', True) requester_experiment.has_boomerang = self.initial_data['experiment_fields'].get('has_boomerang', True) requester_experiment.pool = self.initial_data['experiment_fields'].get('pool', 0) requester_experiment.save() else: experimental_models.WorkerExperiment.objects.create(requester=requester) except Exception as e: pass # it's ok to fail silently here ''' {end experiment} ''' has_profile_info = self.validated_data.get('is_requester', False) or self.validated_data.get('is_worker', False) if self.validated_data.get('is_worker', False) or not has_profile_info: worker = models.Worker() worker.profile = user_profile worker.alias = username worker.save() ''' For experimental phase only, to be removed later. {begin experiment} ''' try: if self.initial_data.get('experiment_fields', False): worker_experiment = experimental_models.WorkerExperiment() worker_experiment.worker = worker worker_experiment.has_prototype = self.initial_data['experiment_fields'].get('has_prototype', True) worker_experiment.sorting_type = self.initial_data['experiment_fields'].get('sorting_type', 1) worker_experiment.is_subject_to_cascade= self.initial_data['experiment_fields']\ .get('is_subject_to_cascade', True) worker_experiment.pool = self.initial_data['experiment_fields'].get('pool', 0) worker_experiment.save() else: experimental_models.WorkerExperiment.objects.create(worker=worker) except Exception as e: pass # it's ok to fail silently here ''' {end experiment} ''' if settings.EMAIL_ENABLED: salt = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.RegistrationModel() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email_sendgrid(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() return user
def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower() + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter(username=validated_username).count() if username_check == 0 and len(validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email']) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile() user_profile.user = user user_profile.save() user_profile_serializer = UserProfileSerializer(instance=user_profile, data={'location': self.initial_data['location'], 'user': {}}, partial=True) if user_profile_serializer.is_valid(): user_profile_serializer.update() user_preferences = models.UserPreferences() user_preferences.user = user user_preferences.save() # user_financial_account = models.FinancialAccount() # user_financial_account.owner = user # user_financial_account.type = 'general' # user_financial_account.save() if self.validated_data.get('is_requester', True): user_profile.is_requester = True user_profile.save() requester_financial_account = models.FinancialAccount() requester_financial_account.owner = user requester_financial_account.type = models.FinancialAccount.TYPE_REQUESTER requester_financial_account.save() has_profile_info = self.validated_data.get('is_requester', False) or self.validated_data.get('is_worker', False) if self.validated_data.get('is_worker', True) or not has_profile_info: user_profile.is_worker = True user_profile.save() worker_financial_account = models.FinancialAccount() worker_financial_account.owner = user worker_financial_account.type = models.FinancialAccount.TYPE_WORKER worker_financial_account.save() if settings.EMAIL_ENABLED: salt = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.UserRegistration() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() return user
def create(self, **kwargs): username = '' validated_username = self.validated_data['first_name'].lower() + '.' + self.validated_data['last_name'].lower() username_check = User.objects.filter(username=validated_username).count() if username_check == 0 and len(validated_username) <= settings.USERNAME_MAX_LENGTH: username = validated_username else: username = get_next_unique_id(User, 'username', validated_username) if len(username) > settings.USERNAME_MAX_LENGTH: if len(self.validated_data['email']) <= settings.USERNAME_MAX_LENGTH: username = self.validated_data['email'] else: username = uuid.uuid4().hex[:settings.USERNAME_MAX_LENGTH] user = User.objects.create_user(username, self.validated_data.get('email'), self.initial_data.get('password1')) # if settings.EMAIL_ENABLED: user.is_active = 0 user.first_name = self.validated_data['first_name'] user.last_name = self.validated_data['last_name'] user.save() user_profile = models.UserProfile.objects.create(user=user, is_worker=False, is_requester=False, handle=username) profile_data = { 'location': self.initial_data.get('location', {}), 'birthday': self.initial_data.get('birthday', None), 'user': {} } user_profile_serializer = UserProfileSerializer(instance=user_profile, data=profile_data, partial=True) if user_profile_serializer.is_valid(): user_profile = user_profile_serializer.update() update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'is_worker', 0) update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'is_requester', 0) # update_worker_cache([user.id], constants.ACTION_UPDATE_PROFILE, 'birthday_year', # user_profile.birthday.year) models.UserPreferences.objects.create(user=user) # if self.validated_data.get('is_requester', True): # user_profile.is_requester = True # user_profile.save() # requester_financial_account = models.FinancialAccount() # requester_financial_account.owner = user # requester_financial_account.type = models.FinancialAccount.TYPE_REQUESTER # requester_financial_account.save() # # has_profile_info = self.validated_data.get('is_requester', False) or self.validated_data.get('is_worker', # False) # if self.validated_data.get('is_worker', True) or not has_profile_info: # user_profile.is_worker = True # user_profile.save() # worker_financial_account = models.FinancialAccount() # worker_financial_account.owner = user # worker_financial_account.type = models.FinancialAccount.TYPE_WORKER # worker_financial_account.save() if settings.EMAIL_ENABLED: salt = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] if isinstance(username, str): username = username.encode('utf-8') activation_key = hashlib.sha1(salt.encode('utf-8') + username).hexdigest() registration_model = models.UserRegistration() registration_model.user = User.objects.get(id=user.id) registration_model.activation_key = activation_key send_activation_email(email=user.email, host=self.context['request'].get_host(), activation_key=activation_key) registration_model.save() if settings.DISCOURSE_BASE_URL and settings.DISCOURSE_API_KEY: try: client = DiscourseClient( settings.DISCOURSE_BASE_URL, api_username='******', api_key=settings.DISCOURSE_API_KEY) client.create_user(name=user.get_full_name(), username=user.profile.handle, email=user.email, password=self.initial_data.get('password1'), active=True, approved=True) except Exception: print("Failed to create Discourse user!") return user