refactored a little, added Gin indexes to account.User model.

This commit is contained in:
Anatoly 2020-02-05 17:58:56 +03:00
parent 285f52ce30
commit 061c96d198
4 changed files with 49 additions and 2 deletions

View File

@ -0,0 +1,34 @@
# Generated by Django 2.2.7 on 2020-02-05 14:57
import django.contrib.postgres.indexes
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('account', '0035_userrole_for_team'),
]
operations = [
migrations.AddIndex(
model_name='user',
index=django.contrib.postgres.indexes.GinIndex(fields=['username'], name='account_use_usernam_20b96d_gin'),
),
migrations.AddIndex(
model_name='user',
index=django.contrib.postgres.indexes.GinIndex(fields=['first_name'], name='account_use_first_n_472c42_gin'),
),
migrations.AddIndex(
model_name='user',
index=django.contrib.postgres.indexes.GinIndex(fields=['last_name'], name='account_use_last_na_595e99_gin'),
),
migrations.AddIndex(
model_name='user',
index=django.contrib.postgres.indexes.GinIndex(fields=['email'], name='account_use_email_2f1668_gin'),
),
migrations.AddIndex(
model_name='user',
index=django.contrib.postgres.indexes.GinIndex(fields=['phone'], name='account_use_phone_9593fb_gin'),
),
]

View File

@ -5,6 +5,7 @@ from typing import List
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager
from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import TrigramSimilarity from django.contrib.postgres.search import TrigramSimilarity
from django.core.mail import send_mail from django.core.mail import send_mail
from django.db import models from django.db import models
@ -289,6 +290,13 @@ class User(PhoneModelMixin, AbstractUser):
"""Meta class.""" """Meta class."""
verbose_name = _('User') verbose_name = _('User')
verbose_name_plural = _('Users') verbose_name_plural = _('Users')
indexes = [
GinIndex(fields=['username']),
GinIndex(fields=['first_name']),
GinIndex(fields=['last_name']),
GinIndex(fields=['email']),
GinIndex(fields=['phone']),
]
def __str__(self): def __str__(self):
"""String method.""" """String method."""

View File

@ -19,7 +19,8 @@ from rest_framework.reverse import reverse
from main.models import Carousel from main.models import Carousel
from rating.models import Rating from rating.models import Rating
from utils.models import ( from utils.models import (
BaseAttributes, FavoritesMixin, GalleryMixin, HasTagsMixin, IntermediateGalleryModelMixin, ProjectBaseMixin, BaseAttributes, FavoritesMixin, GalleryMixin, HasTagsMixin, IntermediateGalleryModelMixin,
ProjectBaseMixin,
TJSONField, TranslatedFieldsMixin, TypeDefaultImageMixin, TJSONField, TranslatedFieldsMixin, TypeDefaultImageMixin,
) )
from utils.querysets import TranslationQuerysetMixin from utils.querysets import TranslationQuerysetMixin
@ -252,7 +253,7 @@ class NewsQuerySet(TranslationQuerysetMixin):
).filter(relevance__gte=0.3).order_by('-relevance') ).filter(relevance__gte=0.3).order_by('-relevance')
def available_news(self, user, country_code: str): def available_news(self, user, country_code: str):
"""Return QuerySet with news that user has an access.""" """Return QuerySet with news that user has access."""
return self.filter(site__country__code=country_code) if not user.is_superuser else self return self.filter(site__country__code=country_code) if not user.is_superuser else self

View File

@ -68,6 +68,10 @@ class Report(ProjectBaseMixin):
verbose_name = _('Report') verbose_name = _('Report')
verbose_name_plural = _('Reports') verbose_name_plural = _('Reports')
def __str__(self):
"""Implement `str` dunder method."""
return f'{self.id}: {self.get_category_display()} ({self.url})'
def get_body_email_message(self): def get_body_email_message(self):
"""Prepare the body of the email message""" """Prepare the body of the email message"""
return { return {