permission_flags = [
'READ_DATA', 'WRITE_DATA', 'MANAGE_RECORDS', 'MANAGE_ROLES',
'MANAGE_CLUSTER', 'MANAGE_DATASHEETS', 'MANAGE_FIELDS',
'MANAGE_CONSTRAINTS',
'KICK_MEMBERS', 'MANAGE_MEMBERS',
]
default_perm_flags = ['READ_DATA', 'WRITE_DATA', 'MANAGE_RECORDS']
def __str__(self):
return self.name
objects = managers.RolesManager()
positions = managers.PositionalManager()
permissions = BitField(flags=permission_flags,
default=default_perm_flags, db_index=True)
position = models.PositiveSmallIntegerField(null=True, blank=True,
db_index=True, editable=True)
name = models.CharField(max_length=100,
validators=[MinLengthValidator(2)], db_index=True, default='new role')
color = ColorField(db_index=True, default='#969696')
is_default = models.BooleanField(default=False, db_index=True)
cluster = models.ForeignKey('api_backend.Cluster',
on_delete=models.CASCADE, editable=False)
REQUIRED_FIELDS = [name, cluster]
}}}
Basically I want to ensure that a role with `is_default` set to True
should always have a position of 1 and name of '@everyone' and a color of
'#969696'
However, I am able to edit the model through serializers for the same, and
the name changes to something other than '@everyone'. No errors are
raised. Same with the position.
The constraint isnt enforced for updates or bulkupdates, too.
--
Ticket URL: <https://code.djangoproject.com/ticket/32337>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* status: new => closed
* resolution: => fixed
* stage: Unreviewed => Accepted
Comment:
The problem was that the table was altered when there was existing data in
the database and the constraint was added. I cleared my database and now,
the constraint works properly.
--
Ticket URL: <https://code.djangoproject.com/ticket/32337#comment:1>
* resolution: fixed => invalid
--
Ticket URL: <https://code.djangoproject.com/ticket/32337#comment:2>
* stage: Accepted => Unreviewed
--
Ticket URL: <https://code.djangoproject.com/ticket/32337#comment:3>