Пример #1
0
    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)
Пример #2
0
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)
Пример #3
0
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()