コード例 #1
0
ファイル: autofixtures.py プロジェクト: prasannakalan/galaxy
 class UserAutoFixture(AutoFixture):
     field_values = {
         'full_name': FullNameGenerator(),
         'username': UserNameGenerator(),
         'email': generators.EmailGenerator(),
         'password': generators.StaticGenerator('password'),
         'is_superuser': False,
         'is_staff': WeightedRandomBoolGenerator(percent_chance=3),
         'is_active': True,
     }
     follow_fk = False
     follow_m2m = False
コード例 #2
0
    def handle(self, *args, **options):

        # 1. Users
        AutoFixture(
            User,
            field_values={
                # Generates random birth dates between 7-77 yo
                'birth_date':
                generators.DateGenerator(
                    min_date=dt.date.today() - dt.timedelta(365 * 77),
                    max_date=dt.date.today() - dt.timedelta(365 * 7)),
                # We are a young company so just set join_date to 1-2 years
                'date_joined':
                generators.DateGenerator(
                    min_date=dt.date.today() - dt.timedelta(365 * 2),
                    max_date=dt.date.today() - dt.timedelta(365 * 1)),
                'email':
                generators.EmailGenerator(),
                'first_name':
                generators.FirstNameGenerator(),
                'img':
                generators.ImageGenerator(height=200, width=200,
                                          path='users/'),
                'last_name':
                generators.LastNameGenerator(),
                'oauth_id':
                generators.PositiveIntegerGenerator()
            }).create(10)

        # 2. Items
        AutoFixture(Item,
                    field_values={
                        'name':
                        ItemNameGenerator(),
                        'img':
                        generators.ImageGenerator(height=200,
                                                  width=200,
                                                  path='items/')
                    }).create(80)
コード例 #3
0
ファイル: base.py プロジェクト: zodman/django-autofixture
    def get_generator(self, field):
        '''
        Return a value generator based on the field instance that is passed to
        this method. This function may return ``None`` which means that the
        specified field will be ignored (e.g. if no matching generator was
        found).
        '''
        if isinstance(field, fields.AutoField):
            return None
        if self.is_inheritance_parent(field):
            return None
        if (
            field.default is not fields.NOT_PROVIDED and
            not self.overwrite_defaults and
            field.name not in self.field_values):
                return None
        kwargs = {}

        if field.name in self.field_values:
            value = self.field_values[field.name]
            if isinstance(value, generators.Generator):
                return value
            elif isinstance(value, AutoFixture):
                return generators.InstanceGenerator(autofixture=value)
            elif callable(value):
                return generators.CallableGenerator(value=value)
            return generators.StaticGenerator(value=value)

        if field.null:
            kwargs['empty_p'] = self.none_p
        if field.choices:
            return generators.ChoicesGenerator(choices=field.choices, **kwargs)
        if isinstance(field, related.ForeignKey):
            # if generate_fk is set, follow_fk is ignored.
            is_self_fk = (get_remote_field_to(field)().__class__ == self.model)
            if field.name in self.generate_fk and not is_self_fk:
                return generators.InstanceGenerator(
                    autofixture.get(
                        get_remote_field_to(field),
                        follow_fk=self.follow_fk.get_deep_links(field.name),
                        generate_fk=self.generate_fk.get_deep_links(field.name)),
                    limit_choices_to=get_remote_field(field).limit_choices_to)
            if field.name in self.follow_fk:
                selected = generators.InstanceSelector(
                    get_remote_field_to(field),
                    limit_choices_to=get_remote_field(field).limit_choices_to)
                if selected.get_value() is not None:
                    return selected
            if field.blank or field.null:
                return generators.NoneGenerator()
            if is_self_fk and not field.null:
                raise CreateInstanceError(
                    u'Cannot resolve self referencing field "%s" to "%s" without null=True' % (
                        field.name,
                        '%s.%s' % (
                            get_remote_field_to(field)._meta.app_label,
                            get_remote_field_to(field)._meta.object_name,
                        )
                ))
            raise CreateInstanceError(
                u'Cannot resolve ForeignKey "%s" to "%s". Provide either '
                u'"follow_fk" or "generate_fk" parameters.' % (
                    field.name,
                    '%s.%s' % (
                        get_remote_field_to(field)._meta.app_label,
                        get_remote_field_to(field)._meta.object_name,
                    )
            ))
        if isinstance(field, related.ManyToManyField):
            if field.name in self.generate_m2m:
                min_count, max_count = self.generate_m2m[field.name]
                return generators.MultipleInstanceGenerator(
                    autofixture.get(get_remote_field_to(field)),
                    limit_choices_to=get_remote_field(field).limit_choices_to,
                    min_count=min_count,
                    max_count=max_count,
                    **kwargs)
            if field.name in self.follow_m2m:
                min_count, max_count = self.follow_m2m[field.name]
                return generators.InstanceSelector(
                    get_remote_field_to(field),
                    limit_choices_to=get_remote_field(field).limit_choices_to,
                    min_count=min_count,
                    max_count=max_count,
                    **kwargs)
            if field.blank or field.null:
                return generators.StaticGenerator([])
            raise CreateInstanceError(
                u'Cannot assign instances of "%s" to ManyToManyField "%s". '
                u'Provide either "follow_m2m" or "generate_m2m" argument.' % (
                    '%s.%s' % (
                        get_remote_field_to(field)._meta.app_label,
                        get_remote_field_to(field)._meta.object_name,
                    ),
                    field.name,
            ))
        if isinstance(field, fields.FilePathField):
            return generators.FilePathGenerator(
                path=field.path, match=field.match, recursive=field.recursive,
                max_length=field.max_length, **kwargs)
        if isinstance(field, fields.CharField):
            if isinstance(field, fields.SlugField):
                generator = generators.SlugGenerator
            elif isinstance(field, fields.EmailField):
                return generators.EmailGenerator(
                    max_length=min(field.max_length, 30))
            elif isinstance(field, fields.URLField):
                return generators.URLGenerator(
                    max_length=min(field.max_length, 25))
            elif field.max_length > 15:
                return generators.LoremSentenceGenerator(
                    common=False,
                    max_length=field.max_length)
            else:
                generator = generators.StringGenerator
            return generator(max_length=field.max_length)
        if isinstance(field, fields.DecimalField):
            return generators.DecimalGenerator(
                decimal_places=field.decimal_places,
                max_digits=field.max_digits)
        if hasattr(fields, 'BigIntegerField'):
            if isinstance(field, fields.BigIntegerField):
                return generators.IntegerGenerator(
                    min_value=-field.MAX_BIGINT - 1,
                    max_value=field.MAX_BIGINT,
                    **kwargs)
        if isinstance(field, ImageField):
            return generators.ImageGenerator(storage=field.storage, **kwargs)
        for field_class, generator in self.field_to_generator.items():
            if isinstance(field, field_class):
                return generator(**kwargs)
        return None
コード例 #4
0
 def test_email_with_static_domain(self):
     generate = generators.EmailGenerator(static_domain='djangoproject.com')
     email = generate()
     self.assertTrue(email.endswith('djangoproject.com'))
     email = generate()
     self.assertTrue(email.endswith('djangoproject.com'))
コード例 #5
0
 def test_email(self):
     generate = generators.EmailGenerator()
     form = EmailForm({'email': generate()})
     self.assertTrue(form.is_valid())
コード例 #6
0
    def handle(self, *args, **options):

        fixture = AutoFixture(User,
                              field_values={
                                  'username':
                                  generators.StringGenerator(max_length=10),
                                  'first_name':
                                  generators.FirstNameGenerator(),
                                  'last_name':
                                  generators.LastNameGenerator(),
                                  'email':
                                  generators.EmailGenerator(),
                                  'password':
                                  UNUSABLE_PASSWORD
                              })
        entries = fixture.create(50)

        for us in User.objects.all():
            if us.username != 'alberto':
                us.set_password('pass')
                us.save()

        fixture = AutoFixture(
            auction,
            field_values={
                'min_price':
                generators.PositiveSmallIntegerGenerator(max_value=1000),
                'lock':
                False
            })
        entries = fixture.create(50)

        fixture = AutoFixture(bid,
                              field_values={
                                  'amount':
                                  generators.IntegerGenerator(min_value=0),
                                  'status':
                                  'W'
                              })
        entries = fixture.create(20)

        auct = auction.objects.all()
        for auc in auct:
            if (auc.deadline > timezone.make_aware(
                    datetime.now(), timezone.get_default_timezone())):
                auc.lifecycle = 'A'
                auc.save()
            if (auc.deadline < timezone.make_aware(
                    datetime.now(), timezone.get_default_timezone())
                    and auc.lifecycle == 'A'):
                auc.lifecycle = 'D'
                auc.save()

        bids = bid.objects.all()
        for b in bids:
            for a in bids:
                if (b.auct == a.auct and a != b):
                    if (b.status == 'W' and a.status == 'W'):
                        if (b.amount > a.amount):
                            a.status = 'L'
                            a.save()
                        else:
                            b.status = 'L'
                            b.save()
            if (b.amount < b.auct.min_price):
                b.amount = b.auct.min_price + 1
                b.save()
            if (b.user == b.auct.seller):
                b.delete()
コード例 #7
0
ファイル: loaddummydata.py プロジェクト: kaziplus/kazkaz
    'Abbie', 'Anna', 'Alice', 'Beth', 'Carrie', 'Christina', 'Danielle',
    'Emma', 'Emily', 'Esther', 'Felicia', 'Grace', 'Gloria', 'Helen', 'Irene',
    'Joanne', 'Joyce', 'Jessica', 'Kathy', 'Katie', 'Kelly', 'Linda', 'Lydia',
    'Mandy', 'Mary', 'Olivia', 'Priscilla', 'Rebecca', 'Rachel', 'Susan',
    'Sarah', 'Stacey', 'Vivian'
]
SURNAMES = [
    'Smith', 'Walker', 'Conroy', 'Stevens', 'Jones', 'Armstrong', 'Johnson',
    'White', 'Stone', 'Strong', 'Olson', 'Lee', 'Forrest', 'Baker', 'Portman',
    'Davis', 'Clark', 'Brown', 'Roberts', 'Ellis', 'Jackson', 'Marshall',
    'Wang', 'Chen', 'Chou', 'Tang', 'Huang', 'Liu', 'Shih', 'Su', 'Song',
    'Yang', 'Chan', 'Tsai', 'Wong', 'Hsu', 'Cheng', 'Chang', 'Wu', 'Lin', 'Yu',
    'Yao', 'Kang', 'Park', 'Kim', 'Choi', 'Ahn', 'Mujuni'
]
PASSWORD = '******'
EMAIL_GENERATOR = generators.EmailGenerator()
RECRUITERS = [('Smith', 'Abraham'), ('Walker', 'Adam'), ('Conroy', 'Anthony'),
              ('Stevens', 'Brian')]
COMPANIES = [
    'Giggler', 'Microhard', 'Headpage', 'Chatsnap', 'Bookface', 'Boxdrop'
]


def generate_title():
    return ' '.join((random.choice(SKILLS), random.choice(TITLES)))


def save_model(model):
    try:
        with transaction.atomic():
            model.save()