options init
This commit is contained in:
SDE
2023-11-29 20:18:22 +03:00
parent f7e032a5bc
commit 2b6bbba265
9 changed files with 151 additions and 316 deletions

View File

@@ -149,7 +149,7 @@ class Admin_UserPage(Admin_Trans_BaseModelViewPage):
if request.user.is_superuser: if request.user.is_superuser:
return True return True
if obj and obj.url in ('for-partners', 'dealers', 'about-truenergy', 'contacts'): if obj and obj.url in ('for-partners', 'dealers', 'contacts'):
return False return False
return True return True

View File

@@ -18,7 +18,7 @@ from django.utils.translation import gettext_lazy as _
def get_flat_pages_links_Dict(site): def get_flat_pages_links_Dict(site):
flat_pages_links = UserPageModel.objects.filter( flat_pages_links = UserPageModel.objects.filter(
url__in=('about-truenergy', 'for-partners', 'contacts'), url__in=('for-partners', 'contacts'),
sites=site sites=site
).values_list('url', flat=True) ).values_list('url', flat=True)

View File

@@ -205,7 +205,7 @@ def create_temporary_user():
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
user_id = str(uuid1().hex)[:10] user_id = str(uuid1().hex)[:10]
user_name = u'user'+user_id user_name = u'user'+user_id
mail = user_id+u'@truenergy.by' mail = user_id+u'@domain'
user = User.objects.create_user(mail, mail,user_id) user = User.objects.create_user(mail, mail,user_id)
user.first_name = _(u'незарег. пользователь') user.first_name = _(u'незарег. пользователь')
user.last_name = u'' user.last_name = u''

View File

@@ -241,49 +241,7 @@ def sendMail(subject, text_content, from_email, to, html_content):
return u'Accept' return u'Accept'
# def techSendMail_for_top_management(html_content, title=None):
# try:
#
# # if not prod_server:
# # msg = '{0}. Not sended because is local'.format(html_content)
# # print(msg)
# # return msg
# from AuthApp.models import User
# from django.db.models import Q
#
# # to = ['web@syncsystems.net']
# to = User.objects.filter(
# Q(is_superuser=True) | Q(groups__name__in=[
# 'Отдел продаж: Начальник отдела продаж', 'Управляющий',
# 'Бухгалтерия: Главный бухгалтер'
# ]),
# is_active=True,
# is_staff=True
# ).values_list('email', flat=True)
# to = list(to)
# to.append('office@truenergy.by')
#
# print('techSendMail_for_top_management')
# if title:
# subject = title
# else:
# subject = u'truEnergy Data техническое оповещение'
# from_email = 'support@truenergy.by'
#
# res = admin_send_mail_by_SMTPlib(subject, from_email, to, html_content)
#
# # msg = EmailMultiAlternatives(subject, text_content, from_email, to)
# # msg.attach_alternative(html_content, "text/html")
# # msg.send()
# print(res)
# return u'Accept'
#
# except Exception as e:
# msg = 'techSendMail_for_top_management error={0}'.format(str(e))
# techSendMail(msg)
# print(msg)
#
# return 'Fail'
def techSendMail_for_specified_email_list(html_content, email_list, title=None): def techSendMail_for_specified_email_list(html_content, email_list, title=None):

View File

@@ -8,7 +8,7 @@ def get_ld_search(domain):
data = { data = {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "WebSite", "@type": "WebSite",
"url": domain, #"https://truenergy.by/", "url": domain,
"potentialAction": { "potentialAction": {
"@type": "SearchAction", "@type": "SearchAction",
"target": { "target": {

View File

@@ -1,258 +1,75 @@
from BaseModels.inter import cut_to_number_w_point from BaseModels.inter import cut_to_number_w_point
def generate_seotext_by_properties(product_data_Dict): # def generate_seotext_by_properties(product_data_Dict):
#
power_txt = '' # power_txt = ''
ip_txt = '' # ip_txt = ''
lm_txt = '' # lm_txt = ''
temp_txt = '' # temp_txt = ''
install_txt = '' # install_txt = ''
diametr_txt = '' # diametr_txt = ''
#
try: # try:
#
if 'diameter' in product_data_Dict: #
val = int(product_data_Dict['diameter']) #
else: # except Exception as e:
val = int(product_data_Dict['width']) # pass
#
diametr_txt = '{0} truEnergy {1} серии {2}.<br>'.format( # # ---------
product_data_Dict['product_type']['name'].upper(), # for property in product_data_Dict['properties_w_values_filtred']:
product_data_Dict['article'], #
product_data_Dict['product_series']['name'].upper() # # ------
) #
# try:
# if product_data_Dict['product_type']['name'] == 'Светильник светодиодный': #
# #
# if val < 100: # except Exception as e:
# diametr_txt = '{0} truEnergy {1} серии {2} - это хорошее решение для дома.<br>'.format( # pass
# product_data_Dict['product_type']['name'].upper(), #
# product_data_Dict['article'], # # ------
# product_data_Dict['product_series']['name'].upper() #
# ) # try:
# #
# elif val < 150: #
# diametr_txt = '{0} truEnergy {1} серии {2} отлично подойдет для освещения вашей квартиры, дома или офиса.<br>'.format( #
# product_data_Dict['product_type']['name'].upper(), # except Exception as e:
# product_data_Dict['article'], # pass
# product_data_Dict['product_series']['name'].upper() #
# ) # # -------
# #
# else: # try:
# diametr_txt = '{0} truEnergy {1} серии {2} - это энергоэффективное освещение для различных площадей и объектов.<br>'.format( #
# product_data_Dict['product_type']['name'].upper(), #
# product_data_Dict['article'], #
# product_data_Dict['product_series']['name'].upper() # except Exception as e:
# ) # pass
# # не светильник #
# else: # # -------
# diametr_txt = '{0} truEnergy {1} серии {2} - это энергоэффективное решение для освещения различных пространств.<br>'.format( #
# product_data_Dict['product_type']['name'].upper(), # try:
# product_data_Dict['article'], #
# product_data_Dict['product_series']['name'].upper() #
# ) # except Exception as e:
except Exception as e: # pass
pass #
# # -------
# --------- #
for property in product_data_Dict['properties_w_values_filtred']: # try:
#
# ------ #
#
try: # except Exception as e:
# pass
if property['property']['name'] == 'Мощность': #
power = int(property['property_value']) # product_data_Dict['seo_text'] = '{0}{1}{2}{3}{4}{5}'.format(
# diametr_txt,
if power < 7: # power_txt,
power_txt = 'Обладая низким энергопотреблением, этот {0} является заменой лампочки накаливания мощностью до 40 Ватт.<br>'.format( # lm_txt,
product_data_Dict['product_type']['name'].lower(), # ip_txt,
) # temp_txt,
# install_txt
elif power < 13: # )
power_txt = 'Энергоэффективность этого устройства позволяет использовть его в местах, ' \ #
'где ранее использовались светильники с лампами накаливания мощностью до 75 Ватт.<br>'.format( # return product_data_Dict
)
elif power < 19:
power_txt = 'Этот {0} мощностью {1} Ватт легко заменит старые лампы накаливания мощностью до 100 Ватт ' \
'или люминесцентные лампы мощностью до 40 Ватт.<br>'.format(
product_data_Dict['product_type']['name'].lower(),
str(power)
)
elif power < 37:
power_txt = 'Данная модель подходит для освещения больших пространств. ' \
'Она не только поможет решить вопрос освещения, но и существенно сэкономит бюджет, ' \
'выделенный на решение этой задачи.<br>'.format(
product_data_Dict['product_type']['name'].lower(),
)
else:
power_txt = '{0} Ватт, в данной модели обеспечивает мощный световой поток. ' \
'Это дает возможность установки одного изделия для освещения помещений с большой ' \
'площадью или открытых пространств.<br>'.format(
str(power),
product_data_Dict['product_type']['name'].lower(),
)
except Exception as e:
pass
# ------
try:
if property['property']['name'] == 'Световой поток' and product_data_Dict['article'] != '11043':
val = int(property['property_value'])
if product_data_Dict['product_type']['name'] == 'Светильник светодиодный':
lm_txt = 'Один {0} данной модели способен осветить до {1} м.кв. площади ' \
'для рабочих зон и жилых комнат, и до {2} м.кв. площади для проходных и подсобных помещений ' \
'(при стандартной высоте потолка и нормальной освещенности помещения).<br>'.format(
product_data_Dict['product_type']['name'].lower(),
str(round(val / 300,2)),
str(round(val / 120, 2)),
)
except Exception as e:
pass
# -------
try:
if property['property']['name'] == 'IP (пылевлагозащита)':
val = int(property['property_value'])
if val > 66:
ip_txt = 'Максимальная защита IP{0} способна выдержать самые сильные испытания водой. ' \
'Освещение с такой защитой используют для фонтанов и бассейнов.<br>'.format(
str(val),
)
elif val > 64:
ip_txt = 'Данный продукт имеет высокую степень пылевлагозащиты - IP{0}. В связи с этим данная модель прекрасно подходит как ' \
'для отапливаемых помещений с нормальным уровнем влажности, так и для помещений неотапливаемых, ' \
'а также для эксплуатации на улице. Устройство с данной степенью защиты не боится пыли и влаги' \
'а так же имеет защиту от струй воды со всех направлений.<br>'.format(
str(val),
)
elif val > 60:
ip_txt = 'Степень защиты IP{0} обозначает полную защиту от брызг с любых сторон и имеет полную пылинепроницаемость ' \
'(никакая пыль не может проникнуть внутрь корпуса устройства). ' \
'Светильники подходят для установки в помещении и на улице, при рабочих температурах -20 до +40 градусов.<br>'.format(
str(val),
)
elif val > 53:
ip_txt = 'У изделия с степенью защиты IP{0} снижена возможность попадания пыли внутрь корпуса ' \
'и обеспечена полная защита расположенной внутри устройстав электроники.' \
'Часто используют для рабочих помещений с повышенным содержанием пыли и влаги, а также под навесами.<br>'.format(
str(val),
product_data_Dict['product_type']['name'].lower(),
product_data_Dict['product_type']['name_plural'].lower(),
)
elif val > 40:
ip_txt = 'Могут устанавливаться в помещения с повышенным уровнем пыли.'.format(
product_data_Dict['product_type']['name'].lower(),
)
else:
ip_txt = 'IP{0} - степень защиты данной модели, в связи с этим могут устанавливаться в' \
' отапливаемые помещения с умеренным уровнем влажности.<br>'.format(
str(val),
)
except Exception as e:
pass
# -------
try:
if property['property']['name'] == 'Цветовая температура':
val = int(property['property_value'])
if val < 3001:
temp_txt = 'Теплый свет, генерируемый этой моделью способствует отдыху и расслаблению. ' \
'Он приятен для глаз. В связи с этим рекомендуется устанавливать {0} ' \
'с температурой {1}К в зоны отдыха, жилые комнаты и спальни, кафе, лаундж зоны. ' \
'Очень удачное решение для обеденных и гостинных комнат.<br>'.format(
product_data_Dict['product_type']['name_plural'].lower(),
str(val),
)
elif val < 4601:
temp_txt = 'Модель обладает нейтральным цветом свечения, который прекрасно подходит и как для жилых помещений и комнат, ' \
'так и для рабочих зон (офисов, кабинетов, производств) . ' \
'Данный свет стимулирует к работе не вызывая перенапряжения глаз и не искажая цветопередачу. ' \
'Универсальное и наиболее распространенное решение.<br>'.format(
str(val),
)
elif val < 7001:
temp_txt = 'Цветовая температура {0}К - наиболее оптимально использование в помещениях промышленного назначения, ' \
'административных зданиях, на производствах, складах, гаражах, паркингах. ' \
'Однако могут применяться и в интерьере для создания акцентов в дизайне, ' \
'либо если предпочтения потребителя отданы в пользу белого света. <br>'.format(
str(val),
)
else:
temp_txt = 'От показателя цветовой температуры зависит то, как Вы будут воспринимать предметы и другие объекты освещенные устройством. ' \
'С помощью цветовой температуры можно сделать более приятным отдых и улучшить эффективность работы. ' \
'Отниситесь внимательно к выбору устройства по этому параметру.<br>'.format(
str(val),
)
except Exception as e:
pass
# -------
try:
if property['property']['name'] == 'Тип монтажа':
val = property['property_value']
if val == 'встраиваемый':
install_txt = 'Устройство устанавливается в предварительно вырезанное в поверхности отверстие. ' \
'Этот вариант монтажа используется для подвесных и натяжных потолков, а так же для фальш-стен и ниш.'.format(
str(val),
)
elif val == 'накладной':
install_txt = 'Способ крепления - накладной. Значит эта модель может быть закреплена на любую ровную поверхность.'.format(
str(val),
)
elif val == 'встраиваемый/накладной':
install_txt = '{0} обладает возможностью монтажа как в отверстия на поверхности плоскостей, так и на любую ровную поверхность.'.format(
product_data_Dict['article'],
)
else:
pass
if 'height_visible_part' in product_data_Dict and product_data_Dict['height_visible_part']:
install_txt = install_txt + ' Высота видимой части устройства после монтажа составит {0}мм.<br>'.format(
str(round(product_data_Dict['height_visible_part']))
)
else:
install_txt = install_txt + '<br>'
except Exception as e:
pass
product_data_Dict['seo_text'] = '{0}{1}{2}{3}{4}{5}'.format(
diametr_txt,
power_txt,
lm_txt,
ip_txt,
temp_txt,
install_txt
)
return product_data_Dict

View File

@@ -80,17 +80,31 @@ admin.site.register(Block,Admin_Block)
class Admin_Option(Admin_BaseModel): class Admin_Option(Admin_BaseModel):
def get_fieldsets(self, request, obj=None): # def get_fieldsets(self, request, obj=None):
fieldsets = super(type(self), self).get_fieldsets(request, obj) # fieldsets = super(type(self), self).get_fieldsets(request, obj)
fieldsets.insert( # fieldsets.insert(
1, ('Контент', { # 1, ('Контент', {
'classes': ['wide'], # 'classes': ['wide'],
'fields': ( # 'fields': (
'opt_type', 'prefix', 'value', 'picture' # 'opt_type', 'prefix', 'value', 'picture'
) # )
#
# })
# )
# return fieldsets
})
) fieldsets = [
return fieldsets ('Контент', {
'classes': ['wide'],
'fields': (
'name', 'opt_type', 'prefix', 'value', 'picture'
)
}),
]
list_display = ['image_thumb', 'opt_type', 'name', 'prefix', 'value']
list_editable = ['value', 'prefix']
list_filter = ['opt_type']
admin.site.register(Option,Admin_Option) admin.site.register(Option,Admin_Option)

View File

@@ -1,7 +1,49 @@
from .models import * from .models import *
def init():
required_options_Dict = {
'Адрес почтового сервера': {
'name': 'Адрес почтового сервера',
'opt_type': 'mail_server_url',
},
'SMTP порт почтового сервера': {
'name': 'SMTP порт почтового сервера',
'opt_type': 'mail_server_smtp_port',
},
'email для отправки писем с сайта': {
'name': 'email для отправки писем с сайта',
'opt_type': 'sender_mail_login',
},
'Пароль для отправки писем с сайта': {
'name': 'пароль для отправки писем с сайта',
'opt_type': 'sender_mail_password',
},
'Название проекта': {
'name': 'Название проекта',
'opt_type': 'project_name',
'value': 'TWB'
},
'Адрес сайта': {
'name': 'Адрес сайта',
'opt_type': 'domain',
},
'email техподдержки': {
'name': 'email техподдержки',
'opt_type': 'support_email',
},
}
def init_options():
options = Option.objects.all() options = Option.objects.all()
option_names = options.values_list('name', flat=True) option_names = options.values_list('name', flat=True)
#
# if not 'mail_server_url': opts_for_create = []
for name, data_Dict in required_options_Dict.items():
if not name in option_names:
opt = Option(**data_Dict)
opts_for_create.append(opt)
Option.objects.bulk_create(opts_for_create)
return True

View File

@@ -39,6 +39,10 @@ def test_code(request):
def MainPage(request): def MainPage(request):
from RoutesApp.forms import RouteForm from RoutesApp.forms import RouteForm
from .init_options import init_options
init_options()
print(f'LOCALE_PATHS = {str(settings.LOCALE_PATHS)}') print(f'LOCALE_PATHS = {str(settings.LOCALE_PATHS)}')
page = StaticPage.objects.get(url='main') page = StaticPage.objects.get(url='main')