from django import forms
from django.forms import inlineformset_factory
from django.utils.translation import gettext_lazy as _

from .models import (
    Author,
    EkranImages,
    CallLink,
    CallUserCategory,
    galareyaIMG,    
    Elon,
    ElonImage,
    Rector,
    RectorEducation,
    RectorExperience,
    RectorScientificStat,
    RectorSocialLink,
    News,
    NewsImage,
    BachelorCategory,
    BachelorProgram,
    MasterCategory,
    MasterProgram,
    UniversityHistory,
    UniversityAchievement,
    UniversityStructure,
    AboutUniversity,
    AboutFeature,
    UniversityValue,
    ContactMessage,
    Faculty,
    FacultyStaff,
    Department,
    DepartmentStaff,
    ResearchCenter,
    ResearchCenterStaff,
    ProjectCategory,
    Project,
    PartnerCountry,
    PartnerUniversity,
    CooperationProgram,
    ScientificStat,
    PublicationStat,
    EducationalDocument,
)

# python manage.py makemessages -l uz
# python manage.py makemessages -l ru
# python manage.py makemessages -l en
# python manage.py compilemessages


# ================= Author =================
class AuthorForm(forms.ModelForm):
    class Meta:
        model = Author
        fields = ["full_name", "position"]
        widgets = {
            "full_name": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("F.I.SH")
            }),
            "position": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("Lavozimi")
            }),
        }


# ================= Ekran Images =================
class EkranImagesForm(forms.ModelForm):
    class Meta:
        model = EkranImages
        fields = ["img"]
        widgets = {
            "img": forms.FileInput(attrs={
                "class": "form-control"
            })
        }


# ================= Call User (Aloqa hodim) =================
class CallUserForm(forms.ModelForm):
    class Meta:
        model = CallLink
        fields = [
            "link_facebook",
            "link_telegram",
            "link_instagram",
            "link_youtobe",
        ]

        widgets = {
            "name": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("F.I.SH")
            }),
            "number": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": "+998901234567"
            }),
            "mail": forms.EmailInput(attrs={
                "class": "form-control",
                "placeholder": "email"
            }),

            "link_facebook": forms.URLInput(attrs={
                "class": "form-control",
                "placeholder": "Facebook link"
            }),
            "link_telegram": forms.URLInput(attrs={
                "class": "form-control",
                "placeholder": "Telegram link"
            }),
            "link_instagram": forms.URLInput(attrs={
                "class": "form-control",
                "placeholder": "Instagram link"
            }),
            "link_youtobe": forms.URLInput(attrs={
                "class": "form-control",
                "placeholder": "YouTube link"
            }),
        }


# ================= Call Category =================
class CallUserCategoryForm(forms.ModelForm):
    class Meta:
        model = CallUserCategory
        fields = ["name", "tell", "mail"]
        widgets = {
            "name": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("Bo'lim nomi")
            }),
            "tell": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": "+998901234567"
            }),
            "mail": forms.EmailInput(attrs={
                "class": "form-control",
                "placeholder": "email"
            }),
        }


# ================= Gallery =================
class GalleryForm(forms.ModelForm):
    class Meta:
        model = galareyaIMG
        fields = ["img"]
        widgets = {
            "img": forms.FileInput(attrs={
                "class": "form-control"
            })
        }






# ================= News Main Form =================
class NewsForm(forms.ModelForm):
    class Meta:
        model = News
        fields = [
            "title_uz", "title_ru", "title_en",
            "author",
            "published_date",
            "main_image",
            "short_description_uz", "short_description_ru", "short_description_en",
            "quote_uz", "quote_ru", "quote_en",
        ]

        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control", "placeholder": _("Uzbek sarlavha")}),
            "title_ru": forms.TextInput(attrs={"class": "form-control", "placeholder": "Russian title"}),
            "title_en": forms.TextInput(attrs={"class": "form-control", "placeholder": "English title"}),
            "author": forms.Select(attrs={"class": "form-control"}),
            "published_date": forms.DateInput(attrs={"class": "form-control", "type": "date"}),
            "main_image": forms.FileInput(attrs={"class": "form-control"}),
            "short_description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3, "placeholder": "Uzbek short description"}),
            "short_description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3, "placeholder": "Russian short description"}),
            "short_description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3, "placeholder": "English short description"}),
            "quote_uz": forms.Textarea(attrs={"class": "form-control", "rows": 2, "placeholder": "Uzbek quote"}),
            "quote_ru": forms.Textarea(attrs={"class": "form-control", "rows": 2, "placeholder": "Russian quote"}),
            "quote_en": forms.Textarea(attrs={"class": "form-control", "rows": 2, "placeholder": "English quote"}),
        }


# ================= News Gallery =================
class NewsImageForm(forms.ModelForm):
    image = forms.ImageField(required=False)
    class Meta:
        model = NewsImage
        fields = ["image", "caption"]
        widgets = {
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "caption": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("Rasm izohi")
            }),
        }






# =====================================================
# Inline Formsets (Professional variant)
# =====================================================

NewsImageFormSet = inlineformset_factory(
    News,
    NewsImage,
    form=NewsImageForm,
    extra=0,
    can_delete=True
)






# =====================================================
# ELON FORMS
# =====================================================

class ElonForm(forms.ModelForm):
    class Meta:
        model = Elon
        fields = [
            "title_uz", "title_ru", "title_en",
            "author",
            "published_date",
            "main_image",
            "short_description_uz", "short_description_ru", "short_description_en",
            "content_uz", "content_ru", "content_en",
        ]

        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "author": forms.Select(attrs={"class": "form-control"}),
            "published_date": forms.DateInput(attrs={"class": "form-control", "type": "date"}),
            "main_image": forms.FileInput(attrs={"class": "form-control"}),
            "short_description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "short_description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "short_description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "content_uz": forms.Textarea(attrs={"class": "form-control", "rows": 8}),
            "content_ru": forms.Textarea(attrs={"class": "form-control", "rows": 8}),
            "content_en": forms.Textarea(attrs={"class": "form-control", "rows": 8}),
        }


class ElonImageForm(forms.ModelForm):
    image = forms.ImageField(required=False)
    class Meta:
        model = ElonImage
        fields = ["image", "caption"]
        widgets = {
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "caption": forms.TextInput(attrs={"class": "form-control"}),
        }





# Inline formsets (Elon)
ElonImageFormSet = inlineformset_factory(
    Elon,
    ElonImage,
    form=ElonImageForm,
    extra=1,
    can_delete=True
)




# =====================================================
# RECTOR FORMS
# =====================================================
from django.utils.translation import gettext_lazy as _

class RectorForm(forms.ModelForm):
    class Meta:
        model = Rector
        fields = [
            "full_name_uz", "full_name_ru", "full_name_en",
            "position_uz", "position_ru", "position_en",
            "image",
            "academic_degree_uz", "academic_degree_ru", "academic_degree_en",
            "experience_years",
            "publications_count",
            "email",
            "phone",
            "office_location_uz", "office_location_ru", "office_location_en",
            "reception_days_uz", "reception_days_ru", "reception_days_en",
            "reception_time_uz", "reception_time_ru", "reception_time_en",
            "biography_uz", "biography_ru", "biography_en",
            "is_active",
        ]

        widgets = {
            "full_name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_en": forms.TextInput(attrs={"class": "form-control"}),
            "position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "position_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "academic_degree_uz": forms.TextInput(attrs={"class": "form-control"}),
            "academic_degree_ru": forms.TextInput(attrs={"class": "form-control"}),
            "academic_degree_en": forms.TextInput(attrs={"class": "form-control"}),
            "experience_years": forms.NumberInput(attrs={"class": "form-control"}),
            "publications_count": forms.NumberInput(attrs={"class": "form-control"}),
            "email": forms.EmailInput(attrs={"class": "form-control"}),
            "phone": forms.TextInput(attrs={"class": "form-control"}),
            "office_location_uz": forms.TextInput(attrs={"class": "form-control"}),
            "office_location_ru": forms.TextInput(attrs={"class": "form-control"}),
            "office_location_en": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_en": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_en": forms.TextInput(attrs={"class": "form-control"}),
            "biography_uz": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "biography_ru": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "biography_en": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "is_active": forms.CheckboxInput(attrs={"class": "form-check-input"}),
        }


class RectorEducationForm(forms.ModelForm):
    class Meta:
        model = RectorEducation
        fields = [
            "start_year",
            "end_year",
            "degree_uz", "degree_ru", "degree_en",
            "institution_uz", "institution_ru", "institution_en",
            "specialization_uz", "specialization_ru", "specialization_en"
        ]

        widgets = {
            "start_year": forms.NumberInput(attrs={"class": "form-control"}),
            "end_year": forms.NumberInput(attrs={"class": "form-control"}),
            "degree_uz": forms.TextInput(attrs={"class": "form-control"}),
            "degree_ru": forms.TextInput(attrs={"class": "form-control"}),
            "degree_en": forms.TextInput(attrs={"class": "form-control"}),
            "institution_uz": forms.TextInput(attrs={"class": "form-control"}),
            "institution_ru": forms.TextInput(attrs={"class": "form-control"}),
            "institution_en": forms.TextInput(attrs={"class": "form-control"}),
            "specialization_uz": forms.TextInput(attrs={"class": "form-control"}),
            "specialization_ru": forms.TextInput(attrs={"class": "form-control"}),
            "specialization_en": forms.TextInput(attrs={"class": "form-control"}),
        }



class RectorExperienceForm(forms.ModelForm):
    class Meta:
        model = RectorExperience
        fields = [
            "start_year",
            "position_uz", "position_ru", "position_en",
            "organization_uz", "organization_ru", "organization_en",
            "responsibilities_uz", "responsibilities_ru", "responsibilities_en"
        ]

        widgets = {
            "start_year": forms.TextInput(attrs={"class": "form-control"}),
            "position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "position_en": forms.TextInput(attrs={"class": "form-control"}),
            "organization_uz": forms.TextInput(attrs={"class": "form-control"}),
            "organization_ru": forms.TextInput(attrs={"class": "form-control"}),
            "organization_en": forms.TextInput(attrs={"class": "form-control"}),
            "responsibilities_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "responsibilities_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "responsibilities_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
        }



class RectorScientificStatForm(forms.ModelForm):
    class Meta:
        model = RectorScientificStat
        fields = ["articles", "books", "phd_supervisions", "awards"]

        labels = {
            "articles": _("Articles"),
            "books": _("Books"),
            "phd_supervisions": _("PhD supervisions"),
            "awards": _("Awards"),
        }

        widgets = {
            "articles": forms.NumberInput(attrs={"class": "form-control"}),
            "books": forms.NumberInput(attrs={"class": "form-control"}),
            "phd_supervisions": forms.NumberInput(attrs={"class": "form-control"}),
            "awards": forms.NumberInput(attrs={"class": "form-control"}),
        }



class RectorSocialLinkForm(forms.ModelForm):
    class Meta:
        model = RectorSocialLink
        fields = ["platform", "url"]

        labels = {
            "platform": _("Platform"),
            "url": _("URL"),
        }

        widgets = {
            "platform": forms.TextInput(attrs={"class": "form-control"}),
            "url": forms.URLInput(attrs={"class": "form-control"}),
        }


# Inline formsets (Rector)
RectorEducationFormSet = inlineformset_factory(
    Rector,
    RectorEducation,
    form=RectorEducationForm,
    extra=1,
    can_delete=True
)

RectorExperienceFormSet = inlineformset_factory(
    Rector,
    RectorExperience,
    form=RectorExperienceForm,
    extra=1,
    can_delete=True
)

RectorSocialLinkFormSet = inlineformset_factory(
    Rector,
    RectorSocialLink,
    form=RectorSocialLinkForm,
    extra=1,
    can_delete=True
)





# =====================================================
# BACHELOR
# =====================================================

class BachelorCategoryForm(forms.ModelForm):
    class Meta:
        model = BachelorCategory
        fields = ["title_uz", "title_ru", "title_en", "icon", "order"]

        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "icon": forms.TextInput(attrs={"class": "form-control", "placeholder": _("laptop-code, chart-line, etc")}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



class BachelorProgramForm(forms.ModelForm):
    class Meta:
        model = BachelorProgram
        fields = ["name_uz", "name_ru", "name_en", "code", "duration", "order"]

        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "code": forms.TextInput(attrs={"class": "form-control"}),
            "duration": forms.NumberInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



BachelorProgramFormSet = inlineformset_factory(
    BachelorCategory,
    BachelorProgram,
    form=BachelorProgramForm,
    extra=1,
    can_delete=True
)


# =====================================================
# MASTER
# =====================================================

class MasterCategoryForm(forms.ModelForm):
    class Meta:
        model = MasterCategory
        fields = ["title_uz", "title_ru", "title_en", "description_uz", "description_ru", "description_en", "duration", "order"]

        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "duration": forms.NumberInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }





class MasterProgramForm(forms.ModelForm):
    class Meta:
        model = MasterProgram
        fields = ["name_uz", "name_ru", "name_en", "duration", "order"]

        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "duration": forms.NumberInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



MasterProgramFormSet = inlineformset_factory(
    MasterCategory,
    MasterProgram,
    form=MasterProgramForm,
    extra=1,
    can_delete=True
)


# =====================================================
# UNIVERSITY HISTORY
# =====================================================

class UniversityHistoryForm(forms.ModelForm):
    class Meta:
        model = UniversityHistory
        fields = ["year", "title", "description", "order"]

        labels = {
            "year": _("Year"),
            "title": _("Title"),
            "description": _("Description"),
            "order": _("Order"),
        }

        widgets = {
            "year": forms.NumberInput(attrs={"class": "form-control"}),
            "title": forms.TextInput(attrs={"class": "form-control"}),
            "description": forms.Textarea(attrs={
                "class": "form-control",
                "rows": 3
            }),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



# =====================================================
# ACHIEVEMENTS
# =====================================================

class UniversityAchievementForm(forms.ModelForm):
    class Meta:
        model = UniversityAchievement
        fields = ["title", "description", "year", "icon", "order"]

        labels = {
            "title": _("Title"),
            "description": _("Description"),
            "year": _("Year"),
            "icon": _("Icon"),
            "order": _("Order"),
        }

        widgets = {
            "title": forms.TextInput(attrs={"class": "form-control"}),
            "description": forms.TextInput(attrs={"class": "form-control"}),
            "year": forms.NumberInput(attrs={"class": "form-control"}),
            "icon": forms.TextInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



# =====================================================
# STRUCTURE
# =====================================================

from django.utils.translation import gettext_lazy as _

class UniversityStructureForm(forms.ModelForm):
    class Meta:
        model = UniversityStructure
        fields = ["title", "description", "count", "icon", "order"]

        labels = {
            "title": _("Title"),
            "description": _("Description"),
            "count": _("Count"),
            "icon": _("Icon"),
            "order": _("Order"),
        }

        widgets = {
            "title": forms.TextInput(attrs={"class": "form-control"}),
            "description": forms.TextInput(attrs={"class": "form-control"}),
            "count": forms.TextInput(attrs={"class": "form-control"}),
            "icon": forms.TextInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }


# =====================================================
# ABOUT UNIVERSITY
# =====================================================

class AboutUniversityForm(forms.ModelForm):
    class Meta:
        model = AboutUniversity
        fields = ["title", "description", "image"]

        labels = {
            "title": _("Title"),
            "description": _("Description"),
            "image": _("Image"),
        }

        widgets = {
            "title": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("University title")
            }),
            "description": forms.Textarea(attrs={
                "class": "form-control",
                "rows": 5,
                "placeholder": _("Write about the university")
            }),
            "image": forms.ClearableFileInput(attrs={
                "class": "form-control"
            }),
        }



class AboutFeatureForm(forms.ModelForm):
    class Meta:
        model = AboutFeature
        fields = ["title", "description", "icon", "order"]

        labels = {
            "title": _("Title"),
            "description": _("Description"),
            "icon": _("Icon"),
            "order": _("Order"),
        }

        widgets = {
            "title": forms.TextInput(attrs={"class": "form-control"}),
            "description": forms.TextInput(attrs={"class": "form-control"}),
            "icon": forms.TextInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }


AboutFeatureFormSet = inlineformset_factory(
    AboutUniversity,
    AboutFeature,
    form=AboutFeatureForm,
    extra=1,
    can_delete=True
)


# =====================================================
# MISSION / VISION / VALUES
# =====================================================

class UniversityValueForm(forms.ModelForm):
    class Meta:
        model = UniversityValue
        fields = ["type", "title", "description", "order"]

        labels = {
            "type": _("Type"),
            "title": _("Title"),
            "description": _("Description"),
            "order": _("Order"),
        }

        widgets = {
            "type": forms.Select(attrs={"class": "form-control"}),
            "title": forms.TextInput(attrs={"class": "form-control"}),
            "description": forms.Textarea(attrs={
                "class": "form-control",
                "rows": 3
            }),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }



# =====================================================
# CONTACT FORM (Frontend)
# =====================================================

class ContactMessageForm(forms.ModelForm):
    class Meta:
        model = ContactMessage
        fields = ["name", "phone", "email", "message"]

        labels = {
            "name": _("Name"),
            "phone": _("Phone"),
            "email": _("Email"),
            "message": _("Message"),
        }

        widgets = {
            "name": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("Your name")
            }),
            "phone": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": "+998901234567"
            }),
            "email": forms.EmailInput(attrs={
                "class": "form-control",
                "placeholder": _("Email")
            }),
            "message": forms.Textarea(attrs={
                "class": "form-control",
                "rows": 4,
                "placeholder": _("Your message")
            }),
        }



class NewsImageForm(forms.ModelForm):
    image = forms.ImageField(required=False)

    class Meta:
        model = NewsImage
        fields = ["image", "caption"]

        labels = {
            "image": _("Image"),
            "caption": _("Caption"),
        }

        widgets = {
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "caption": forms.TextInput(attrs={
                "class": "form-control",
                "placeholder": _("Image caption")
            }),
        }





# =====================================================
# FACULTY FORMS
# =====================================================

class FacultyForm(forms.ModelForm):
    class Meta:
        model = Faculty
        fields = [
            "title_uz", "title_ru", "title_en",
            "name_uz", "name_ru", "name_en",
            "image",
            "description_uz", "description_ru", "description_en",
            "content_uz", "content_ru", "content_en",
            "order"
        ]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "content_uz": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_ru": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_en": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

class FacultyStaffForm(forms.ModelForm):
    class Meta:
        model = FacultyStaff
        fields = [
            "full_name_uz", "full_name_ru", "full_name_en",
            "image",
            "position_uz", "position_ru", "position_en",
            "card_position_uz", "card_position_ru", "card_position_en",
            "is_leader",
            "reception_days_uz", "reception_days_ru", "reception_days_en",
            "reception_time_uz", "reception_time_ru", "reception_time_en",
            "phone", "email", "order"
        ]
        widgets = {
            "full_name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "position_en": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_en": forms.TextInput(attrs={"class": "form-control"}),
            "is_leader": forms.CheckboxInput(attrs={"class": "form-check-input"}),
            "reception_days_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_en": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_en": forms.TextInput(attrs={"class": "form-control"}),
            "phone": forms.TextInput(attrs={"class": "form-control"}),
            "email": forms.EmailInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

FacultyStaffFormSet = inlineformset_factory(
    Faculty,
    FacultyStaff,
    form=FacultyStaffForm,
    extra=1,
    can_delete=True
)

# =====================================================
# DEPARTMENT FORMS
# =====================================================

class DepartmentForm(forms.ModelForm):
    class Meta:
        model = Department
        fields = [
            "faculty",
            "title_uz", "title_ru", "title_en",
            "name_uz", "name_ru", "name_en",
            "image",
            "description_uz", "description_ru", "description_en",
            "content_uz", "content_ru", "content_en",
            "order"
        ]
        widgets = {
            "faculty": forms.Select(attrs={"class": "form-control"}),
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "content_uz": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_ru": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_en": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

class DepartmentStaffForm(forms.ModelForm):
    class Meta:
        model = DepartmentStaff
        fields = [
            "full_name_uz", "full_name_ru", "full_name_en",
            "image",
            "position_uz", "position_ru", "position_en",
            "card_position_uz", "card_position_ru", "card_position_en",
            "is_leader",
            "reception_days_uz", "reception_days_ru", "reception_days_en",
            "reception_time_uz", "reception_time_ru", "reception_time_en",
            "phone", "email", "order"
        ]
        widgets = {
            "full_name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "position_en": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_en": forms.TextInput(attrs={"class": "form-control"}),
            "is_leader": forms.CheckboxInput(attrs={"class": "form-check-input"}),
            "reception_days_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_en": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_en": forms.TextInput(attrs={"class": "form-control"}),
            "phone": forms.TextInput(attrs={"class": "form-control"}),
            "email": forms.EmailInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

DepartmentStaffFormSet = inlineformset_factory(
    Department,
    DepartmentStaff,
    form=DepartmentStaffForm,
    extra=1,
    can_delete=True
)

# =====================================================
# RESEARCH CENTER FORMS
# =====================================================

class ResearchCenterForm(forms.ModelForm):
    class Meta:
        model = ResearchCenter
        fields = [
            "title_uz", "title_ru", "title_en",
            "name_uz", "name_ru", "name_en",
            "image",
            "description_uz", "description_ru", "description_en",
            "content_uz", "content_ru", "content_en",
            "order"
        ]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "content_uz": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_ru": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "content_en": forms.Textarea(attrs={"class": "form-control", "rows": 6}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

class ResearchCenterStaffForm(forms.ModelForm):
    class Meta:
        model = ResearchCenterStaff
        fields = [
            "full_name_uz", "full_name_ru", "full_name_en",
            "image",
            "position_uz", "position_ru", "position_en",
            "card_position_uz", "card_position_ru", "card_position_en",
            "is_leader",
            "reception_days_uz", "reception_days_ru", "reception_days_en",
            "reception_time_uz", "reception_time_ru", "reception_time_en",
            "phone", "email", "order"
        ]
        widgets = {
            "full_name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "full_name_en": forms.TextInput(attrs={"class": "form-control"}),
            "image": forms.FileInput(attrs={"class": "form-control"}),
            "position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "position_en": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_uz": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_ru": forms.TextInput(attrs={"class": "form-control"}),
            "card_position_en": forms.TextInput(attrs={"class": "form-control"}),
            "is_leader": forms.CheckboxInput(attrs={"class": "form-check-input"}),
            "reception_days_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_days_en": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_uz": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_ru": forms.TextInput(attrs={"class": "form-control"}),
            "reception_time_en": forms.TextInput(attrs={"class": "form-control"}),
            "phone": forms.TextInput(attrs={"class": "form-control"}),
            "email": forms.EmailInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

ResearchCenterStaffFormSet = inlineformset_factory(
    ResearchCenter,
    ResearchCenterStaff,
    form=ResearchCenterStaffForm,
    extra=1,
    can_delete=True
)
# =====================================================
# SCIENTIFIC ACTIVITY FORMS
# =====================================================

class ScientificStatForm(forms.ModelForm):
    class Meta:
        model = ScientificStat
        fields = ["title_uz", "title_ru", "title_en", "value", "order"]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "value": forms.TextInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

class PublicationStatForm(forms.ModelForm):
    class Meta:
        model = PublicationStat
        fields = ["title_uz", "title_ru", "title_en", "count", "year"]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "count": forms.NumberInput(attrs={"class": "form-control"}),
            "year": forms.NumberInput(attrs={"class": "form-control"}),
        }

# =====================================================
# PROJECT FORMS
# =====================================================

class ProjectCategoryForm(forms.ModelForm):
    class Meta:
        model = ProjectCategory
        fields = ["name_uz", "name_ru", "name_en"]
        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
        }

class ProjectForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = [
            "category", "title_uz", "title_ru", "title_en",
            "description_uz", "description_ru", "description_en",
            "start_year", "end_year", "budget", "participants",
            "location_uz", "location_ru", "location_en", "progress", "is_active", "order"
        ]
        widgets = {
            "category": forms.Select(attrs={"class": "form-control"}),
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "start_year": forms.NumberInput(attrs={"class": "form-control"}),
            "end_year": forms.NumberInput(attrs={"class": "form-control"}),
            "budget": forms.NumberInput(attrs={"class": "form-control"}),
            "participants": forms.NumberInput(attrs={"class": "form-control"}),
            "location_uz": forms.TextInput(attrs={"class": "form-control"}),
            "location_ru": forms.TextInput(attrs={"class": "form-control"}),
            "location_en": forms.TextInput(attrs={"class": "form-control"}),
            "progress": forms.NumberInput(attrs={"class": "form-control"}),
            "is_active": forms.CheckboxInput(attrs={"class": "form-check-input"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

# =====================================================
# INTERNATIONAL COOPERATION FORMS
# =====================================================

class PartnerCountryForm(forms.ModelForm):
    class Meta:
        model = PartnerCountry
        fields = ["name_uz", "name_ru", "name_en", "flag", "university_count", "order"]
        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "flag": forms.FileInput(attrs={"class": "form-control"}),
            "university_count": forms.NumberInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

class PartnerUniversityForm(forms.ModelForm):
    class Meta:
        model = PartnerUniversity
        fields = ["name_uz", "name_ru", "name_en"]
        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
        }

PartnerUniversityFormSet = inlineformset_factory(
    PartnerCountry,
    PartnerUniversity,
    form=PartnerUniversityForm,
    extra=1,
    can_delete=True
)

class CooperationProgramForm(forms.ModelForm):
    class Meta:
        model = CooperationProgram
        fields = ["title_uz", "title_ru", "title_en", "description_uz", "description_ru", "description_en", "icon", "order"]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "description_uz": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_ru": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "description_en": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
            "icon": forms.TextInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }

# =====================================================
# EDUCATIONAL DOCUMENTS FORMS
# =====================================================

class EducationalDocumentForm(forms.ModelForm):
    class Meta:
        model = EducationalDocument
        fields = ["title_uz", "title_ru", "title_en", "description_uz", "description_ru", "description_en", "file", "order"]
        widgets = {
            "title_uz": forms.TextInput(attrs={"class": "form-control"}),
            "title_ru": forms.TextInput(attrs={"class": "form-control"}),
            "title_en": forms.TextInput(attrs={"class": "form-control"}),
            "description_uz": forms.TextInput(attrs={"class": "form-control"}),
            "description_ru": forms.TextInput(attrs={"class": "form-control"}),
            "description_en": forms.TextInput(attrs={"class": "form-control"}),
            "file": forms.FileInput(attrs={"class": "form-control"}),
            "order": forms.NumberInput(attrs={"class": "form-control"}),
        }
# =====================================================
# CONTACT AND GALLERY FORMS
# =====================================================

class CallLinkForm(forms.ModelForm):
    class Meta:
        model = CallLink
        fields = [
            "link_facebook_uz", "link_facebook_ru", "link_facebook_en",
            "link_telegram_uz", "link_telegram_ru", "link_telegram_en",
            "link_instagram_uz", "link_instagram_ru", "link_instagram_en",
            "link_youtobe_uz", "link_youtobe_ru", "link_youtobe_en"
        ]
        widgets = {
            "link_facebook_uz": forms.TextInput(attrs={"class": "form-control"}),
            "link_facebook_ru": forms.TextInput(attrs={"class": "form-control"}),
            "link_facebook_en": forms.TextInput(attrs={"class": "form-control"}),
            "link_telegram_uz": forms.TextInput(attrs={"class": "form-control"}),
            "link_telegram_ru": forms.TextInput(attrs={"class": "form-control"}),
            "link_telegram_en": forms.TextInput(attrs={"class": "form-control"}),
            "link_instagram_uz": forms.TextInput(attrs={"class": "form-control"}),
            "link_instagram_ru": forms.TextInput(attrs={"class": "form-control"}),
            "link_instagram_en": forms.TextInput(attrs={"class": "form-control"}),
            "link_youtobe_uz": forms.TextInput(attrs={"class": "form-control"}),
            "link_youtobe_ru": forms.TextInput(attrs={"class": "form-control"}),
            "link_youtobe_en": forms.TextInput(attrs={"class": "form-control"}),
        }

class CallUserCategoryForm(forms.ModelForm):
    class Meta:
        model = CallUserCategory
        fields = ["name_uz", "name_ru", "name_en", "rang_uz", "rang_ru", "rang_en", "tell", "mail"]
        widgets = {
            "name_uz": forms.TextInput(attrs={"class": "form-control"}),
            "name_ru": forms.TextInput(attrs={"class": "form-control"}),
            "name_en": forms.TextInput(attrs={"class": "form-control"}),
            "rang_uz": forms.TextInput(attrs={"class": "form-control"}),
            "rang_ru": forms.TextInput(attrs={"class": "form-control"}),
            "rang_en": forms.TextInput(attrs={"class": "form-control"}),
            "tell": forms.TextInput(attrs={"class": "form-control"}),
            "mail": forms.EmailInput(attrs={"class": "form-control"}),
        }

class GalleryForm(forms.ModelForm):
    class Meta:
        model = galareyaIMG
        fields = ["img"]
        widgets = {
            "img": forms.FileInput(attrs={"class": "form-control"}),
        }
