Example #1
0
 def build_relation(inserted):
     if related_model in inserted and inserted[related_model]:
         pk = random.choice(inserted[related_model])
         return related_model.objects.get(pk=pk)
     else:
         message = 'Field {} cannot be null'.format(field)
         raise SeederException(message)
Example #2
0
 def func(inserted):
     if related_model in inserted and inserted[related_model]:
         pk = random.choice(inserted[related_model])
         return related_model.objects.get(pk=pk)
     elif not field.null:
         message = "Field {} cannot be null".format(field)
         raise SeederException(message)
Example #3
0
        def func(inserted):
            if related_model in inserted and inserted[related_model]:
                pk = random.choice(inserted[related_model])

                if field.unique:
                    if pk in self.unique[field]:
                        while pk in self.unique[field]:
                            pk = random.choice(inserted[related_model])

                    self.unique[field].append(pk)

                for i, unq_fields in enumerate(self.unique_together):
                    if field.name in unq_fields:

                        if len(self.unique_together[unq_fields]) == 0 or \
                                all(field.name in d and len(d.keys()) == 1 for d in self.unique_together[unq_fields]) \
                                or all(len(d.keys()) == len(unq_fields) for d in self.unique_together[unq_fields]):
                            self.unique_together[unq_fields].append({field.name: pk})

                        else:
                            for j, d in enumerate(self.unique_together[unq_fields]):
                                if field.name not in d:
                                    tmp_dict = {**d, field.name: pk}

                                    while tmp_dict in self.unique_together[unq_fields]:
                                        pk = random.choice(inserted[related_model])
                                        tmp_dict[field.name] = pk

                                    self.unique_together[unq_fields][j][field.name] = pk

                return related_model.objects.get(pk=pk)
            else:
                message = 'Field {} cannot be null'.format(field)
                raise SeederException(message)
Example #4
0
 def func(inserted):
     if related_model in inserted and inserted[related_model]:
         pk = ModelSeeder.choice_unique(field, inserted[related_model])
         return related_model.objects.get(pk=pk)
     elif not field.null:
         message = 'Field {} cannot be null'.format(field)
         raise SeederException(message)
Example #5
0
 def func(inserted):
     if related_model in inserted and inserted[related_model]:
         max_relations = min(10, round(len(inserted[related_model]) / 5) + 1)
         return [
             related_model.objects.get(pk=random.choice(inserted[related_model]))
             for _ in range(random.randint(0, max_relations))
         ]
     elif not field.blank:
         message = 'Field {} cannot be null'.format(field)
         raise SeederException(message)
Example #6
0
        def func(inserted):
            if related_model in inserted and inserted[related_model]:
                unused = list(set(inserted[related_model]) - existing)
                if unused:
                    pk = random.choice(unused)
                    existing.add(pk)
                    return related_model.objects.get(pk=pk)

            if not field.null:
                message = "Field {} cannot be null".format(field)
                raise SeederException(message)
Example #7
0
    def get_connection(self):
        """
        use the first connection available
        :rtype: Connection
        """

        klass = self.entities.keys()
        if not klass:
            message = 'No classed found. Did you add entities to the Seeder?'
            raise SeederException(message)
        klass = list(klass)[0]

        return klass.objects._db
Example #8
0
    def get_connection(self):
        """
        use the first connection available
        :rtype: Connection
        """

        klasses = [order["klass"] for order in self.orders]
        if not klasses:
            message = "No classes found. Did you add entities to the Seeder?"
            raise SeederException(message)
        klass = list(klasses)[0]

        return klass.objects._db
Example #9
0
        def func(inserted):
            if related_model in inserted and inserted[related_model]:
                max_relations = min(10, round(len(inserted[related_model]) / 5) + 1)

                return_list = []
                for _ in range(random.randint(1, max_relations)):
                    choice = random.choice(inserted[related_model])
                    return_list.append(related_model.objects.get(pk=choice))

                return return_list
            elif not field.blank:
                message = 'Field {} cannot be null'.format(field)
                raise SeederException(message)
            else:
                logging.warn(
                    "Could not build many-to-many relationship for between {} and {}".format(
                        field, related_model,
                    )
                )
                return []
Example #10
0
 def format_many_to_many_field(obj, format, inserted_entities):
     if callable(format):
         format(obj, inserted_entities)
     else:
         message = "Many to many format must be callable"
         raise SeederException(message)