Exemplo n.º 1
0
    def __init__(self, context, request, form, retrieve_data=True,
            defaults=None):

        """ Initiate the form view. If retrieve_data is True(ish), the
        submission handler will be asked for the data. If defaults is
        given, any fields available in the defaults will be preloaded.
        """

        if not defaults:
            defaults = {}

        self.context = context
        self.request = request
        self.form = form

        # vocabs
        for method in getmembers(context, ismethod):

            if getattr(method[1], "__vocab__", False):

                Registry.register_vocab(method[0], method[1])

        if retrieve_data:
            try:
                data = self.form.submission.retrieve(form, context)
                self.form.data.update(data)
            except:
                pass

        if defaults:
            for key in defaults.keys():
                self.form.data.getField(key).value = defaults[key]