예제 #1
0
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 ''))
예제 #2
0
    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
예제 #3
0
 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))
예제 #4
0
 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))
예제 #5
0
    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