Advertisement
Guest User

Untitled

a guest
Oct 4th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. from django import forms
  2. from . import forms as forms_module
  3.  
  4.  
  5. class NoClassFormForCategory(Exception):
  6.     def __init__(self, category):
  7.         self.message = "Can't find form class for category: [{}], pk: [{}], ad_class: [{}] in forms module: [{}]" \
  8.             .format(category.name, category.pk, category.ad_class, forms_module.__name__)
  9.  
  10.  
  11. class AddAdForm:
  12.     def __init__(self, category_pk, add_contact_mixin=False):
  13.         self.category = Category.objects.get(pk=category_pk)
  14.         self.form_classes = [(getattr(forms_module, c).__name__.split('_')[1], getattr(forms_module, c))
  15.                              for c in dir(forms_module) if c.startswith('Add_')]
  16.         self.add_contact_mixin = add_contact_mixin
  17.  
  18.     def create(self, *args, **kwargs):
  19.         classes = [c[1] for c in self.form_classes if self.category.ad_class == c[0]]
  20.         if len(classes) == 0:
  21.             raise NoClassFormForCategory(self.category)
  22.         class_obj = classes[0]
  23.  
  24.         if self.add_contact_mixin:
  25.             if ContactFormMixin not in class_obj.__bases__:
  26.                 print(class_obj.__bases__)
  27.                 class_obj.__bases__ = (ContactFormMixin,) + class_obj.__bases__
  28.                 print(class_obj.__bases__)
  29.         cinst = class_obj(*args, **kwargs)
  30.         print(ci.fields)
  31.         return class_obj(*args, **kwargs)
  32.  
  33.  
  34. class ContactFormMixin(forms.Form):
  35.     contact_telephone = forms.CharField(max_length=200, label='Телефон')
  36.  
  37.  
  38. class Add_AdRealtyBuy_Form(forms.Form):
  39.     name = forms.CharField(max_length=200, label='Название realty')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement