Exemple #1
0
def add_view(context, request):

    import formish
    import schemaish
    import schema

    root = context.getRoot()
    kind = request.GET['content']

    new_cls = root.get_model(kind)
    if new_cls is None:
        logging.error("""Can't find registered class for kind '%s'""" %
                      self.kind)
        raise KeyError("""Can't find registered class for kind '%s'""" %
                       self.kind)

    fake_obj = new_cls()
    structure = zope.component.getAdapter(fake_obj, schema.IStructure)
    form = formish.Form(structure, name='form')
    applyWidgets(structure, form, context, request, ignore_readonly=True)

    defaults = schema.load_defaults(fake_obj, structure)
    form.defaults = defaults
    if request.method == 'GET':
        pass
    elif request.method == 'POST':
        try:
            changes = form.validate(request)
            name = changes.pop('name')
            new_obj = root.createContent(name, kind, context, request,
                                         **changes)
            return Redirect(new_obj.absolute_url(request) + 'view')
        except formish.validation.FormError, e:
            pass
Exemple #2
0
def add_view(context, request):
        
        import formish
        import schemaish
        import schema
        
        root = context.getRoot()
        kind = request.GET['content']
        
        new_cls = root.get_model(kind)
        if new_cls is None:
            logging.error("""Can't find registered class for kind '%s'""" % self.kind)
            raise KeyError("""Can't find registered class for kind '%s'""" % self.kind)
        
        fake_obj = new_cls()
        structure = zope.component.getAdapter(fake_obj,schema.IStructure)
        form = formish.Form(structure,name='form')
        applyWidgets(structure,form,context,request,ignore_readonly=True)

        defaults = schema.load_defaults(fake_obj,structure)
        form.defaults = defaults
        if request.method == 'GET':
            pass
        elif request.method == 'POST':
            try:
                changes = form.validate(request)
                name = changes.pop('name')
                new_obj = root.createContent(name,kind,context,request,**changes)
                return Redirect(new_obj.absolute_url(request)+'view')
            except formish.validation.FormError,e:
                pass
Exemple #3
0
def edit_view(context, request):

    import formish
    import schemaish
    import schema

    structure = zope.component.getAdapter(context, schema.IStructure)
    form = formish.Form(structure, name='form')

    applyWidgets(structure, form, context, request)

    defaults = schema.load_defaults(context, structure)
    form.defaults = defaults

    if request.method == 'GET':
        pass
    elif request.method == 'POST':
        try:

            changes = form.validate(request)

            # Edit forms that don't include the a new file upload
            # end up with a schemaish.type.File which has no file
            # this causes problems later. So set it to None that
            # way the field won't get updated.
            # Need to find an alternate marker, as values deleted also
            # end up as None
            for key in changes:
                if isinstance(changes[key], schemaish.type.File):
                    if changes[key].file is None:
                        changes[key] = None

            context.applyChanges(changes)
            context.clearCache()

            return Redirect(context.absolute_url(request) + 'view')

        except formish.validation.FormError, e:
            pass
Exemple #4
0
def edit_view(context, request):
    
    import formish
    import schemaish
    import schema
    
    structure = zope.component.getAdapter(context,schema.IStructure)
    form = formish.Form(structure,name='form')
    
    applyWidgets(structure,form,context,request)

    defaults = schema.load_defaults(context,structure)
    form.defaults = defaults

    if request.method == 'GET':
        pass
    elif request.method == 'POST':
        try:

            changes = form.validate(request)
            
            # Edit forms that don't include the a new file upload
            # end up with a schemaish.type.File which has no file 
            # this causes problems later. So set it to None that
            # way the field won't get updated.
            # Need to find an alternate marker, as values deleted also 
            # end up as None
            for key in changes:
                if isinstance(changes[key],schemaish.type.File):
                    if changes[key].file is None:
                        changes[key] = None
                        
            context.applyChanges(changes)
            context.clearCache()
            
            return Redirect(context.absolute_url(request)+'view')
        
        except formish.validation.FormError,e:
            pass