from django import forms from .models import SpecialistCandidate, EvaluationRubric7D from decimal import Decimal class SpecialistCandidateForm(forms.ModelForm): hourly_rate_clp = forms.DecimalField( label="Tarifa por Hora (CLP)", required=False, widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '1000'}) ) monthly_salary_target_clp = forms.DecimalField( label="Pretensión de Renta Mensual (CLP)", required=False, widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '10000'}) ) class Meta: model = SpecialistCandidate fields = [ 'rut', 'first_name', 'last_name', 'email', 'phone', 'city', 'category_code', 'specialty_title', 'seniority', 'trl_level', 'portfolio_url', 'github_url', 'linkedin_url', 'hourly_rate_clp', 'monthly_salary_target_clp', 'availability', 'status', 'summary' ] widgets = { 'rut': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Ej: 15.678.910-2', 'pattern': r'^\d{1,2}\.\d{3}\.\d{3}-[\dkK]$', 'title': 'Formato válido: XX.XXX.XXX-X', 'required': True}), 'first_name': forms.TextInput(attrs={'class': 'form-control', 'required': True}), 'last_name': forms.TextInput(attrs={'class': 'form-control', 'required': True}), 'email': forms.EmailInput(attrs={'class': 'form-control', 'required': True}), 'phone': forms.TextInput(attrs={'class': 'form-control', 'pattern': r'^\+?[0-9]{8,15}$', 'title': 'Número de teléfono válido (ej: +56912345678)'}), 'city': forms.HiddenInput(), 'category_code': forms.Select(attrs={'class': 'form-control', 'required': True}), 'specialty_title': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Ej: Ingeniero en Control & Gemelos Digitales', 'required': True}), 'seniority': forms.Select(attrs={'class': 'form-control', 'required': True}), 'trl_level': forms.Select(attrs={'class': 'form-control', 'required': True}), 'portfolio_url': forms.URLInput(attrs={'class': 'form-control', 'placeholder': 'https://...'}), 'github_url': forms.URLInput(attrs={'class': 'form-control', 'placeholder': 'https://github.com/...'}), 'linkedin_url': forms.URLInput(attrs={'class': 'form-control', 'placeholder': 'https://linkedin.com/in/...'}), 'availability': forms.Select(attrs={'class': 'form-control', 'required': True}), 'status': forms.Select(attrs={'class': 'form-control', 'required': True}), 'summary': forms.Textarea(attrs={'class': 'form-control', 'rows': 3, 'placeholder': 'Perfil técnico, certificaciones y experiencia en proyectos I+D+i...'}), } class EvaluationRubric7DForm(forms.ModelForm): class Meta: model = EvaluationRubric7D fields = [ 'candidate', 'evaluation_date', 'dim_case_study', 'dim_portfolio', 'dim_tech_specific', 'dim_cardinal_skills', 'dim_experience', 'dim_principles_safety', 'dim_innovation_rndi', 'feedback' ] widgets = { 'candidate': forms.Select(attrs={'class': 'form-control', 'id': 'id_candidate', 'required': True}), 'evaluation_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control', 'required': True}), 'dim_case_study': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_1', 'required': True}), 'dim_portfolio': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_2', 'required': True}), 'dim_tech_specific': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_3', 'required': True}), 'dim_cardinal_skills': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_4', 'required': True}), 'dim_experience': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_5', 'required': True}), 'dim_principles_safety': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_6', 'required': True}), 'dim_innovation_rndi': forms.NumberInput(attrs={'class': 'form-control rubro-slider-input', 'min': '0', 'max': '100', 'step': '1', 'id': 'dim_7', 'required': True}), 'feedback': forms.Textarea(attrs={'class': 'form-control', 'rows': 3, 'placeholder': 'Comentarios detallados de la evaluación...'}), }