You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
# -*- coding: utf-8 -*-
|
|
from django.db import models
|
|
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
|
|
from django.utils import translation
|
|
from pymorphy.django_conf import default_morph as morph
|
|
|
|
class MetaSetting(TranslatableModel):
|
|
name = models.CharField(max_length=100, unique=True)
|
|
translations = TranslatedFields(
|
|
title = models.CharField(max_length=255, blank=True),
|
|
description = models.CharField(max_length=255, blank=True),
|
|
keywords = models.CharField(max_length=255, blank=True),
|
|
h1 = models.CharField(max_length=255, blank=True),
|
|
)
|
|
|
|
params = {'EXPONAME':{'name': 'name'},
|
|
'EXPONAME_YA':{'name': 'name', 'inflect': True},
|
|
'EXPOCOUNTRY':{'name': 'country'},
|
|
'EXPOCOUNTRY_YA':{'name': 'country', 'inflect': True},
|
|
'EXPOPLACE':{'name': 'place'},
|
|
'EXPOCITY':{'name': 'city'},
|
|
'EXPOTHEME':{'name': 'theme'},
|
|
'EXPOTAG':{'name': 'tag'},
|
|
'EXPOMONTH':{'name': 'month'},
|
|
'EXPOYEAR':{'name': 'year'},
|
|
}
|
|
|
|
def __unicode__(self):
|
|
return self.name
|
|
|
|
def generate_meta(self, obj):
|
|
"""
|
|
obj must be in current language
|
|
"""
|
|
lang = translation.get_language()
|
|
params = {'EXPONAME': getattr(obj, 'name', '')}
|
|
tr = self.translations.get(language_code=lang)
|
|
title = tr.title.format(**params)
|
|
description = tr.description.format(**params)
|
|
keywords = []#tr.keywords.format(**params)
|
|
h1 = tr.h1.format(**params)
|
|
return {'title': title, 'description': description, 'keywords': keywords, 'h1': h1}
|
|
|
|
def get_param(self, obj, field):
|
|
param = self.params.get(field)
|
|
if not param:
|
|
return ''
|
|
s = getattr(obj, param['name'], '')
|
|
if param.get('inflected'):
|
|
s = morph.inflect_ru(s, u'пр')
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|