Commit 6d7d3f44 authored by Florent Chehab's avatar Florent Chehab
Browse files

Migrated from standard Django model to a custom one for optmization concerns

parent e8f37050
from backend_app.utils import is_member
from django.contrib.auth.models import User
from base_app.models import User
def does_user_have_moderation_rights(user: User) -> bool:
......
from .__is_member import is_member
from django.contrib.auth.models import User
from base_app.models import User
from shared import OBJ_MODERATION_PERMISSIONS
......
from django.contrib.auth.models import User
from base_app.models import User
def is_member(group_name: str, user: User) -> bool:
......
from rest_framework.authtoken.admin import TokenAdmin
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
# Pour la génération de token dans l'administration du site.
TokenAdmin.raw_id_fields = ("user",)
# Generated by Django 2.1.7 on 2019-03-10 13:41
import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [("auth", "0009_alter_user_last_name_max_length")]
operations = [
migrations.CreateModel(
name="User",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("password", models.CharField(max_length=128, verbose_name="password")),
(
"last_login",
models.DateTimeField(
blank=True, null=True, verbose_name="last login"
),
),
(
"is_superuser",
models.BooleanField(
default=False,
help_text="Designates that this user has all permissions without explicitly assigning them.",
verbose_name="superuser status",
),
),
(
"username",
models.CharField(
error_messages={
"unique": "A user with that username already exists."
},
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
max_length=150,
unique=True,
validators=[
django.contrib.auth.validators.UnicodeUsernameValidator()
],
verbose_name="username",
),
),
(
"first_name",
models.CharField(
blank=True, max_length=30, verbose_name="first name"
),
),
(
"last_name",
models.CharField(
blank=True, max_length=150, verbose_name="last name"
),
),
(
"email",
models.EmailField(
blank=True, max_length=254, verbose_name="email address"
),
),
(
"is_staff",
models.BooleanField(
default=False,
help_text="Designates whether the user can log into this admin site.",
verbose_name="staff status",
),
),
(
"is_active",
models.BooleanField(
default=True,
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
verbose_name="active",
),
),
(
"date_joined",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="date joined"
),
),
(
"groups",
models.ManyToManyField(
blank=True,
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
related_name="user_set",
related_query_name="user",
to="auth.Group",
verbose_name="groups",
),
),
(
"user_permissions",
models.ManyToManyField(
blank=True,
help_text="Specific permissions for this user.",
related_name="user_set",
related_query_name="user",
to="auth.Permission",
verbose_name="user permissions",
),
),
],
options={
"verbose_name": "user",
"verbose_name_plural": "users",
"abstract": False,
},
managers=[("objects", django.contrib.auth.models.UserManager())],
)
]
from django.contrib.auth.models import AbstractUser
from django.utils.functional import cached_property
from typing import List
class User(AbstractUser):
@cached_property
def cached_groups(self) -> List[str]:
out = ["authenticated_user"]
for group in self.groups.all():
out.append(group.name)
return out
......@@ -60,6 +60,11 @@ if os.environ["ENV"] == "DEV":
else:
DEBUG = False
# Use a custom User model for optmization
AUTH_USER_MODEL = "base_app.User"
WEBPACK_LOADER = {
"DEFAULT": {
"BUNDLE_DIR_NAME": "base_app/bundles/",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment