0.3.0 contacts page
This commit is contained in:
@@ -223,3 +223,72 @@ class Admin_Option(Admin_Trans_BaseModel):
|
||||
list_filter = ['opt_type']
|
||||
|
||||
admin.site.register(Option,Admin_Option)
|
||||
|
||||
|
||||
|
||||
class AdminTabular_ContactModel(Admin_Trans_BaseIconTabularInline):
|
||||
|
||||
fields = [
|
||||
'name', 'contact_type', 'contact_label', 'contact_prefix', 'contact_data', 'order'
|
||||
]
|
||||
|
||||
model = Contact
|
||||
extra = 1
|
||||
|
||||
ordering = ['order','contact_type', 'contact_label']
|
||||
|
||||
|
||||
|
||||
|
||||
class Admin_Office(Admin_Trans_BaseModelViewPage):
|
||||
|
||||
fieldsets = [
|
||||
(None, {
|
||||
'classes': ['wide'],
|
||||
'fields': (
|
||||
# 'main_office',
|
||||
'city',
|
||||
'address',
|
||||
(
|
||||
'work_time_from', 'work_time_to',
|
||||
# 'workTime',
|
||||
),
|
||||
# ('legal_name', 'unp', 'legal_address', 'urInfo'),
|
||||
# 'fullContactInfo',
|
||||
# 'footer_info',
|
||||
# 'gps_longitude',
|
||||
# 'gps_latitude',
|
||||
# 'map_code'
|
||||
)
|
||||
}),
|
||||
]
|
||||
|
||||
|
||||
|
||||
save_on_top = True
|
||||
# prepopulated_fields = {"url": ("name",)}
|
||||
list_display = [
|
||||
'id', 'enable', 'order', 'city', 'address', 'work_time_from', 'work_time_to',
|
||||
# 'main_office',
|
||||
'modifiedDT', 'createDT'
|
||||
]
|
||||
list_editable = [
|
||||
'work_time_from', 'work_time_to',
|
||||
# 'main_office',
|
||||
'order'
|
||||
]
|
||||
list_display_links = ['id', 'city', 'address']
|
||||
|
||||
search_fields = ['city', 'address', 'id']
|
||||
list_filter = [
|
||||
'enable',
|
||||
# 'main_office',
|
||||
'modifiedDT', 'createDT'
|
||||
]
|
||||
|
||||
inlines = [AdminTabular_ContactModel]
|
||||
|
||||
# def has_delete_permission(self, request, obj=None):
|
||||
# return not Office.objects.all().count() < 2
|
||||
|
||||
admin.site.register(Office, Admin_Office)
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
# Generated by Django 4.2.7 on 2023-12-09 19:55
|
||||
|
||||
import ckeditor_uploader.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('GeneralApp', '0018_office_contact'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_data_en',
|
||||
field=models.CharField(max_length=50, null=True, verbose_name='Контакт'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_data_ru',
|
||||
field=models.CharField(max_length=50, null=True, verbose_name='Контакт'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_label_en',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Метка контакта'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_label_ru',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Метка контакта'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_prefix_en',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Префикс контакта'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='contact_prefix_ru',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Префикс контакта'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='name_en',
|
||||
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='contact',
|
||||
name='name_ru',
|
||||
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='FAQ_title_en',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='FAQ_title_ru',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='address_en',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Адрес'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='address_ru',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Адрес'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='city_en',
|
||||
field=models.CharField(max_length=250, null=True, verbose_name='Город'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='city_ru',
|
||||
field=models.CharField(max_length=250, null=True, verbose_name='Город'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='description_en',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='description_ru',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='name_en',
|
||||
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='name_ru',
|
||||
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_description_en',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_description_ru',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_text_en',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_text_ru',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_title_en',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='seo_title_ru',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='text_en',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='text_ru',
|
||||
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='title_en',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='Заголовок'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='title_ru',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='Заголовок'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='workTime_en',
|
||||
field=models.CharField(max_length=220, null=True, verbose_name='Комментарий к времени работы'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='workTime_ru',
|
||||
field=models.CharField(max_length=220, null=True, verbose_name='Комментарий к времени работы'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='contact',
|
||||
name='contact_data',
|
||||
field=models.CharField(max_length=50, verbose_name='Контакт'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 4.2.7 on 2023-12-09 20:09
|
||||
|
||||
import datetime
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('GeneralApp', '0019_contact_contact_data_en_contact_contact_data_ru_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='office',
|
||||
options={'ordering': ['order', 'city', 'name'], 'verbose_name': 'Офис', 'verbose_name_plural': 'Офисы'},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='work_time_from_en',
|
||||
field=models.TimeField(default=datetime.datetime(2023, 12, 9, 9, 0), null=True, verbose_name='Время работы с'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='work_time_from_ru',
|
||||
field=models.TimeField(default=datetime.datetime(2023, 12, 9, 9, 0), null=True, verbose_name='Время работы с'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='work_time_to_en',
|
||||
field=models.TimeField(default=datetime.datetime(2023, 12, 9, 18, 0), null=True, verbose_name='Время работы до'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='office',
|
||||
name='work_time_to_ru',
|
||||
field=models.TimeField(default=datetime.datetime(2023, 12, 9, 18, 0), null=True, verbose_name='Время работы до'),
|
||||
),
|
||||
]
|
||||
@@ -233,8 +233,8 @@ class Office(BaseModelViewPage):
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name=_(u'Подразделения')
|
||||
verbose_name_plural = _(u'Подразделение')
|
||||
verbose_name=_('Офис')
|
||||
verbose_name_plural = _('Офисы')
|
||||
ordering = ['order', 'city', 'name']
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ class Contact(BaseModel):
|
||||
)
|
||||
contact_label = models.CharField(max_length=50, verbose_name=_('Метка контакта'), null=True, blank=True)
|
||||
contact_prefix = models.CharField(max_length=50, verbose_name=_('Префикс контакта'), null=True, blank=True)
|
||||
contact_data = models.CharField(max_length=50, verbose_name=_('Номер телефона'))
|
||||
contact_data = models.CharField(max_length=50, verbose_name=_('Контакт'))
|
||||
office = models.ForeignKey(
|
||||
Office, verbose_name=_('Офис'), related_name='rel_contacts_for_office', on_delete=models.CASCADE)
|
||||
|
||||
|
||||
@@ -8,6 +8,22 @@ class StaticPage_TranslationOptions(TranslationOptions):
|
||||
)
|
||||
translator.register(StaticPage, StaticPage_TranslationOptions)
|
||||
|
||||
|
||||
class Office_TranslationOptions(TranslationOptions):
|
||||
fields = (
|
||||
'name', 'description', 'text', 'title', 'FAQ_title', 'seo_title', 'seo_description', 'seo_text',
|
||||
'city', 'address', 'workTime', 'work_time_from', 'work_time_to',
|
||||
)
|
||||
translator.register(Office, Office_TranslationOptions)
|
||||
|
||||
|
||||
class Contact_TranslationOptions(TranslationOptions):
|
||||
fields = (
|
||||
'name', 'contact_label', 'contact_prefix', 'contact_data',
|
||||
)
|
||||
translator.register(Contact, Contact_TranslationOptions)
|
||||
|
||||
|
||||
class Block_TranslationOptions(TranslationOptions):
|
||||
fields = (
|
||||
'name', 'description', 'text', 'title', 'FAQ_title', 'but_title'
|
||||
|
||||
Reference in New Issue
Block a user