## $Id: batching.py 16837 2022-02-25 07:41:16Z henrik $
##
## Copyright (C) 2012 Uli Fouquet & Henrik Bettermann
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
"""Batch processing components for student objects.
"""
from kofacustom.nigeria.students.batching import NigeriaStudentProcessor
from waeup.kofa.students.batching import (
    StudentOnlinePaymentProcessor, CourseTicketProcessor)
from waeup.uniben.students.interfaces import (
    ICustomStudent,
    ICustomStudentUpdateByRegNo,
    ICustomStudentUpdateByMatricNo,
    ICustomStudentOnlinePayment,
    ICustomCourseTicketImport
    )

class CustomStudentProcessor(NigeriaStudentProcessor):
    """A batch processor for ICustomStudent objects.
    """
    iface = ICustomStudent
    iface_byregnumber = ICustomStudentUpdateByRegNo
    iface_bymatricnumber = ICustomStudentUpdateByMatricNo

class CustomStudentOnlinePaymentProcessor(StudentOnlinePaymentProcessor):
    """A batch processor for ICustomStudentOnlinePayment objects.
    """
    iface = ICustomStudentOnlinePayment

class CustomCourseTicketProcessor(CourseTicketProcessor):
    """A batch processor for ICourseTicket objects.
    """
    iface = ICustomCourseTicketImport

    @property
    def available_fields(self):
        fields = [
            'student_id','reg_number','matric_number',
            'mandatory', 'score', 'carry_over', 'automatic',
            'outstanding', 'course_category', 'level_session',
            'title', 'credits', 'passmark', 'semester', 'ticket_session',
            'unlock_score', 'grading_sys', 'previous'
            ] + self.additional_fields
        return sorted(fields)

