diff --git a/GeneralApp/admin.py b/GeneralApp/admin.py index de74866..8dc6c7f 100644 --- a/GeneralApp/admin.py +++ b/GeneralApp/admin.py @@ -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) diff --git a/GeneralApp/migrations/0019_contact_contact_data_en_contact_contact_data_ru_and_more.py b/GeneralApp/migrations/0019_contact_contact_data_en_contact_contact_data_ru_and_more.py new file mode 100644 index 0000000..24a267b --- /dev/null +++ b/GeneralApp/migrations/0019_contact_contact_data_en_contact_contact_data_ru_and_more.py @@ -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='Контакт'), + ), + ] diff --git a/GeneralApp/migrations/0020_alter_office_options_office_work_time_from_en_and_more.py b/GeneralApp/migrations/0020_alter_office_options_office_work_time_from_en_and_more.py new file mode 100644 index 0000000..b557284 --- /dev/null +++ b/GeneralApp/migrations/0020_alter_office_options_office_work_time_from_en_and_more.py @@ -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='Время работы до'), + ), + ] diff --git a/GeneralApp/models.py b/GeneralApp/models.py index bd3b7f1..bdafab8 100644 --- a/GeneralApp/models.py +++ b/GeneralApp/models.py @@ -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) diff --git a/GeneralApp/translation.py b/GeneralApp/translation.py index 5eb9549..e61a550 100644 --- a/GeneralApp/translation.py +++ b/GeneralApp/translation.py @@ -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'