001:
002:
003:
004:
005:
006:
007:
008:
009: reloadables=[]
010:
011:
012:
013: import re
014: from relational import base
015: from standing import confbase,enumstat
016:
017:
018:
019:
020:
021: DivisionName=enumstat.DivisionEnum
022: DIVISIONNAMES=confbase.ConfList([
023: DivisionName.PHRFA,
024: DivisionName.PHRFB,
025: DivisionName.PHRFC,
026: DivisionName.JOGA,
027: DivisionName.JOGB,
028: DivisionName.SHARK,
029: DivisionName.UNKNOWN,
030: ])
031: PHRFNAMES=confbase.ConfList([
032: DivisionName.PHRFA,
033: DivisionName.PHRFB,
034: DivisionName.PHRFC,
035: ])
036: JOGNAMES=confbase.ConfList([
037: DivisionName.JOGA,
038: DivisionName.JOGB,
039: ])
040: ONEDESIGNNAMES=confbase.ConfList([
041: DivisionName.SHARK,
042: ])
043:
044:
045:
046: class ChampionshipName(confbase.ConfValueEntry):
047: entuple=("Championship",)
048: ChampionshipName.YEAR=ChampionshipName()
049: ChampionshipName.YEAR.exclusions=dict([(n,n//5) for n in range(0,19)])
050:
051: class CasualName(confbase.ConfValueEntry):
052: entuple=("Casual",)
053: CasualName.YEAR=CasualName()
054: CasualName.YEAR.exclusions=dict([(n,n//5) for n in range(0,19)])
055:
056:
057:
058: class SeriesEnum(base.Enumeration):
059: enum=base.Enum(
060: "Spring Series","Summer Series","Fall Series","Casual",
061: refilter=[
062: (0,re.compile(r"Spring Series",re.I)),
063: (1,re.compile(r"Summer Series",re.I)),
064: (2,re.compile(r"Fall Series",re.I)),
065: (3,re.compile(r"Casual")),
066: ],
067: )
068: enum.create_dict()
069: SeriesEnum.SPRING=SeriesEnum("Spring Series")
070: SeriesEnum.SUMMER=SeriesEnum("Summer Series")
071: SeriesEnum.FALL=SeriesEnum("Fall Series")
072: SeriesEnum.CASUAL=SeriesEnum("Casual")
073:
074: SeriesName=SeriesEnum
075: SeriesName.SPRING.seriesnumber=1
076: SeriesName.SPRING.abbrev="S1"
077: SeriesName.SUMMER.seriesnumber=2
078: SeriesName.SUMMER.abbrev="S2"
079: SeriesName.FALL.seriesnumber=3
080: SeriesName.FALL.abbrev="S3"
081: SERIESNAMES=confbase.ConfList([
082: SeriesName.SPRING,
083: SeriesName.SUMMER,
084: SeriesName.FALL,
085: ])
086: for seriesname in SERIESNAMES:
087: seriesname.championship=ChampionshipName.YEAR
088: seriesname.exclusions=dict([(n,n//5) for n in range(0,7)])
089:
090: class RaceName(confbase.ConfValueEntry):
091:
092:
093:
094:
095: def __init__(self,casualname,seriesname,racenumber=1,friendlyname=None):
096:
097: assert isinstance(casualname,CasualName)
098: self.casualname=casualname
099:
100: assert isinstance(seriesname,SeriesName)
101: self.seriesname=seriesname
102:
103: assert isinstance(racenumber,int)
104: self.racenumber=racenumber
105:
106: if friendlyname<>None:
107: assert isinstance(friendlyname,str)
108: self.friendlyname=friendlyname
109: else:
110: self.friendlyname=str(self.seriesname)+": Race %i"%self.racenumber
111:
112: abbrev="R"+str(self.racenumber)
113: try:
114: self.abbrev=self.seriesname.abbrev+abbrev
115: except AttributeError:
116: self.abbrev=abbrev
117:
118:
119:
120:
121: self.entuple=(self.friendlyname,)
122: self.canonical_value((self.seriesname,self.racenumber,))
123:
124: self.racenamelist=confbase.ConfList()
125:
126: RACENAMES=confbase.ConfList([
127: RaceName(CasualName.YEAR,s,n)
128: for s in SERIESNAMES for n in [1,2,3,4,5,6]
129: ])
130:
131: RACEDICT=dict([(racename.abbrev,racename) for racename in RACENAMES])
132:
133: def get_racename(s,r):
134: assert isinstance(s,int) and 1<=s<=3
135: assert isinstance(r,int) and 1<=r<=6
136: return RACENAMES[(s-1)*6+(r-1)]
137:
138: RACENAMER=confbase.ConfList([
139: confbase.ConfList([
140: RaceName(CasualName.YEAR,s,n) for n in [1,2,3,4,5,6]
141: ]) for s in SERIESNAMES
142: ])
143:
144: