Example #1
0
def add_sample_content(site, registry):
    # Give a site sdi_title
    site.sdi_title = 'Substance D Demo'
    admin_user = site['principals']['users']['admin']
    for binder_num in range(1):
        binder = registry.content.create('Binder', 'Binder %d' % binder_num)
        binder_name = 'binder_%d' % binder_num
        site[binder_name] = binder
        for doc_num in range(1000):
            doc = registry.content.create(
                'Document', 'Document %d Binder %d' % (doc_num, binder_num),
                'The quick brown fox jumps over the lazy dog. ' * 50)
            doc.__creator__ = oid_of(admin_user)
            doc_name = 'document_%d' % doc_num
            binder[doc_name] = doc
    binder = registry.content.create('Binder', 'Ordered Binder')
    binder_name = 'ordered_binder'
    site[binder_name] = binder
    binder_order = []
    for doc_num in range(20):
        doc = registry.content.create(
            'Document', 'Document %d Binder %d' % (doc_num, binder_num),
            'The quick brown fox jumps over the lazy dog. ' * 50)
        doc.__creator__ = oid_of(admin_user)
        doc_name = 'document_%d' % doc_num
        binder[doc_name] = doc
        binder_order.append(doc_name)
    binder.set_order(binder_order, reorderable=True)
Example #2
0
def add_sample_content(site, registry):
    # Give a site sdi_title
    site.sdi_title = 'Substance D Demo'
    admin_user = site['principals']['users']['admin']
    for binder_num in range(1):
        binder = registry.content.create('Binder',
            'Binder %d' % binder_num)
        binder_name = 'binder_%d' % binder_num
        site[binder_name] = binder
        for doc_num in range(1000):
            doc = registry.content.create('Document',
                'Document %d Binder %d' % (doc_num, binder_num),
                'The quick brown fox jumps over the lazy dog. ' * 50)
            doc.__creator__ = oid_of(admin_user)
            doc_name = 'document_%d' % doc_num
            binder[doc_name] = doc
    binder = registry.content.create('Binder', 'Ordered Binder')
    binder_name = 'ordered_binder'
    site[binder_name] = binder
    binder_order = []
    for doc_num in range(20):
        doc = registry.content.create('Document',
            'Document %d Binder %d' % (doc_num, binder_num),
            'The quick brown fox jumps over the lazy dog. ' * 50)
        doc.__creator__ = oid_of(admin_user)
        doc_name = 'document_%d' % doc_num
        binder[doc_name] = doc
        binder_order.append(doc_name)
    binder.set_order(binder_order, reorderable=True)
Example #3
0
def add_sample_content(site, registry):
    # Give a site sdi_title
    site.sdi_title = 'Substance D Demo'
    admin_user = site['principals']['users']['admin']
    admin_oid = admin_user.__oid__
    oldacl = admin_user.__acl__
    newacl = []

    # disallow password changing for admin user (for demo)
    for (action, oid, permissions) in oldacl:
        if oid == admin_oid and action == 'Allow':
            if not is_nonstr_iter(permissions):
                permissions = (permissions,)
            permissions = set(permissions)
            if 'sdi.change-password' in permissions:
                permissions.remove('sdi.change-password')
                permissions = tuple(permissions)
        newacl.append((action, oid, permissions))

    if newacl != oldacl:
        admin_user.__acl__ = newacl

    site.__acl__.insert(
        0,
        ('Deny', admin_oid, ('sdi.change-password',))
        )
    site.__acl__.insert(
        0,
        ('Deny', admin_oid, ('sdi.manage-user-groups',))
        )
    
    for binder_num in range(1):
        binder = registry.content.create('Binder',
            'Binder %d' % binder_num)
        binder_name = 'binder_%d' % binder_num
        site[binder_name] = binder
        for doc_num in range(1000):
            doc = registry.content.create('Document',
                'Document %d Binder %d' % (doc_num, binder_num),
                'The quick brown fox jumps over the lazy dog. ' * 50)
            doc.__creator__ = oid_of(admin_user)
            doc_name = 'document_%d' % doc_num
            binder[doc_name] = doc
    binder = registry.content.create('Binder', 'Ordered Binder')
    binder_name = 'ordered_binder'
    site[binder_name] = binder
    binder_order = []
    for doc_num in range(20):
        doc = registry.content.create('Document',
            'Document %d Binder %d' % (doc_num, binder_num),
            'The quick brown fox jumps over the lazy dog. ' * 50)
        doc.__creator__ = oid_of(admin_user)
        doc_name = 'document_%d' % doc_num
        binder[doc_name] = doc
        binder_order.append(doc_name)
    binder.set_order(binder_order, reorderable=True)
Example #4
0
def add_sample_content(site, registry):
    # Give a site sdi_title
    site.sdi_title = 'Substance D Demo'
    admin_user = site['principals']['users']['admin']
    admin_oid = admin_user.__oid__
    oldacl = admin_user.__acl__
    newacl = []

    # disallow password changing for admin user (for demo)
    for (action, oid, permissions) in oldacl:
        if oid == admin_oid and action == 'Allow':
            if not is_nonstr_iter(permissions):
                permissions = (permissions, )
            permissions = set(permissions)
            if 'sdi.change-password' in permissions:
                permissions.remove('sdi.change-password')
                permissions = tuple(permissions)
        newacl.append((action, oid, permissions))

    if newacl != oldacl:
        admin_user.__acl__ = newacl

    site.__acl__.insert(0, ('Deny', admin_oid, ('sdi.change-password', )))
    site.__acl__.insert(0, ('Deny', admin_oid, ('sdi.manage-user-groups', )))

    for binder_num in range(1):
        binder = registry.content.create('Binder', 'Binder %d' % binder_num)
        binder_name = 'binder_%d' % binder_num
        site[binder_name] = binder
        for doc_num in range(1000):
            doc = registry.content.create(
                'Document', 'Document %d Binder %d' % (doc_num, binder_num),
                'The quick brown fox jumps over the lazy dog. ' * 50)
            doc.__creator__ = oid_of(admin_user)
            doc_name = 'document_%d' % doc_num
            binder[doc_name] = doc
    binder = registry.content.create('Binder', 'Ordered Binder')
    binder_name = 'ordered_binder'
    site[binder_name] = binder
    binder_order = []
    for doc_num in range(20):
        doc = registry.content.create(
            'Document', 'Document %d Binder %d' % (doc_num, binder_num),
            'The quick brown fox jumps over the lazy dog. ' * 50)
        doc.__creator__ = oid_of(admin_user)
        doc_name = 'document_%d' % doc_num
        binder[doc_name] = doc
        binder_order.append(doc_name)
    binder.set_order(binder_order, reorderable=True)
Example #5
0
def login(context, request):
    login_url = request.mgmt_path(request.context, 'login')
    referrer = request.url
    if login_url in referrer: # pragma: no cover
        # never use the login form itself as came_from
        referrer = request.mgmt_path(request.root)
    came_from = request.session.setdefault('came_from', referrer)
    login = ''
    password = ''
    if 'form.submitted' in request.params:
        try:
            check_csrf_token(request)
        except:
            request.session.flash('Failed login (CSRF)', 'error')
        else:
            login = request.params['login']
            password = request.params['password']
            principals = find_service(context, 'principals')
            users = principals['users']
            user = users.get(login)
            if user is not None and user.check_password(password):
                headers = remember(request, oid_of(user))
                request.session.flash('Welcome!', 'success')
                return HTTPFound(location=came_from, headers=headers)
            request.session.flash('Failed login', 'error')

    return dict(
        url=request.mgmt_path(request.root, 'login'),
        came_from=came_from,
        login=login,
        password=password,
        login_url=velruse_login_url,
        providers=request.registry.settings['substanced.login_providers']
        )
Example #6
0
 def add_success(self, appstruct):
     registry = self.request.registry
     name = appstruct.pop('name')
     document = registry.content.create('Document', **appstruct)
     document.__creator__ = oid_of(self.request.user)
     self.context[name] = document
     return HTTPFound(self.request.mgmt_path(self.context, '@@contents'))
Example #7
0
 def add_success(self, appstruct):
     registry = self.request.registry
     name = appstruct.pop('name')
     binder = registry.content.create('Binder', **appstruct)
     binder.__creator__ = oid_of(self.request.user)
     self.context[name] = binder
     return HTTPFound(self.request.mgmt_path(self.context, '@@contents'))
Example #8
0
 def add_success(self, appstruct):
     registry = self.request.registry
     name = appstruct.pop('name')
     binder = registry.content.create('Binder', **appstruct)
     binder.__creator__ = oid_of(self.request.user)
     self.context[name] = binder
     return HTTPFound(self.request.mgmt_path(self.context, '@@contents'))
Example #9
0
 def add_success(self, appstruct):
     registry = self.request.registry
     name = appstruct.pop('name')
     document = registry.content.create('Document', **appstruct)
     document.__creator__ = oid_of(self.request.user)
     self.context[name] = document
     return HTTPFound(
         self.request.mgmt_path(self.context, '@@contents'))
Example #10
0
 def test_document_repr(self):
     from substanced.util import oid_of
     inst = self._makeOne()
     obj = testing.DummyResource()
     objectmap = self._acquire(inst, '__objectmap__')
     objectmap.add(obj, (u'',))
     result = inst.document_repr(oid_of(obj))
     self.assertEqual(result, (u'',))
Example #11
0
 def test_document_repr(self):
     from substanced.util import oid_of
     inst = self._makeOne()
     obj = testing.DummyResource()
     objectmap = self._acquire(inst, '__objectmap__')
     objectmap.add(obj, (u'', ))
     result = inst.document_repr(oid_of(obj))
     self.assertEqual(result, (u'', ))
Example #12
0
    def topic_view(self):
        self.title = self.context.title

        documents = self.documents

        # TODO this is just temporary until I wire up widget
        from substanced.util import oid_of
        oid = oid_of(self.context)

        return dict(oid=oid, documents=documents)
Example #13
0
def external_login_complete(request):
    profile = request.context.profile
    email = ''
    if 'verifiedEmail' in profile:
        email = profile['verifiedEmail']
    if 'emails' in profile:
        emails = profile['emails']
        email = emails[0]['value']
    came_from = request.session.get('came_from', request.application_url)
    connection = get_connection(request)
    site_root = connection.root()['app_root']
    principals = find_service(site_root, 'principals')
    users = principals['users']
    user = [user for user in  users.values() if user.email == email]
    if not user or not email:
        return external_login_denied(request)
    headers = remember(request, oid_of(user[0]))
    request.session.flash('Welcome!', 'success')
    return HTTPFound(location=came_from, headers=headers)