Skip to content

Instantly share code, notes, and snippets.

@robinedwards
Created December 6, 2012 16:44
Show Gist options
  • Save robinedwards/4225936 to your computer and use it in GitHub Desktop.
Save robinedwards/4225936 to your computer and use it in GitHub Desktop.
from .. import RelationshipTo, StructuredNode, StringProperty
from .core import NodeIndexManager
class Language(StructuredNode):
code = StringProperty(unique_index=True)
name = StringProperty()
class LocalisedIndex(NodeIndexManager):
""" Only return results in current language """
def _execute(self, query):
code = translation.get_language().replace('-', '_')
language = Language.index.get(code=code)
query = """
START lang = node({self}),
lnode = node:%s({query})
MATCH (lnode)-[:LANGUAGE]->(lang)
RETURN lnode
""" % (self.__class__.__name__) # set index name
result = language.cypher(query, {'query': query})
return result[0][0] if result else []
class Multilingual(object):
languages = RelationshipTo("Language", "LANGUAGE")
index = LocalisedIndex()
def __init__(self, *args, **kwargs):
try:
super(Multilingual, self).__init__(*args, **kwargs)
except TypeError:
super(Multilingual, self).__init__()
def attach_language(self, lang):
self.languages.connect(lang)
def detach_language(self, lang):
self.languages.disconnect(lang)
def has_language(self, lang):
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment