def configure_form(self):
     form_object = FormConfiguration.objects.get(slug=self.slug)
     field_data = pickle_to_data(form_object.fields)
     form_fields = field_data["fields"][FORM_WORKFLOW[self.type]["label"]]
     self.selected_fields = form_fields.keys()
     self.extra_fields = field_data["extra_data"][FORM_WORKFLOW[self.type]["label"]]
     self.mandatory_fields = [x if y.get("mandatory", "0") == "1" else "0" for x, y in form_fields.items()]
     [self.default_form.fields[x].__setattr__("priority", y["priority"]) for x, y in form_fields.items()]
     [self.default_form.fields[x].__setattr__("group", y["group"]) for x, y in form_fields.items()]
     return render_to_response(self.template, self.__dict__, context_instance=RequestContext(self.request))
    def post_form(self):

        form_object = FormConfiguration.objects.get(slug=self.slug)
        field_dict = pickle_to_data(form_object.fields)
        args_dict = self.request.POST
        field_dict["fields"][FORM_WORKFLOW[self.type]["label"]] = self.add_option_fields(
            self.request.POST.getlist("options")
        )
        field_dict = self.get_extra_fields(field_dict)
        if self.request.POST.get("delete_fields"):
            for label in self.request.POST.getlist("delete_fields"):
                field_dict = self.delete_extra_fields(label, field_dict)
        form_object.fields = data_to_pickle(field_dict)
        form_object.save()
        return HttpResponseRedirect(reverse("configureform", args=[self.slug, self.next]))
 def get_configured_form(self, form, type, form_object, attrs_dict={}):
     """
     This function will return form with form fields and custom fields
     pass argument attrs_dict={'class':{'label1':'class1'},'onclick':{'label2':'f1'}} for adding extra attributes to field
     """
     field_list = pickle_to_data(form_object.fields)
     dict = {}
     for k, v in form.fields.iteritems():
         if k in field_list["fields"][FORM_WORKFLOW[type]["label"]]:
             v.required = field_list["fields"][FORM_WORKFLOW[type]["label"]][k]
             v.priority = field_list["fields"][FORM_WORKFLOW[type]["label"]][k]["priority"]
             dict.update({k: v})
     form.fields = dict
     dynamic_form = DynamicFormView().get_dynamic_form(field_list["extra_data"][FORM_WORKFLOW[type]["label"]])
     form.fields.update(dynamic_form.fields)
     form = self.add_form_attrs(form, attrs_dict)
     form = self.add_priority(form)
     return form