Beispiel #1
0
    def create_semester(self, event=None, semester_tag=None):
        start = self.semester_start_entry.get().strip()
        end = self.semester_end_entry.get().strip()
        if len(start) != 11 or len(end) != 11 or start[2] != '/' or end[2] != '/':
            self.feedback_label.config(style='ErrorLabel.TLabel')
            self.feedback_label['text'] = "Please enter dates in the format:\n" \
                                          "DD/MMM/YYYY.\n" \
                                          "Example: 12/AUG/2015"
            return  # Failure state

        # Normal Semester Creation with automated Semester Tag generation
        if not hasattr(self, 'semester_tag_entry'):
            start_month = start[3:6]
            end_month = end[3:6]
            previous_semester_tag = MIS_Database_Functions.get_most_recent_semester_tag()
            try:
                previous_semester_tag_year = int(previous_semester_tag[1:])
            except ValueError:
                self.feedback_label.config(style='ErrorLabel.TLabel')
                self.feedback_label['text'] = "The previous semester's tag is incorrect.\n" \
                                              "Have the technical director correct this issue before proceeding."
                return
            if previous_semester_tag[0] == 'F':
                new_semester_tag_year = previous_semester_tag_year + 1
                new_semester_tag = 'S'
            else:
                new_semester_tag = 'F'
                new_semester_tag_year = previous_semester_tag_year
            new_semester_tag += str(new_semester_tag_year)
            # Checks to make sure the start and end dates are in the right months for the new Semester
            if start_month not in months or end_month not in months:
                self.feedback_label.config(style='ErrorLabel.TLabel')
                self.feedback_label['text'] = "The month in at least one of the dates\n" \
                                              "is not correct for semester  %s." % new_semester_tag
            if new_semester_tag[0] == 'F' and (start_month not in fall_months or end_month not in fall_months):
                self.feedback_label.config(style='ErrorLabel.TLabel')
                self.feedback_label['text'] = "The month in at least one of the dates\n" \
                                              "is not correct for semester  %s." % new_semester_tag
                return
            if new_semester_tag[0] == 'S' and (start_month not in spring_months or end_month not in spring_months):
                self.feedback_label.config(style='ErrorLabel.TLabel')
                self.feedback_label['text'] = "The month in at least one of the dates\n" \
                                              "is not correct for semester  %s." % new_semester_tag
                return
            start_year = int(start[9:])
            end_year = int(end[9:])
            if start_year != new_semester_tag_year or end_year != new_semester_tag_year:
                self.feedback_label.config(style='ErrorLabel.TLabel')
                self.feedback_label['text'] = 'Incorrect year. It should be \'%s' \
                                              % str(new_semester_tag_year)
                return
            self.feedback_label.config(style="SuccessLabel.TLabel")
            self.feedback_label['text'] = "Semester created successfully.\n" \
                                          " You are ready to create events and check in members."
            MIS_Database_Functions.create_semester(new_semester_tag, start, end)
            self.semester_end_entry.delete(0, len(self.semester_end_entry.get()))
            self.semester_start_entry.delete(0, len(self.semester_start_entry.get()))

        # Semester Creation from the blank slate
        else:
            MIS_Database_Functions.create_semester(semester_tag, start, end)
            self.feedback_label.config(style="SuccessLabel.TLabel")
            self.feedback_label['text'] = "Semester created successfully.\n" \
                                          "You are ready to create events."