Viewing file: func_noerror_manytomanyfield.py (1.72 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
""" Checks that Pylint does not complain about various methods on many-to-many relationships """ from django.contrib.auth.models import AbstractUser, Permission
# pylint: disable=missing-docstring from django.db import models
class Book(models.Model): name = models.CharField(max_length=100) good = models.BooleanField(default=False)
class Author(models.Model): name = models.CharField(max_length=100) wrote = models.ManyToManyField(Book, verbose_name="Book", related_name="books")
def get_good_books(self): return self.wrote.filter(good=True)
def is_author_of(self, book): return book in list(self.wrote.all())
def wrote_how_many(self): return self.wrote.count()
# Custom permissions for CustomUser USER_PERMS = ["change_customuser", "add_customuser"]
class CustomUser(AbstractUser): # pylint: disable=model-no-explicit-unicode class Meta: verbose_name = "CustomUser" verbose_name_plural = "CustomUsers" app_label = "users"
def grant_permissions(self): """Example adding permissions to User""" self.user_permissions.clear() for perm in USER_PERMS: perm = Permission.objects.get(codename=perm) self.user_permissions.add(perm) return self.user_permissions
def add_permission(self, permission): self.user_permissions.add(permission)
def remove_permission(self, permission): self.user_permissions.remove(permission)
def set_permissions(self, permissions): self.user_permissions.set(permissions)
def save(self, *args, **kwargs): """Saving while granting new permissions""" self.is_staff = True super().save() self.grant_permissions()
|