class BaseAttr(db.Model): __abstract__ = True __table_args__ = {"schema": "attrs"} id = db.Column(db.String(10), primary_key=True) name = db.Column(db.String()) HEADERS = ["id", "name"] @classmethod def parents(cls, attr_id): raise Exception("Not implemented!") @classmethod def children(cls, attr_id): raise Exception("Not implemented!") def serialize(self): return { key: val for key, val in self.__dict__.items() if not key.startswith("_") } def data_serialize(self): return [self.id, self.name] def __repr__(self): return '<{}, id: {}, name: {}>'.format(self.__class__, self.id, self.name)
class PumsNaics(BaseAttr, ImageAttr): __tablename__ = 'pums_naics' __table_args__ = {"schema": "pums_attrs"} id = db.Column(db.String(10), primary_key=True) level = db.Column(db.Integer, primary_key=True) parent = db.Column(db.String, db.ForeignKey(id)) grandparent = db.Column(db.String, db.ForeignKey(id)) @classmethod def children(cls, naics_id, **kwargs): objs = PumsNaics.query.filter(PumsNaics.parent == naics_id) data = [[obj.id, obj.name] for obj in objs if obj.id != naics_id] return data, PumsNaics.HEADERS @classmethod def parents(cls, naics_id, **kwargs): naics_obj = PumsNaics.query.filter_by(id=naics_id).first() tmp = [] if naics_obj and naics_obj.grandparent: tmp.append( PumsNaics.query.filter_by(id=naics_obj.grandparent).first()) if naics_obj and naics_obj.parent: tmp.append(PumsNaics.query.filter_by(id=naics_obj.parent).first()) tmp = [[x.id, x.name] for x in tmp if x] return tmp, PumsNaics.HEADERS
class YgcPostDischarge(AutomapBase, DartmouthBase): __tablename__ = 'ygc_post_discharge' median_moe = 2 cohort = db.Column(db.String(), primary_key=True) @classmethod def get_supported_levels(cls): return {"geo": [ALL, NATION, STATE, COUNTY], "cohort": [ALL]}
class SkillBySoc(BaseOnet, SkillId): __tablename__ = "skills_by_soc" median_moe = 1 soc = db.Column(db.String(), primary_key=True) value = db.Column(db.Float) value_rca = db.Column(db.Float) @classmethod def get_supported_levels(cls): return {"soc": ["all"], "skill": ["all"]}
class NonMedUsePainMeds(BaseOpiods): __tablename__ = "non_medical_use_of_pain_releivers" median_moe = 1 source_title = 'National Survey on Drug Use and Health' source_org = 'SAMHSA, Center for Behavioral Health Statistics and Quality' source_link = 'https://nsduhweb.rti.org/respweb/homepage.cfm' start_year = db.Column(db.Integer(), primary_key=True) year = db.Column(db.Integer(), primary_key=True) non_medical_use_of_pain_relievers = db.Column(db.String()) non_medical_use_of_pain_relievers_lci = db.Column(db.String()) non_medical_use_of_pain_relievers_uci = db.Column(db.String()) @classmethod def get_supported_levels(cls): return { "year": [ALL], "start_year": [ALL], "geo": [ALL, NATION, STATE] }
class HealthYg(AutomapBase, db.Model, BaseModel): __table_args__ = {"schema": "chr"} source_title = 'County Health Rankings' source_link = 'http://www.countyhealthrankings.org/' source_org = 'University of Wisconsin' __tablename__ = 'yg' median_moe = 1 year = db.Column(db.String(), primary_key=True) geo = db.Column(db.String(), primary_key=True) @classmethod def get_supported_levels(cls): return {"geo": [ALL, STATE, COUNTY]} @classmethod def geo_filter(cls, level): if level == ALL: return True level_map = {STATE: "040", COUNTY: "050"} level_code = level_map[level] return cls.geo.startswith(level_code)
class FAFYodm(BaseFreight, OriginGeo, DestGeo): __tablename__ = "yodm_faf" median_moe = 3 year = db.Column(db.Integer(), primary_key=True) transportation_mode = db.Column(db.String(), primary_key=True) @classmethod def get_supported_levels(cls): return { "origin_geo": [STATE, COUNTY, ALL], "destination_geo": [STATE, COUNTY, ALL], "transportation_mode": [ALL] }
class DefaultsYg(BaseEd, GeoId): __tablename__ = "yg_defaults" median_moe = 1.1 year = db.Column(db.Integer(), primary_key=True) rate_type = db.Column(db.String()) default_rate = db.Column(db.Float) num_defaults = db.Column(db.Integer) num_borrowers = db.Column(db.Integer) @classmethod def get_supported_levels(cls): return {"year": [ALL], "geo": GeoId.LEVELS}
class BaseCbp(db.Model, BaseModel): __abstract__ = True __table_args__ = {"schema": "cbp"} source_title = 'County Business Patterns' source_link = 'http://www.census.gov/econ/cbp/' source_org = 'Census Bureau' est = db.Column(db.Integer()) emp = db.Column(db.Integer()) emp_nf = db.Column(db.String()) empflag = db.Column(db.String()) ap = db.Column(db.Float()) ap_nf = db.Column(db.String()) n1_4 = db.Column(db.Integer()) n5_9 = db.Column(db.Integer()) n20_49 = db.Column(db.Integer()) n50_99 = db.Column(db.Integer()) n100_249 = db.Column(db.Integer()) n250_499 = db.Column(db.Integer()) n500_999 = db.Column(db.Integer()) n1000 = db.Column(db.Integer()) n1000_1 = db.Column(db.Integer()) n1000_2 = db.Column(db.Integer()) n1000_3 = db.Column(db.Integer()) n1000_4 = db.Column(db.Integer()) @classmethod def geo_filter(cls, level): if level == ALL: return True level_map = {NATION: "010", STATE: "040", MSA: "310", COUNTY: "050"} level_code = level_map[level] return cls.geo.startswith(level_code)
class DefaultsYu(BaseEd, UniversityCols): __tablename__ = "yu_defaults" median_moe = 1 year = db.Column(db.Integer(), primary_key=True) rate_type = db.Column(db.String()) default_rate = db.Column(db.Float) num_defaults = db.Column(db.Integer) num_borrowers = db.Column(db.Integer) @classmethod def get_supported_levels(cls): return { "year": [ALL], "university": [ALL], "opeid": [ALL], }
class DefaultsYure(BaseEd, UniversityCols): __tablename__ = "yure_defaults" median_moe = 3 year = db.Column(db.Integer(), primary_key=True) rate_type = db.Column(db.String(), primary_key=True) ethnic_code = db.Column(db.Integer(), primary_key=True) @classmethod def get_supported_levels(cls): return { "year": [ALL], "university": [ALL], "opeid": [ALL], "rate_type": [ALL], "ethnic_code": [ALL], }
class GradRateTimeframeYut(BaseIpeds, UniversityId): __tablename__ = "gradrate_timeframe_yut" year = db.Column(db.Integer(), primary_key=True) timeframe = db.Column(db.String(), primary_key=True) num_completed_ba = db.Column(db.Float) pct_completed_ba = db.Column(db.Float) median_moe = 1.5 @classmethod def get_supported_levels(cls): return { "year": [ALL], "timeframe": [ALL], "university": UniversityId.LEVELS }
class PumsSoc(BaseAttr, ImageAttr): __tablename__ = 'pums_soc' __table_args__ = {"schema": "pums_attrs"} id = db.Column(db.String(10), primary_key=True) level = db.Column(db.Integer, primary_key=True) parent = db.Column(db.String) grandparent = db.Column(db.String) great_grandparent = db.Column(db.String) @classmethod def parents(cls, soc_id, **kwargs): soc_hobj = SocHierarchy.query.filter_by(soc=soc_id).first() parents = [soc_hobj.great_grandparent_obj, soc_hobj.grandparent_obj, soc_hobj.parent_obj] data = [[p.id, p.name] for p in parents if p] return data, PumsNaics.HEADERS @classmethod def children(cls, soc_id, **kwargs): objs = SocHierarchy.query.filter_by(parent=soc_id).all() data = [[obj.soc_obj.id, obj.soc_obj.name] for obj in objs] return data, PumsSoc.HEADERS
def birthplace(cls): return db.Column(db.String(), db.ForeignKey(PumsBirthplace.id), primary_key=True)
def sex(cls): return db.Column(db.String(), db.ForeignKey(PumsSex.id), primary_key=True)
def wage_bin(cls): return db.Column(db.String(), db.ForeignKey(PumsWage.id), primary_key=True)
def naics(cls): return db.Column(db.String(), db.ForeignKey(PumsNaics.id), primary_key=True)
def degree(cls): return db.Column(db.String(), db.ForeignKey(PumsDegree.id), primary_key=True)
def cip(cls): return db.Column(db.String(), db.ForeignKey(Cip.id), primary_key=True)
def acs_occ(cls): return db.Column(db.String(), db.ForeignKey(AcsOcc.id), primary_key=True)
def ipeds_expense(cls): return db.Column(db.String(), db.ForeignKey(IPedsExpense.id), primary_key=True)
class OpiodOverdoseDeathRate(BaseOpiods): __tablename__ = "opioid_overdose_deathrate" median_moe = 1 source_link = 'https://www.kff.org/other/state-indicator/opioid-overdose-death-rates/?currentTimeframe=0&sortModel=%7B%22colId%22:%22Location%22,%22sort%22:%22asc%22%7D' year = db.Column(db.Integer(), primary_key=True) opioid_overdose_deathrate_ageadjusted = db.Column(db.String())
def opeid(cls): return db.Column(db.String(), primary_key=True)
def academic_rank(cls): return db.Column(db.String(), db.ForeignKey(AcademicRank.id), primary_key=True)
def sctg(cls): return db.Column(db.String(), db.ForeignKey(Sctg.id), primary_key=True)
def ipeds_occ(cls): return db.Column(db.String(), db.ForeignKey(IPedsOcc.id), primary_key=True)
def geo(cls): return db.Column(db.String(), db.ForeignKey(Geo.id), primary_key=True)
def language(cls): return db.Column(db.String(), db.ForeignKey(AcsLanguage.id), primary_key=True)
def acs_ind(cls): return db.Column(db.String(), db.ForeignKey(AcsInd.id), primary_key=True)
def skill(cls): return db.Column(db.String(), db.ForeignKey(Skill.id), primary_key=True)