Beispiel #1
0
def test_tabular():
    if(not on_travis):
        return

    a = Tabular('spike/excel.xlsx')
    print(a,a[0])
    assert(len(a) == 3)
    assert(len(a[0]) == 3)
    assert(a[0][0] == 'name')
    assert(a[1]['name'] == 'pagal')
    assert(a['name'][0] == 'pagal')
    assert(len(a['name']) == 2)
    a.write_csv('test.csv')
    a.write_json('test.json')
    a.write_xls('test.xlsx')

    # strict
    a.load_xls('spike/strict.xlsx',strict=True)
    assert(len(a) == 8)


    b = Tabular('test.xlsx')
    assert(len(b) == 3)
    assert(len(b[0]) == 3)
    assert(b[0][0] == 'name')
    assert(b[1]['name'] == 'pagal')
    assert(b['name'][0] == 'pagal')
    assert(len(b['name']) == 2)

    c = Tabular('test.csv')
    c = Tabular('test.json')
Beispiel #2
0
    def dump_output(self, teachers_list, session_list, output_path):
        matrix = [["Name of Faculty Member", "Info"]]
        if debug:
            matrix[0].extend(['rank', 'total', 'res', 'credits'])  # srbdebug
        for session in session_list:
            matrix[0].append(session.name)
        matrix[0].append("Total")

        for teacher in teachers_list:
            if teacher.duties != len(teacher.alloted):
                print('broke on')
                print(teacher)
                sys.exit(1)
            teachers_row = [teacher.name, teacher.info]
            if debug:
                teachers_row.extend([
                    teacher.rank,
                    len(teacher.alloted),
                    len(teacher.alloted_res),
                    int(teacher._credits)
                ])
            for session in session_list:
                if session.name in teacher.alloted:
                    teachers_row.append(teacher.alloted[session.name])
                else:
                    teachers_row.append('-')
            teachers_row.append(len(teacher.alloted))
            matrix.append(teachers_row)

        sheet = Tabular(matrix)
        sheet.write_xls(output_path)
Beispiel #3
0
def extract_output():
    data = [[
        "Sno", "N", "Cap", "SA", "SA-time", "ACO", "ACO-time", "ACO-SA",
        "ACO-SA-time", "Kmean-SA", "Kmean-SA-time"
    ]]
    for i in range(100):
        cities = City.generate_cities()
        n = len(cities)
        cap = 10 if n <= 60 else 20
        c_ret, t_ret, h_ret = run(cities, cap, disp=False)
        tabular_ret = [i + 1, n, cap]
        for a, b in zip(c_ret, t_ret):
            tabular_ret.append(a)
            tabular_ret.append(b)
        data.append(tabular_ret)
        print(Tabular([tabular_ret]))
    tabular = Tabular(data)
    tabular.write_json('output/out.json')
    tabular.write_xls('output/data.xls')
    def schedule(self, output_path=default_output_xlsx_path):
        teacher_list_for_pq = randomize(Teacher.get_teachers(
            self.teacher_list))
        pq = PriorityQueue(teacher_list_for_pq)

        teacher_list = Teacher.get_teachers(self.teacher_list)
        session_list = Session.get_sessions(self.schedule_list, self.room_list)

        for session in session_list:
            done_list = []
            for i in range(len(session.room_list)):
                for j in range(session.room_list[i].teachers):
                    teacher = pq.pop()
                    session.room_list[i].teachers_alloted.append(teacher)
                    teacher._credits += credits_calc(teacher.rank)
                    done_list.append(teacher)
                    teacher_list[teacher.idd - 2].alloted[
                        session.name] = session.room_list[i].name
            for teacher in done_list:
                pq.push(teacher)

        matrix = [["Name of Faculty Member", "Designation", "Dept"]]
        for session in session_list:
            matrix[0].append(session.name)
        matrix[0].append("Total")

        for teacher in teacher_list:
            teacher_row = [teacher.name, teacher.desg, teacher.dept]
            for session in session_list:
                if session.name in teacher.alloted:
                    teacher_row.append(teacher.alloted[session.name])
                else:
                    teacher_row.append('-')
            teacher_row.append(len(teacher.alloted))
            matrix.append(teacher_row)

        sheet = Tabular(matrix)
        sheet.write_xls(output_path)
Beispiel #5
0
    def dump_output(self, teachers_list, session_list, output_path):
        matrix = [["Name of Faculty Member", "Info"]]
        if debug:
            matrix[0].extend(['_rank', '_total', '_res',
                              '_credits'])  # srbdebug

        dmap = {}  # map to contain count of avg duties of some rank
        rmap = {}  # map to contain count of teachers of some rank
        for teacher in teachers_list:
            rmap[teacher.rank] = 0
            dmap[teacher.rank] = 0
        for teacher in teachers_list:
            rmap[teacher.rank] += 1
            dmap[teacher.rank] += teacher.duties

        def divide(a, b):
            a = int((a * 1000) / b)
            return a / 1000

        for rank in rmap:
            dmap[rank] = divide(dmap[rank], rmap[rank])

        tmap = {}  # map to contain count of room types
        for session in session_list:
            matrix[0].append(session.name)
            for room in session.room_list:
                if room.reserved:
                    continue
                if room.get_type() in tmap:
                    tmap[room.get_type()] += 1
                else:
                    tmap[room.get_type()] = 1

        matrix[0].append("Total")
        matrix[0].append("mail")
        same_day_duties = self._get_same_day_multiple_duties(teachers_list)
        if (same_day_duties): matrix[0].append("s_d_m_d")

        for teacher in teachers_list:
            teachers_row = [teacher.name, teacher.info]
            if teacher.duties != len(teacher.alloted) - len(
                    teacher.alloted_res):
                print(
                    'ERROR: teacher unable to get enough slots as anticipated')
                print(teacher)
                raise Exception(
                    'ERROR: teacher unable to get enough slots as anticipated')
            if debug:
                teachers_row.extend([
                    teacher.rank,
                    len(teacher.alloted),
                    len(teacher.alloted_res),
                    int(teacher._credits),
                ])
            for session in session_list:
                if session.name in teacher.alloted:
                    teachers_row.append(teacher.alloted[session.name])
                else:
                    teachers_row.append('-')
            teachers_row.append(len(teacher.alloted))
            teachers_row.append(teacher.mail)
            if (same_day_duties):
                same_day_duties_t = 0  # compute same day duties per teacher
                sess_set = set()
                for session_name in teacher.alloted.keys():
                    if Session.get_base(session_name) in sess_set:
                        same_day_duties_t += 1
                        continue
                    sess_set.add(Session.get_base(session_name))
                teachers_row.append(same_day_duties_t)
            matrix.append(teachers_row)

        lmap = json.dumps(rmap, indent=3, sort_keys=True)
        Colour.print('rank count : ', Colour.CYAN, end='')
        Colour.print(lmap, Colour.GREEN)

        lmap = json.dumps(dmap, indent=3, sort_keys=True)
        Colour.print('average duties : ', Colour.CYAN, end='')
        Colour.print(lmap, Colour.GREEN)

        lmap = json.dumps(tmap, indent=3, sort_keys=True)
        Colour.print('type of rooms : ', Colour.CYAN, end='')
        Colour.print(lmap, Colour.GREEN)

        matrix.extend([[], [], ['', 'rank', 'count', 'avg duties']])
        for key in sorted(rmap):
            matrix.append(['', key, rmap[key], dmap[key]])

        matrix.extend([[], [], ['', 'type of room', 'number']])
        for key in sorted(tmap):
            matrix.append(['', key, tmap[key]])

        if same_day_duties > 0:
            Colour.print('Got ' + str(same_day_duties) + ' same-day-duties',
                         Colour.YELLOW)
            matrix.extend(
                [[], [],
                 ['', 'WARNING:', 'Adv-algo value was ' + str(self.adv)]])
            matrix.extend(
                [['', '', 'You may get teacher duty multiple in a day']])
            matrix.extend(
                [['', '', 'We got ' + str(same_day_duties) + ' such cases']])
            matrix.extend([[
                '', '',
                'Please visit s_d_m_d(same-day-multiple-duties) column for number of such cases per teacher'
            ]])

        matrix.extend(
            [[], [],
             [
                 '', 'Help:',
                 'In case help required please visit help section on website'
             ]])
        matrix.extend([[
            '', '',
            'In case of unsatisfactory results please contact [email protected]'
        ]])
        matrix.extend([[], [], ['', '', 'a srbcheema1 Production']])

        sheet = Tabular(matrix)
        sheet.write_xls(output_path)