Skip to content

Commit

Permalink
Switch hybrid to regular properties to make re-index work
Browse files Browse the repository at this point in the history
  • Loading branch information
Tschuppi81 committed Sep 13, 2023
1 parent 9aac0d0 commit 21e87ff
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 21 deletions.
4 changes: 1 addition & 3 deletions src/onegov/directory/models/directory_entry.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from sqlalchemy.ext.hybrid import hybrid_property

from onegov.core.orm import Base
from onegov.core.orm.mixins import ContentMixin
from onegov.core.orm.mixins import TimestampMixin
Expand Down Expand Up @@ -100,7 +98,7 @@ def keywords(self):
def keywords(self, value):
self._keywords = {k: '' for k in value} if value else None

@hybrid_property
@property
def text(self):
return self.directory.configuration.extract_searchable(self.values)

Expand Down
4 changes: 1 addition & 3 deletions src/onegov/feriennet/models/activity.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
from functools import cached_property

from sqlalchemy.ext.hybrid import hybrid_property

from onegov.activity import Activity, ActivityCollection, Occasion
from onegov.activity import PublicationRequestCollection
from onegov.activity.models import DAYS
Expand Down Expand Up @@ -39,7 +37,7 @@ def es_public(self):
def es_skip(self):
return self.state == 'preview'

@hybrid_property
@property
def organiser(self):
organiser = [
self.user.username,
Expand Down
6 changes: 2 additions & 4 deletions src/onegov/fsi/models/course_attendee.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from sqlalchemy.ext.hybrid import hybrid_property

from onegov.core.orm import Base
from onegov.core.orm.types import UUID, JSON
from sqlalchemy import Boolean
Expand Down Expand Up @@ -109,7 +107,7 @@ def __str__(self):
cascade='all, delete-orphan'
)

@hybrid_property
@property
def title(self):
return ' '.join((
p for p in (
Expand All @@ -133,7 +131,7 @@ def role(self):
return 'member'
return self.user.role

@hybrid_property
@property
def email(self):
"""Needs a switch for external users"""
if not self.user_id:
Expand Down
4 changes: 2 additions & 2 deletions src/onegov/fsi/models/course_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def es_public(self):
def title(self):
return str(self)

@hybrid_property
@property
def name(self):
return self.course.name

Expand All @@ -97,7 +97,7 @@ def lead(self):
f'{self.presenter_company}'
)

@hybrid_property
@property
def description(self):
return self.course.description

Expand Down
7 changes: 4 additions & 3 deletions src/onegov/search/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
from sqlalchemy.orm import deferred

from onegov.core.upgrade import UpgradeContext
from onegov.search.utils import classproperty, \
get_fts_index_localized_languages, get_fts_index_basic_languages
from onegov.search.utils import (classproperty,
get_fts_index_localized_languages,
get_fts_index_basic_languages)
from onegov.search.utils import extract_hashtags

from typing import Any, TYPE_CHECKING
Expand Down Expand Up @@ -227,7 +228,7 @@ def add_fts_column(request, model):
prop = getattr(model, prop_name)
languages = get_fts_index_basic_languages()

if prop_type in ['localized', 'localized_html']:
if prop_type.startswith('localized'):
# only for 'localized' properties we create the
# index localized
languages.extend(get_fts_index_localized_languages())
Expand Down
8 changes: 8 additions & 0 deletions src/onegov/search/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ def get_fts_index_languages():
return ['simple', 'german', 'french', 'italian', 'english']


def get_fts_index_basic_languages():
return ['simple', 'german']


def get_fts_index_localized_languages():
return ['french', 'italian', 'english']


def is_valid_index_name(name):
""" Checks if the given name is a valid elasticsearch index name.
Elasticsearch does it's own checks, but we can do it earlier and we are
Expand Down
8 changes: 3 additions & 5 deletions src/onegov/ticket/model.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from sqlalchemy.ext.hybrid import hybrid_property

from onegov.core.orm import Base
from onegov.core.orm.mixins import TimestampMixin
from onegov.core.orm.types import JSON, UUID
Expand Down Expand Up @@ -159,7 +157,7 @@ def created(cls) -> 'Column[datetime]':
'extra_localized_text': {'type': 'localized'}
}

@hybrid_property
@property
def extra_localized_text(self) -> str | None:
""" Maybe used by child-classes to return localized extra data that
should be indexed as well.
Expand All @@ -174,14 +172,14 @@ def es_suggestion(self) -> list[str]:
self.number.replace('-', '')
]

@hybrid_property
@property
def ticket_email(self) -> str | None:
if self.handler.deleted:
return self.snapshot.get('email')
else:
return self.handler.email

@hybrid_property
@property
def ticket_data(self) -> 'Sequence[str] | None':
if self.handler.deleted:
return self.snapshot.get('summary')
Expand Down
2 changes: 1 addition & 1 deletion src/onegov/user/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class User(Base, TimestampMixin, ORMSearchable):
def es_suggestion(self) -> tuple[str, str]:
return (self.realname or self.username, self.username)

@hybrid_property
@property
def userprofile(self) -> list[str]:
if not self.data:
return []
Expand Down

0 comments on commit 21e87ff

Please sign in to comment.