nailgun.entity_fields

The basic components of the NailGun ORM.

Each of the fields in this module corresponds to some type of information that Satellite tracks. When paired the classes in nailgun.entity_mixins, it is possible to represent the entities that Satellite manages. For a concrete example of how this works, see nailgun.entity_mixins.Entity.

Fields are typically used declaratively in an entity’s __init__ function and are otherwise left untouched, except by the mixin methods. For example, nailgun.entity_mixins.EntityReadMixin.read() looks at the fields on an entity to determine what information it should expect the server to return.

A secondary use of fields is to generate random data. For example, you could call User.get_fields()['login'].gen_value() to generate a random login. (gen_value is implemented at StringField.gen_value()) Beware that the gen_value methods strive to produce the most outrageous values that are still legal, so they will often return nonsense UTF-8 values, which is unpleasant to work with manually.

class nailgun.entity_fields.BooleanField(required=False, choices=None, default=<object object>, unique=False)

Field that represents a boolean

gen_value()

Return a value suitable for a BooleanField.

class nailgun.entity_fields.DateField(min_date=None, max_date=None, *args, **kwargs)

Field that represents a date

gen_value()

Return a value suitable for a DateField.

class nailgun.entity_fields.DateTimeField(min_date=None, max_date=None, *args, **kwargs)

Field that represents a datetime

gen_value()

Return a value suitable for a DateTimeField.

class nailgun.entity_fields.DictField(required=False, choices=None, default=<object object>, unique=False)

Field that represents a set of key-value pairs.

gen_value()

Return a value suitable for a DictField.

class nailgun.entity_fields.EmailField(required=False, choices=None, default=<object object>, unique=False)

Field that represents an email

gen_value()

Return a value suitable for a EmailField.

class nailgun.entity_fields.Field(required=False, choices=None, default=<object object>, unique=False)

Base class to implement other fields

Record this field’s attributes.

Parameters:
  • required – A boolean. Determines whether a value must be submitted to the server when creating or updating an entity.
  • choices – A tuple of values that this field may be populated with.
  • default – Entity classes that inherit from nailgun.entity_mixins.EntityCreateMixin use this field.
class nailgun.entity_fields.FloatField(required=False, choices=None, default=<object object>, unique=False)

Field that represents a float

gen_value()

Return a value suitable for a FloatField.

class nailgun.entity_fields.IPAddressField(length=(1, 30), str_type=('utf8', ), *args, **kwargs)

Field that represents an IP address

gen_value()

Return a value suitable for a IPAddressField.

class nailgun.entity_fields.IntegerField(min_val=None, max_val=None, *args, **kwargs)

Field that represents an integer.

gen_value()

Return a value suitable for a IntegerField.

class nailgun.entity_fields.ListField(required=False, choices=None, default=<object object>, unique=False)

Field that represents a list of strings

class nailgun.entity_fields.MACAddressField(length=(1, 30), str_type=('utf8', ), *args, **kwargs)

Field that represents a MAC address

gen_value()

Return a value suitable for a MACAddressField.

class nailgun.entity_fields.NetmaskField(length=(1, 30), str_type=('utf8', ), *args, **kwargs)

Field that represents an netmask

gen_value()

Return a value suitable for a NetmaskField.

class nailgun.entity_fields.OneToManyField(entity, *args, **kwargs)

Field that represents a reference to zero or more other entities.

Parameters:entity (nailgun.entity_mixins.Entity) – The entities to which this field points.
gen_value()

Return the class that this field references.

class nailgun.entity_fields.OneToOneField(entity, *args, **kwargs)

Field that represents a reference to another entity.

All parameters not documented here are passed to Field.

Parameters:entity (nailgun.entity_mixins.Entity) – The entity to which this field points.
gen_value()

Return the class that this field references.

class nailgun.entity_fields.StringField(length=(1, 30), str_type=('utf8', ), *args, **kwargs)

Field that represents a string.

The default length of string fields is short for two reasons:

  1. Foreman’s database backend limits many fields to 255 bytes in length. As a result, length should be no longer than 85 characters long, as 85 unicode characters may be up to 255 bytes long.
  2. Humans have to read through the error messages produced by this library. Long error messages are hard to read through, and that hurts productivity. Thus, a length even shorter than 85 chars is desirable.
Parameters:
  • length – Either a (min_len, max_len) tuple or an exact_len integer.
  • str_type – The types of characters to generate when StringField.gen_value() is called. May be a single string type (e.g. 'utf8') or a tuple of string types. This argument is passed through to FauxFactory’s gen_string method, so this method accepts all string types which that method does.
gen_value()

Return a value suitable for a StringField.

class nailgun.entity_fields.URLField(length=(1, 30), str_type=('utf8', ), *args, **kwargs)

Field that represents an URL

gen_value()

Return a value suitable for a URLField.