class GeneralCharacteristicsSerializer(serializers.ModelSerializer): """Сериализатор образовательной программы""" area_of_activity = ProfessionalAreaOfGeneralCharacteristicsSerializer( many=True) educational_program = EducationalProgramSerializer() group_of_general_prof_competences = GroupOfGeneralProfCompetencesInGeneralCharacteristicSerializer( many=True) group_of_key_competences = GroupOfKeyCompetencesInGeneralCharacteristicSerializer( many=True) group_of_over_prof_competences = GroupOfOverProfCompetencesInGeneralCharacteristicSerializer( many=True) group_of_pk_competences = GroupOfPkCompetencesInGeneralCharacteristicSerializer( many=True) developers = userProfileSerializer(many=True) employers_representatives = userProfileSerializer(many=True) director_of_megafaculty = userProfileSerializer() dean_of_the_faculty = userProfileSerializer() scientific_supervisor_of_the_educational_program = userProfileSerializer() class Meta: model = GeneralCharacteristics fields = [ 'id', 'area_of_activity', 'educational_program', 'group_of_pk_competences', 'group_of_over_prof_competences', 'group_of_key_competences', 'group_of_general_prof_competences', 'developers', 'employers_representatives', 'director_of_megafaculty', 'dean_of_the_faculty', 'scientific_supervisor_of_the_educational_program', 'objects_of_activity', 'kinds_of_activity', 'tasks_of_activity', 'type_of_activity', 'annotation' ]
class GeneralCharacteristicsSerializer(serializers.ModelSerializer): """Сериализатор образовательной программы""" area_of_activity = ProfessionalAreaOfGeneralCharacteristicsSerializer( many=True) educational_program = EducationalProgramSerializer() ok_competences = CompetenceForEPSerializer(many=True) kc_competences = CompetenceForEPSerializer(many=True) pk_competences = PkCompetencesInGeneralCharacteristicsSerializer( source='pkcompetencesingeneralcharacteristics_set', many=True) np_competences = CompetenceForEPSerializer(many=True) developers = userProfileSerializer(many=True) employers_representatives = userProfileSerializer(many=True) director_of_megafaculty = userProfileSerializer() dean_of_the_faculty = userProfileSerializer() scientific_supervisor_of_the_educational_program = userProfileSerializer() class Meta: model = GeneralCharacteristics fields = [ 'id', 'area_of_activity', 'educational_program', 'ok_competences', 'kc_competences', 'np_competences', 'pk_competences', 'developers', 'employers_representatives', 'director_of_megafaculty', 'dean_of_the_faculty', 'scientific_supervisor_of_the_educational_program', 'objects_of_activity', 'kinds_of_activity', 'tasks_of_activity', 'type_of_activity', 'annotation' ]
class DepartmentSerializer(serializers.ModelSerializer): """Сериализатор образовательной программы""" dean = userProfileSerializer() class Meta: model = Department fields = "__all__"
class UserStructuralUnitSerializer(serializers.ModelSerializer): """ Cериализатор работника в подразделении """ user = userProfileSerializer() class Meta: model = UserStructuralUnit fields = "__all__"
def to_representation(self, value): self.fields['work_program'] = WorkProgramShortForExperiseSerializer( many=False, read_only=True) self.fields['experts'] = userProfileSerializer(many=True, read_only=True) self.fields[ 'expertse_users_in_rpd'] = UserExpertiseForExpertiseSerializer( many=True, read_only=True) return super().to_representation(value)
class EducationalProgramSerializer(serializers.ModelSerializer): """Сериализатор образовательной программы""" manager = userProfileSerializer() academic_plan_for_ep = ImplementationAcademicPlanSerializer() class Meta: model = EducationalProgram fields = "__all__"
class IndividualImplementationAcademicPlanSerializer( serializers.ModelSerializer): """Сериализатор вывода группы профессиональных куомпетенций в общей характеристике образовтаельной программы""" implementation_of_academic_plan = ImplementationAcademicPlanSerializer() user = userProfileSerializer() class Meta: model = IndividualImplementationAcademicPlan fields = "__all__"
def to_representation(self, value): self.fields['owner'] = userProfileSerializer(many=False) # self.fields['work_program'] = WorkProgramShortForExperiseSerializer(many=True) self.fields['work_program_in_folder'] = WorkProgramInFolderSerializer( many=True) self.fields[ 'academic_plan_in_folder'] = AcademicPlanInFolderSerializer( many=True) self.fields['block_module_in_folder'] = ModuleInFolderSerializer( many=True) return super().to_representation(value)
class WorkProgramShortForExperiseSerializerWithStructUnitWithEditors( serializers.ModelSerializer): """Сериализатор рабочих программ""" structural_unit = ShortStructuralUnitSerializer(many=False) editors = userProfileSerializer(many=True) class Meta: model = WorkProgram fields = [ 'id', 'title', 'discipline_code', 'qualification', 'prerequisites', 'outcomes', 'structural_unit', 'editors' ]
class DisciplineBlockModuleDetailSerializer(serializers.ModelSerializer): change_blocks_of_work_programs_in_modules = WorkProgramChangeInDisciplineBlockModuleSerializer( many=True) descipline_block = DisciplineBlockDetailAcademicSerializer(many=False) editors = userProfileSerializer(many=True) class Meta: model = DisciplineBlockModule fields = "__all__" extra_kwargs = { 'change_blocks_of_work_programs_in_modules': { 'required': False } }
class WorkProgramSerializerForStatisticExtended(serializers.ModelSerializer): editors = userProfileSerializer(many=True) academic_plans = serializers.SerializerMethodField() structural_unit = ShortStructuralUnitSerializer(many=False) def get_academic_plans(self, instance): return AcademicPlansStatisticSerializer( instance=AcademicPlan.objects.filter( discipline_blocks_in_academic_plan__modules_in_discipline_block__change_blocks_of_work_programs_in_modules__work_program=instance.id), many=True).data class Meta: model = WorkProgram fields = ['id', 'title', "structural_unit", 'discipline_code', "editors", "academic_plans"]
class EducationalProgramSerializerWithNum(serializers.ModelSerializer): """Сериализатор образовательной программы""" manager = userProfileSerializer() academic_plan_for_ep = ImplementationAcademicPlanSerializer() can_edit = ser(read_only=True) def to_representation(self, instance): data = super().to_representation(instance) try: data["can_edit"] = self.context[ 'request'].user == instance.manager or bool( self.context['request'].user.groups.filter( name="education_plan_developer")) except KeyError: data["can_edit"] = False return data
class EducationalProgramSerializer(serializers.ModelSerializer): """Сериализатор образовательной программы""" manager = userProfileSerializer() academic_plan_for_ep = ImplementationAcademicPlanSerializer() can_edit = BooleanField(read_only=True) def to_representation(self, instance): data = super().to_representation(instance) data["can_edit"] = self.context[ 'request'].user == instance.manager or bool( self.context['request'].user.groups.filter( name="education_plan_developer")) return data class Meta: model = EducationalProgram fields = "__all__"
class WorkProgramSerializer(serializers.ModelSerializer): """Сериализатор рабочих программ""" #prerequisites = serializers.StringRelatedField(many=True) prerequisites = PrerequisitesOfWorkProgramInWorkProgramSerializer( source='prerequisitesofworkprogram_set', many=True) # outcomes = serializers.StringRelatedField(many=True) outcomes = OutcomesOfWorkProgramInWorkProgramSerializer( source='outcomesofworkprogram_set', many=True) #discipline_sections = serializers.SlugRelatedField(many=True, read_only=True, slug_field='name') discipline_sections = DisciplineSectionSerializer(many=True) discipline_certification = CertificationSerializer(many=True) bibliographic_reference = BibliographicReferenceSerializer(many=True, required=False) work_program_in_change_block = WorkProgramChangeInDisciplineBlockModuleForWPinFSSerializer( many=True) expertise_with_rpd = ShortExpertiseSerializer(many=True, read_only=True) certification_evaluation_tools = СertificationEvaluationToolForWorkProgramSerializer( many=True) editors = userProfileSerializer(many=True) structural_unit = ShortStructuralUnitSerializer() class Meta: model = WorkProgram fields = [ 'id', 'approval_date', 'authors', 'discipline_code', 'qualification', 'prerequisites', 'outcomes', 'title', 'hoursFirstSemester', 'hoursSecondSemester', 'discipline_sections', 'discipline_certification', 'bibliographic_reference', 'description', 'video', 'work_program_in_change_block', 'expertise_with_rpd', 'work_status', 'certification_evaluation_tools', 'hours', 'extra_points', 'editors', 'language', 'structural_unit', 'have_course_project', 'have_diff_pass', 'have_pass', 'have_exam', 'lecture_hours', 'practice_hours', 'lab_hours', 'srs_hours' ] def create(self, validated_data): """ Create and return a new `Snippet` instance, given the validated data. """ return WorkProgram.objects.create(**validated_data)
class WorkProgramSerializerForStatistic(serializers.ModelSerializer): editors = userProfileSerializer(many=True) class Meta: model = WorkProgram fields = ['id', 'title', 'discipline_code', "editors"]
def to_representation(self, value): self.fields['expert'] = userProfileSerializer(many=False) return super().to_representation(value)
class OnlyUserExpertiseSerializer(serializers.ModelSerializer): expert = userProfileSerializer(many=False) class Meta: model = UserExpertise fields = ['expert']
def to_representation(self, value): self.fields['expert'] = userProfileSerializer(many=False) self.fields['expertise'] = ExpertiseSerializer(many=False, read_only=True) return super().to_representation(value)
def get_experts(self, instance): experts_instances = instance.experts.filter() return userProfileSerializer(experts_instances, many=True).data