def handle_submit(self, validated): context = self.context community = self.community request = self.request users = find_users(context) profiles = self.profiles password = validated['account']['password'] username = validated['account']['username'] if community: community_href = model_url(community, request) groups = [ community.members_group_name ] users.add(username, username, password, groups) else: users.add(username, username, password, ['group.KarlStaff']) plugin = request.environ['repoze.who.plugins']['auth_tkt'] identity = {'repoze.who.userid':username} remember_headers = plugin.remember(request.environ, identity) profile = create_content( IProfile, firstname=validated['details']['first_name'], lastname=validated['details']['last_name'], email=context.email, country=validated['details']['country'], dob=validated['details']['date_of_birth'], gender=validated['details']['gender'] ) profiles[username] = profile to_profile_active(profile) del context.__parent__[context.__name__] if community: url = model_url(community, request, query={'status_message':'Welcome!'}) _send_ai_email(community, community_href, username, profile) else: url = request.api.app_url+'?status_message=Welcome!' _send_signup_ai_email(request, username, profile) return HTTPFound(headers=remember_headers, location=url)
def reactivate_profile_view(context, request, reset_password=request_password_reset, to_profile_active=to_profile_active): name = context.__name__ confirm = request.params.get('confirm') if confirm: users = find_users(context) temp_passwd = str(uuid.uuid4()) users.add(name, name, temp_passwd, []) to_profile_active(context) reset_password(users.get_by_id(name), context, request) query = {'status_message': 'Reactivated user account: %s' % name} location = model_url(context, request, query=query) return HTTPFound(location=location) page_title = 'Reactivate user account for %s %s' % (context.firstname, context.lastname) api = request.api api.page_title = page_title # Show confirmation page. return dict(api=api)
def populate(root, do_transaction_begin=True, post_app_setup=None): if do_transaction_begin: transaction.begin() data = queryUtility(IInitialData, default=DefaultInitialData()) if 'communities_name' in dir(data): communities_name = data.communities_name else: communities_name = None site = root['site'] = Site(communities_name) site.__acl__ = data.site_acl site.events = SiteEvents() # If a catalog database exists and does not already contain a catalog, # put the site-wide catalog in the catalog database. main_conn = root._p_jar try: catalog_conn = main_conn.get_connection('catalog') except KeyError: # No catalog connection defined. Put the catalog in the # main database. pass else: catalog_root = catalog_conn.root() if 'catalog' not in catalog_root: catalog_root['catalog'] = site.catalog catalog_conn.add(site.catalog) main_conn.add(site) # the ZODB root isn't a Folder, so it doesn't send events that # would cause the root Site to be indexed docid = site.catalog.document_map.add(model_path(site)) site.catalog.index_doc(docid, site) site.docid = docid # the staff_acl is the ACL used as a basis for "public" resources site.staff_acl = data.staff_acl site['profiles'].__acl__ = data.profiles_acl site.moderator_principals = data.moderator_principals site.member_principals = data.member_principals site.guest_principals = data.guest_principals profiles = site['profiles'] users = site.users site['mailboxes'] = Folder() for login, firstname, lastname, email, groups in data.users_and_groups: log.info('adding to users login=%s, groups=%s' % (login, str(groups))) users.add(login, login, login, groups) profile = profiles[login] = create_content(IProfile, firstname=firstname, lastname=lastname, email=email, ) to_profile_active(profile) create_user_mboxes(profile) def noop_post_app_setup(site): log.info('no post app setup required.') return root post_app_setup_hook = post_app_setup or noop_post_app_setup post_app_setup_hook(site) bootstrap_evolution(root) # Static pages. bootstrap_static_pages(site) site['reset_password'] = Folder()