working proof of concept

This commit is contained in:
smilerz
2021-04-09 12:46:07 -05:00
parent 913e896906
commit d71f8ae006
7 changed files with 123 additions and 12 deletions

View File

@ -5,6 +5,8 @@ from datetime import date, timedelta
from annoying.fields import AutoOneToOneField
from django.contrib import auth
from django.contrib.auth.models import Group, User
from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVectorField
from django.core.validators import MinLengthValidator
from django.db import models
from django.utils import timezone
@ -14,6 +16,7 @@ from django_scopes import ScopedManager
from recipes.settings import (COMMENT_PREF_DEFAULT, FRACTION_PREF_DEFAULT,
STICKY_NAV_PREF_DEFAULT)
from cookbook.managers import RecipeSearchManager
def get_user_name(self):
@ -382,7 +385,11 @@ class NutritionInformation(models.Model, PermissionModelMixin):
return 'Nutrition'
class Recipe(ExportModelOperationsMixin('recipe'), models.Model, PermissionModelMixin):
# TODO adjust model based on DB capabilities
# options to have multiple recipe models based on DB capability (to drive search)
# required_db_features, required-db-vendor
# https://docs.djangoproject.com/en/3.1/ref/models/options/#required-db-vendor
class Recipe(models.Model, PermissionModelMixin):
name = models.CharField(max_length=128)
description = models.CharField(max_length=512, blank=True, null=True)
servings = models.IntegerField(default=1)
@ -406,13 +413,17 @@ class Recipe(ExportModelOperationsMixin('recipe'), models.Model, PermissionModel
created_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
search_vector = SearchVectorField(null=True)
space = models.ForeignKey(Space, on_delete=models.CASCADE)
objects = ScopedManager(space='space')
objects = ScopedManager(_manager_class=RecipeSearchManager, space='space')
def __str__(self):
return self.name
class Meta():
indexes = (GinIndex(fields=["search_vector"]),)
class Comment(ExportModelOperationsMixin('comment'), models.Model, PermissionModelMixin):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)