def document_detail_form_factory(form, document_type, document, initial=True): """ Adds document field to a form. """ for key in document_type._fields.keys(): field = document_type._fields[key] logger.debug(field.__dict__) logging.debug('help') form.fields[key] = forms.CharField(key, required=field.required, widget=get_widget(field)) if initial: form.fields[key].initial = getattr(document, key) for field_key, form_attr in CHECK_ATTRS.items(): if hasattr(field, field_key): value = getattr(field, field_key) setattr(form.fields[key], field_key, value) return form
def document_detail_form_factory(form, document_type, initial=False): """ Adds document field to a form. """ for key in document_type._fields.keys(): field = document_type._fields[key] logger.debug(field.__dict__) logging.debug('help') widget = get_widget(field) if widget is None: # ListField or EmbeddedDocumentField continue if isinstance(widget, forms.widgets.Select): form.fields[key] = forms.ChoiceField( key, required=field.required, widget=widget) else: form.fields[key] = forms.CharField( key, required=field.required, widget=widget) if initial: field_initial = getattr(initial, key) if isinstance(field_initial, Document): # probably a reference field so we add some choices # TODO - does this actually work? Need tests and test coverage!!! form.fields[key].initial = field_initial.id form.fields[key].choices = [(unicode(x.id), get_document_unicode(x)) for x in type(field_initial).objects.all()] else: form.fields[key].initial = field_initial if form.fields[key].initial is None and isinstance(field, ReferenceField): form.fields[key].choices = [(unicode(x.id), get_document_unicode(x)) for x in field.document_type.objects.all()] for field_key, form_attr in CHECK_ATTRS.items(): if hasattr(field, field_key): value = getattr(field, field_key) setattr(form.fields[key], field_key, value) # used as a handy reference field form.fields[key].mongofield = field return form
def document_detail_form_factory(form, document_type, document, initial=True): """ Adds document field to a form. """ for key in document_type._fields.keys(): field = document_type._fields[key] logger.debug(field.__dict__) logging.debug('help') form.fields[key] = forms.CharField( key, required=field.required, widget=get_widget(field)) if initial: form.fields[key].initial = getattr(document, key) for field_key, form_attr in CHECK_ATTRS.items(): if hasattr(field, field_key): value = getattr(field, field_key) setattr(form.fields[key], field_key, value) return form