Portal Configuration

There are many places in Kofa where portal parameters can be set or page descriptions can be added. These parameters are attributes of either dedicated configuration objects or of containers in the academics, applicants or data center sections. The latter have been described elsewehere. Here we explain the interfaces of the configuration section.

Technically speaking, the portal configuration section is a container of type ConfigurationContainer with id configuration which contains session configuration subobjects:

Portal Configuration (ConfigurationContainer)
|
+--->SessionConfiguration

Much like academics, students, applicants, hostels and documents, also configuration is a unique container which is located in the IUniversity instance.

Site Settings

Site parameters are the attributes of the configuration container to be set via the ConfigurationContainerManageFormPage. The page opens, if an officer with ManagePortalConfiguration permission clicks the ‘Portal Configuration’ link in the side box.

The ConfigurationContainer class implements exactly one interface:

class IConfigurationContainer(IKofaObject):
    """A container for session configuration objects.
    """

    name = schema.TextLine(
        title = _(u'Name of University'),
        default = _(u'Sample University'),
        required = True,
        )

    acronym = schema.TextLine(
        title = _(u'Abbreviated Title of University'),
        default = u'WAeUP.Kofa',
        required = True,
        )

    frontpage = schema.Text(
        title = _(u'Content in HTML format'),
        required = False,
        default = default_html_frontpage,
        constraint=validate_html,
        )

    frontpage_dict = schema.Dict(
        title = u'Content as language dictionary with values in html format',
        required = False,
        default = {},
        )

    name_admin = schema.TextLine(
        title = _(u'Name of Administrator'),
        default = u'Administrator',
        required = True,
        )

    email_admin = schema.ASCIILine(
        title = _(u'Email Address of Administrator'),
        default = 'contact@waeup.org',
        required = True,
        #constraint=validate_email,
        )

    email_subject = schema.TextLine(
        title = _(u'Subject of Email to Administrator'),
        default = _(u'Kofa Contact'),
        required = True,
        )

    smtp_mailer = schema.Choice(
        title = _(u'SMTP mailer to use when sending mail'),
        vocabulary = 'Mail Delivery Names',
        default = 'No email service',
        required = True,
        )

    captcha = schema.Choice(
        title = _(u'Captcha used for public registration pages'),
        source = CaptchaSource(),
        default = u'No captcha',
        required = True,
        )

    carry_over = schema.Bool(
        title = _(u'Carry-over Course Registration'),
        default = False,
        )

    current_academic_session = schema.Choice(
        title = _(u'Current Academic Session'),
        description = _(u'Session for which score editing is allowed'),
        source = academic_sessions_vocab,
        default = None,
        required = False,
        readonly = False,
        )

    next_matric_integer = schema.Int(
        title = _(u'Next Matriculation Number Integer'),
        description = _(u'Integer used for constructing the next '
                         'matriculation number'),
        default = 0,
        readonly = False,
        required = False,
        )

    next_matric_integer_2 = schema.Int(
        title = _(u'Next Matriculation Number Integer 2'),
        description = _(u'2nd integer used for constructing the next '
                         'matriculation number'),
        default = 0,
        readonly = False,
        required = False,
        )

    next_matric_integer_3 = schema.Int(
        title = _(u'Next Matriculation Number Integer 3'),
        description = _(u'3rd integer used for constructing the next '
                         'matriculation number'),
        default = 0,
        readonly = False,
        required = False,
        )

    next_matric_integer_4 = schema.Int(
        title = _(u'Next Matriculation Number Integer 4'),
        description = _(u'4th integer used for constructing the next '
                         'matriculation number'),
        default = 0,
        readonly = False,
        required = False,
        )

    export_disabled_message = schema.Text(
        title = _(u'Export-disabled message'),
        description = _(u'Message which will show up if an officer tries '
                         'to export data. All exporters are automatcally '
                         'disabled if this field is set.'),
        required = False,
        )

    maintmode_enabled_by = schema.TextLine(
        title = _(u'Maintenance Mode enabled by'),
        default = None,
        required = False,
        )

    def addSessionConfiguration(sessionconfiguration):
        """Add a session configuration object.
        """

The page furthermore lists containing session configuration objects and allows to add them.

Session Settings

Session parameters are the attributes of session configuration objects. These parameters may vary between academic sessions. Particularly student fees, which often vary from one session to the next, can be configured here, if the portal has been customized accordingly, see Portal Customization below. The session configuration objects also serve to:

  • disable student payments for certain payment categories and subgroups of students

    See also Disable Payment Groups in the base package.

  • disable clearance by clearance officers for the selected session

    If clearance is disabled, students can still fill and submit the clearance form, but clearance officers can’t process the clearance requests afterwards. They can neither clear these students nor reject their clearance request.

  • set the course registration deadline

    If the course registration deadline is set, student can’t register courses unless they pay the late registration fee.

Session configuration objects implement the following interface:

class ISessionConfiguration(IKofaObject):
    """A session configuration object.
    """

    academic_session = schema.Choice(
        title = _(u'Academic Session'),
        source = academic_sessions_vocab,
        default = None,
        required = True,
        readonly = True,
        )

    clearance_enabled = schema.Bool(
        title = _(u'Clearance enabled'),
        default = False,
        )

    payment_disabled = schema.List(
        title = _(u'Payment disabled'),
        value_type = schema.Choice(
            source = DisablePaymentGroupSource(),
            ),
        required = False,
        defaultFactory=list,
        )

    coursereg_deadline = schema.Datetime(
        title = _(u'Course Reg. Deadline'),
        required = False,
        description = _('Example: ') + u'2011-12-31 23:59:59+01:00',
        )

    clearance_fee = schema.Float(
        title = _(u'Acceptance Fee'),
        default = 0.0,
        required = False,
        )

    booking_fee = schema.Float(
        title = _(u'Bed Booking Fee'),
        default = 0.0,
        required = False,
        )

    maint_fee = schema.Float(
        title = _(u'Rent (fallback)'),
        default = 0.0,
        required = False,
        )

    late_registration_fee = schema.Float(
        title = _(u'Late Course Reg. Fee'),
        default = 0.0,
        required = False,
        )

    transcript_fee = schema.Float(
        title = _(u'Transcript Fee'),
        default = 0.0,
        required = False,
        )

    transfer_fee = schema.Float(
        title = _(u'Transfer Fee'),
        default = 0.0,
        required = False,
        )

    def getSessionString():
        """Return the session string from the vocabulary.
        """