def user_save_callback(sender, **kwargs): couch_user = kwargs.get("couch_user", None) if couch_user and couch_user.is_web_user(): properties = {} properties.update(get_subscription_properties_by_user(couch_user)) properties.update(get_domain_membership_properties(couch_user)) identify.delay(couch_user.username, properties) update_hubspot_properties(couch_user, properties)
def register_new_user(self, data): reg_form = RegisterWebUserForm( data['data'], show_number=( self.ab.version == ab_tests.NEW_USER_NUMBER_OPTION_SHOW_NUM)) if reg_form.is_valid(): self._create_new_account(reg_form) try: requested_domain = request_new_domain(self.request, reg_form, is_new_user=True) # If user created a form via prelogin demo, create an app for them if reg_form.cleaned_data['xform']: lang = 'en' app = Application.new_app(requested_domain, "Untitled Application") module = Module.new_module(_("Untitled Module"), lang) app.add_module(module) save_xform(app, app.new_form(0, "Untitled Form", lang), reg_form.cleaned_data['xform']) app.save() web_user = WebUser.get_by_username( reg_form.cleaned_data['email']) if web_user: update_hubspot_properties(web_user, { 'signup_via_demo': 'yes', }) except NameUnavailableException: # technically, the form should never reach this as names are # auto-generated now. But, just in case... logging.error( "There as an issue generating a unique domain name " "for a user during new registration.") return { 'errors': { 'project name unavailable': [], } } return { 'success': True, } logging.error( "There was an error processing a new user registration form." "This shouldn't happen as validation should be top-notch " "client-side. Here is what the errors are: {}".format( reg_form.errors)) return { 'errors': reg_form.errors, }
def register_new_user(self, data): reg_form = RegisterWebUserForm(data['data']) if reg_form.is_valid(): self._create_new_account(reg_form) try: requested_domain = request_new_domain( self.request, reg_form, is_new_user=True ) # If user created a form via prelogin demo, create an app for them if reg_form.cleaned_data['xform']: lang = 'en' app = Application.new_app(requested_domain, "Untitled Application") module = Module.new_module(_("Untitled Module"), lang) app.add_module(module) save_xform(app, app.new_form(0, "Untitled Form", lang), reg_form.cleaned_data['xform']) app.save() web_user = WebUser.get_by_username(reg_form.cleaned_data['email']) if web_user: update_hubspot_properties(web_user, { 'signup_via_demo': 'yes', }) except NameUnavailableException: # technically, the form should never reach this as names are # auto-generated now. But, just in case... logging.error("There as an issue generating a unique domain name " "for a user during new registration.") return { 'errors': { 'project name unavailable': [], } } return { 'success': True, } logging.error( "There was an error processing a new user registration form." "This shouldn't happen as validation should be top-notch " "client-side. Here is what the errors are: {}".format(reg_form.errors)) return { 'errors': reg_form.errors, }
def update_subscription_properties_by_user(couch_user): properties = get_subscription_properties_by_user(couch_user) identify.delay(couch_user.username, properties) update_hubspot_properties(couch_user, properties)