forms.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. #coding: utf-8
  2. from django import forms
  3. from widgets import UEditorWidget
  4. from DjangoUeditor.models import UEditorField as ModelUEditorField
  5. class UEditorField(forms.CharField):
  6. def __init__(self,label,width=600, height=300, toolbars="full",imagePath="", filePath="",upload_settings={},settings={},command=None ,event_handler=None,*args,**kwargs):
  7. uSettings=locals().copy()
  8. del uSettings["self"],uSettings["label"],uSettings["args"],uSettings["kwargs"]
  9. kwargs["widget"]=UEditorWidget(attrs=uSettings)
  10. kwargs["label"]=label
  11. super(UEditorField,self).__init__( *args, **kwargs)
  12. def UpdateUploadPath(model_form,model_inst=None):
  13. """ 遍历model字段,如果是UEditorField则需要重新计算路径 """
  14. if model_inst is not None:
  15. try:
  16. for field in model_inst._meta.fields:
  17. if isinstance(field, ModelUEditorField):
  18. model_form.__getitem__(field.name).field.widget.recalc_path(model_inst)
  19. except:
  20. pass
  21. class UEditorModelForm(forms.ModelForm):
  22. def __init__(self,*args,**kwargs):
  23. super(UEditorModelForm,self).__init__(*args,**kwargs)
  24. try:
  25. if kwargs.has_key("instance"):
  26. UpdateUploadPath(self,kwargs["instance"])
  27. else:
  28. UpdateUploadPath(self,None)
  29. except Exception:
  30. pass