Ignore:
Timestamp:
13 May 2017, 16:50:36 (8 years ago)
Author:
Henrik Bettermann
Message:

Add 'Update all tickets' button to StudyLevelEditFormPage?.

Location:
main/waeup.kofa/trunk/src/waeup/kofa/students
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py

    r14649 r14684  
    27242724        return
    27252725
     2726    def _updateTickets(self, **data):
     2727        cat = queryUtility(ICatalog, name='courses_catalog')
     2728        invalidated = list()
     2729        for value in self.context.values():
     2730            result = cat.searchResults(code=(value.code, value.code))
     2731            if len(result) != 1:
     2732                course = None
     2733            else:
     2734                course = list(result)[0]
     2735            invalid = self.context.updateCourseTicket(value, course)
     2736            if invalid:
     2737                invalidated.append(invalid)
     2738        if invalidated:
     2739            invalidated_string = ', '.join(invalidated)
     2740            self.context.writeLogMessage(
     2741                self, 'course tickets invalidated: %s' % invalidated_string)
     2742        self.flash(_('All course tickets updated.'))
     2743        return
     2744
     2745    @action(_('Update all tickets'),
     2746        tooltip=_('Update all course parameters including course titles.'))
     2747    def updateTickets(self, **data):
     2748        self._updateTickets(**data)
     2749        return
     2750
    27262751    def _registerCourses(self, **data):
    27272752        if self.context.student.is_postgrad and \
  • main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py

    r14655 r14684  
    646646        """
    647647
     648    def updateCourseTicket(ticket, course):
     649        """Updates a course ticket object and return code
     650        if ticket has been invalidated.
     651        """
     652
    648653class ICourseTicket(IKofaObject):
    649654    """A representation of course ticket data.
  • main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py

    r14642 r14684  
    268268        return
    269269
     270    def updateCourseTicket(self, ticket, course):
     271        """Updates a course ticket object and return code
     272        if ticket has been invalidated.
     273        """
     274        if not course:
     275            if ticket.title.endswith('cancelled)'):
     276                # Skip this tiket
     277                return
     278            # Invalidate course ticket
     279            ticket.title += u' (course cancelled)'
     280            ticket.credits = 0
     281            ticket.passmark = 0
     282            return ticket.code
     283        ticket.code = course.code
     284        ticket.title = course.title
     285        ticket.fcode = course.__parent__.__parent__.__parent__.code
     286        ticket.dcode = course.__parent__.__parent__.code
     287        ticket.credits = course.credits
     288        ticket.passmark = course.passmark
     289        ticket.semester = course.semester
     290        return
     291
    270292StudentStudyLevel = attrs_to_fields(
    271293    StudentStudyLevel, omit=['total_credits', 'gpa'])
  • main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py

    r14642 r14684  
    25782578        return
    25792579
     2580    def test_student_ticket_update(self):
     2581        IWorkflowState(self.student).setState('school fee paid')
     2582        self.student['studycourse'].current_level = 100
     2583        self.browser.open(self.login_path)
     2584        self.browser.getControl(name="form.login").value = self.student_id
     2585        self.browser.getControl(name="form.password").value = 'spwd'
     2586        self.browser.getControl("Login").click()
     2587        # Now students can add the current study level
     2588        self.browser.getLink("Study Course").click()
     2589        self.browser.getLink("Add course list").click()
     2590        self.assertMatches('...Add current level 100 (Year 1)...',
     2591                           self.browser.contents)
     2592        self.browser.getControl("Create course list now").click()
     2593        # A level with one course ticket was created
     2594        self.assertEqual(
     2595            self.student['studycourse']['100'].number_of_tickets, 1)
     2596        self.browser.getLink("100").click()
     2597        self.assertTrue('<td>Unnamed Course</td>' in self.browser.contents)
     2598        self.browser.getLink("Edit course list").click()
     2599        self.browser.getControl("Update all tickets").click()
     2600        self.assertTrue('All course tickets updated.' in self.browser.contents)
     2601        # ... nothing has changed
     2602        self.assertTrue('<td>Unnamed Course</td>' in self.browser.contents)
     2603        # We change the title of the course
     2604        self.course.title = u'New Title'
     2605        self.browser.getControl("Update all tickets").click()
     2606        self.assertTrue('<td>New Title</td>' in self.browser.contents)
     2607        # We remove the course
     2608        del self.app['faculties']['fac1']['dep1'].courses['COURSE1']
     2609        self.browser.getControl("Update all tickets").click()
     2610        self.assertTrue(' <td>New Title (course cancelled)</td>'
     2611            in self.browser.contents)
     2612        # Course ticket invalidation has been logged
     2613        logfile = os.path.join(
     2614            self.app['datacenter'].storage, 'logs', 'students.log')
     2615        logcontent = open(logfile).read()
     2616        self.assertTrue(
     2617            'K1000000 - students.browser.StudyLevelEditFormPage - '
     2618            'K1000000 - course tickets invalidated: COURSE1'
     2619            in logcontent)
     2620        return
     2621
    25802622    def test_student_course_registration_outstanding(self):
    25812623        self.course = createObject('waeup.Course')
Note: See TracChangeset for help on using the changeset viewer.