def ajax_options(request, field_name, generator_slug): """ Returns option form for the specified generator and field. """ generator = get_generator_instance(generator_slug) form = get_options_form(generator, field_name) return HttpResponse(six.u(form or ''))
def generate(self, options): """ If form is valid, creates the specified number of model instances using chosen generators and options data specified for them. """ try: number_to_generate = self.cleaned_data.get('number_to_generate') objects = [] generators = {} for count in range(number_to_generate): obj = self.model() for field_name, field in self.fields.items(): if field_name != 'number_to_generate': generator_slug = self.cleaned_data.get(field_name) if not generators.get(field_name): # saving generator instance for the field, so it can be reused later generators[field_name] = get_generator_instance(generator_slug) generator = generators.get(field_name) if generator: generator.save(obj, self.model_fields.get(field_name), options.get(field_name)) objects.append(obj) for object_ in objects: object_.save() # adding m2m objects m2m_dict = getattr(object_, '_m2m', {}) for key, value in m2m_dict.items(): for item in value: getattr(object_, key).add(item) return len(objects), False except: return traceback.format_exc(), True
def get_chosen_generators(self): """ Returns tuples of field name and generator instance for it. """ for field_name, field in self.fields.items(): if field_name != 'number_to_generate': try: initial = field.choices[0][0] except IndexError: initial = None yield field_name, get_generator_instance(self.data.get(field_name, initial))
def get_chosen_generators(self): """ Returns tuples of field name and generator instance for it. """ for field_name, field in self.fields.items(): if field_name != 'number_to_generate': try: initial = field.choices[0][0] except IndexError: initial = None yield field_name, get_generator_instance( self.data.get(field_name, initial))
def generate(self, options): """ If form is valid, creates the specified number of model instances using chosen generators and options data specified for them. """ try: number_to_generate = self.cleaned_data.get('number_to_generate') objects = [] generators = {} for count in range(number_to_generate): obj = self.model() for field_name, field in self.fields.items(): if field_name != 'number_to_generate': generator_slug = self.cleaned_data.get(field_name) if not generators.get(field_name): # saving generator instance for the field, so it can be reused later generators[field_name] = get_generator_instance( generator_slug) generator = generators.get(field_name) if generator: generator.save(obj, self.model_fields.get(field_name), options.get(field_name)) objects.append(obj) for object_ in objects: object_.save() # adding m2m objects m2m_dict = getattr(object_, '_m2m', {}) for key, value in m2m_dict.items(): for item in value: getattr(object_, key).add(item) return len(objects), False except: return traceback.format_exc(), True