# positions_cornell.py
# Lillian Lee (LJL2)
# Apr 11, 2018


"""A module creating a non-trivial org chart.

Root is`trustees`
11 Positions total
netids amc562  and mfw68 both hold two separate Positions each
Positions vdai and counsel have more than one supervising Positions
There are 4 positions above vdai

References:
Cornell org charts:
http://irp.dpb.cornell.edu/university-factbook/university-organization
By-Laws:
(https://trustees.cornell.edu/Shared%20Documents/18-3%20bylaws%20w-TC.pdf)

"""

import positions as pfile


class VP(pfile.Position):
    """All Vice Presidents and Provosts are report to the President.
    Assumes `president` is a global variable."""
    def __init__(self, t, h,):
        super().__init__(t, h,  [president], [])


class Dean(pfile.Position):
    """Regular Deans report to the Provost.  Assumes `provost` is a global
    variable."""
    def __init__(self, t, h, search_in_progress=False):
        super().__init__(t, h, [provost], [], search_in_progress)


# Set up part of the org chart for Cornell
# Start with the "root"
trustees = pfile.Position("Board of Trustees", 0, [], [])

# This netid is made up.
president = pfile.Position("President", "mep100", [trustees], [])

# LL note: my reading of the Cornell bylaws
# (https://trustees.cornell.edu/Shared%20Documents/18-3%20bylaws%20w-TC.pdf)
# is that the University Counsel is a separate position from the
# Secretary of the Corporation, despite the President org chart
# at http://dbp.cornell.edu/university-org-structure/
counsel = pfile.Position("University Counsel",
                       "mfw68",
                       [trustees, president],
                       [])
sec_of_corp = pfile.Position("Secretary of the Corporation",
                           "mfw68",
                           [president],
                           [])

provost = pfile.Position("Provost",
                       "mik7",
                       [president],
                       [])
evp = VP("Executive Vice President and Chief Financial Officer", "jmd11")
pma = VP("Provost for Medical Affairs", "amc562")
vdai = pfile.Position("Vice Dean for Academic Integration",
                    "gak36",
                    [provost, pma],
                    [])
dean_med = pfile.Position("Dean of the Medical College", "amc562", [pma], [])
dean_as = Dean('Dean of Arts and Sciences', "gr72", search_in_progress=True)
dean_bus = Dean('Dean of Business', "ljt3", search_in_progress=True)


if __name__ == '__main__':

    title = "Fragment starting at Board of Trustees (blue dot).\n"
    title += "(Resize the window if this figure is hard to read.)"
    pfile.draw(trustees, figtitle=title)