from core.enums import ActivityName, ActivityRefType, ActivityType from data.activity import Activity ACTIVITIES: dict[ActivityName, Activity] = { ActivityName.CONTEST: Activity( name=ActivityName.CONTEST, description="Contest", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, # No sensible way to determine *which* contest, but if we set comment_names=["CONTEST"] then at least # any spots with "contest" in the comment will get allocated to this activity. comment_names=["CONTEST"], icon="fa-trophy", alerts_possible=True, ), ActivityName.DXPEDITION: Activity( name=ActivityName.DXPEDITION, description="Radio expedition to a remote location", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, # DXpedition stations are never really spotted with "DXpedition" in the comments, but we can assign # this activity to a spot other ways. comment_names=[], icon="fa-book-atlas", alerts_possible=True, ), ActivityName.SATELLITE: Activity( name=ActivityName.SATELLITE, description="Amateur Radio Satellite", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, comment_names=[], icon="fa-satellite", alerts_possible=True, ), ActivityName.EME: Activity( name=ActivityName.EME, description="Earth-Moon-Earth (Moonbounce)", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, comment_names=[], icon="fa-moon", ), ActivityName.AERONAUTICAL_MOBILE: Activity( name=ActivityName.AERONAUTICAL_MOBILE, description="Aeronautical Mobile", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, # Don't pick /AM out of comments, spot.py will handle picking it out of the callsign comment_names=[], icon="fa-plane", ), ActivityName.MARITIME_MOBILE: Activity( name=ActivityName.MARITIME_MOBILE, description="Maritime Mobile", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, # Don't pick /MM out of comments, spot.py will handle picking it out of the callsign comment_names=[], icon="fa-sailboat", ), ActivityName.QRP: Activity( name=ActivityName.QRP, description="Low power", sig_type=ActivityType.TRADITIONAL, has_refs=False, refs_globally_unique=False, comment_names=["QRP"], icon="fa-volume-low", alerts_possible=True, ), ActivityName.POTA: Activity( name=ActivityName.POTA, description="Parks on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.PARK, ref_regex=r"[A-Z]{2}\-\d{4,5}|K\-TEST", comment_names=["POTA"], icon="fa-tree", alerts_possible=True, ), ActivityName.SOTA: Activity( name=ActivityName.SOTA, description="Summits on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.SUMMIT, ref_regex=r"[A-Z0-9]{1,3}\/[A-Z]{2}\-\d{3}", comment_names=["SOTA"], icon="fa-mountain-sun", alerts_possible=True, ), ActivityName.WWFF: Activity( name=ActivityName.WWFF, description="World Wide Flora & Fauna", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.PARK, ref_regex=r"[A-Z0-9]{1,3}FF\-\d{4}", comment_names=["WWFF"], icon="fa-seedling", alerts_possible=True, ), ActivityName.GMA: Activity( name=ActivityName.GMA, description="Global Mountain Activity", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.SUMMIT, ref_regex=r"[A-Z0-9]{1,3}\/[A-Z]{2}\-\d{3}", comment_names=["GMA"], icon="fa-person-hiking", ), ActivityName.WWBOTA: Activity( name=ActivityName.WWBOTA, description="Worldwide Bunkers on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.BUNKER, ref_regex=r"B\/[A-Z0-9]{1,3}\-\d{3,4}", comment_names=["WWBOTA", "BOTA"], icon="fa-radiation", ), ActivityName.HEMA: Activity( name=ActivityName.HEMA, description="HuMPs Excluding Marilyns Award", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.SUMMIT, ref_regex=r"[A-Z0-9]{1,3}\/[A-Z]{3}\-\d{3}", comment_names=["HEMA"], icon="fa-mound", alerts_possible=True, ), ActivityName.IOTA: Activity( name=ActivityName.IOTA, description="Islands on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.ISLAND, ref_regex=r"[A-Z]{2}\-\d{3}", comment_names=["IOTA"], icon="fa-book-atlas", ), ActivityName.GMA_ISLANDS: Activity( name=ActivityName.GMA_ISLANDS, description="Global Mountain Activity - Islands", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.ISLAND, ref_regex=r"(([A-Z]{2}\-\d{3})|([A-Z0-9]{1,3}\/[A-Z]{2}\-\d{3}))", comment_names=[], icon="fa-person-hiking", ), ActivityName.ARLHS: Activity( name=ActivityName.ARLHS, description="Amateur Radio Lighthouse Society", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.LIGHTHOUSE, ref_regex=r"[A-Z]{3}[\- ]\d{3,4}", comment_names=["ARLHS"], icon="fa-house-flood-water", ), ActivityName.ILLW: Activity( name=ActivityName.ILLW, description="International Lighthouse & Lightship Weekend", sig_type=ActivityType.EVENT, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.LIGHTHOUSE, ref_regex=r"[A-Z]{2}\d{4}", comment_names=["ILLW"], icon="fa-house-flood-water", ), ActivityName.MOTA: Activity( name=ActivityName.MOTA, description="Mills on the Air", sig_type=ActivityType.EVENT, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.MILL, ref_regex=r"X\d{4,6}", comment_names=["MOTA"], icon="fa-fan", ), ActivityName.SIOTA: Activity( name=ActivityName.SIOTA, description="Silos on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.SILO, ref_regex=r"[A-Z]{2}\-[A-Z]{3}\d", comment_names=["SIOTA"], icon="fa-wheat-awn", alerts_possible=True, ), ActivityName.WCA: Activity( name=ActivityName.WCA, description="World Castles Award", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.CASTLE, ref_regex=r"[A-Z0-9]{1,3}\-\d{5}", comment_names=["WCA"], icon="fa-chess-rook", ), ActivityName.ZLOTA: Activity( name=ActivityName.ZLOTA, description="New Zealand on the Air", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=None, ref_regex=r"ZL[A-Z]/[A-Z]{2}\-\d{3,4}", comment_names=["ZLOTA"], icon="fa-kiwi-bird", region_flag="🇳🇿", alerts_possible=True, ), ActivityName.WOTA: Activity( name=ActivityName.WOTA, description="Wainwrights on the Air", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.SUMMIT, ref_regex=r"[A-Z]{3}-[0-9]{2}", comment_names=["WOTA"], icon="fa-w", region_flag="🇬🇧", alerts_possible=True, ), ActivityName.BOTA: Activity( name=ActivityName.BOTA, description="Beaches on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.BEACH, comment_names=[], icon="fa-umbrella-beach", alerts_possible=True, ), ActivityName.KRMNPA: Activity( name=ActivityName.KRMNPA, description="Keith Roget Memorial National Parks Award", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.PARK, ref_regex=r"VKFF\-\d{4}", comment_names=["KRMNPA"], icon="fa-earth-oceania", region_flag="🇦🇺", alerts_possible=True, ), ActivityName.SANPCPA: Activity( name=ActivityName.SANPCPA, description="South Australian National Parks and Conservation Parks Award", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.PARK, ref_regex=r"VKFF\-\d{4}", comment_names=["SANPCPA"], icon="fa-earth-oceania", region_flag="🇦🇺", alerts_possible=True, ), ActivityName.LLOTA: Activity( name=ActivityName.LLOTA, description="Lagos y Lagunas on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.LAKE, ref_regex=r"LL[A-Z]{2}\-\d{4}", comment_names=["LLOTA"], icon="fa-water", alerts_possible=True, ), ActivityName.TOWERS: Activity( name=ActivityName.TOWERS, description="Towers on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.TOWER, ref_regex=r"[A-Z]{2,3}R\-\d{4}", comment_names=["TOTA"], icon="fa-tower-observation", ), ActivityName.TILES: Activity( name=ActivityName.TILES, description="Tiles on the Air", sig_type=ActivityType.ADVENTURE, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.GRID, ref_regex=r"[A-Za-z]{2}[0-9]{2}[A-Za-z]{2}", comment_names=[], icon="fa-square", ), ActivityName.RADAR_RALLY: Activity( name=ActivityName.RADAR_RALLY, description="RaDAR Rally", sig_type=ActivityType.EVENT, has_refs=False, refs_globally_unique=False, comment_names=["RaDAR"], icon="fa-headset", ), ActivityName.WAB: Activity( name=ActivityName.WAB, description="Worked All Britain", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.GRID, ref_regex=r"[A-Z]{1,2}[0-9]{2}", comment_names=["WAB"], icon="fa-table-cells-large", region_flag="🇬🇧", ), ActivityName.WAI: Activity( name=ActivityName.WAI, description="Worked All Ireland", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.GRID, ref_regex=r"[A-Z][0-9]{2}", comment_names=["WAI"], icon="fa-table-cells-large", region_flag="🇮🇪", ), ActivityName.DMF: Activity( name=ActivityName.DMF, description="Diplôme des Moulins de France", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.MILL, comment_names=["DMF"], icon="fa-fan", region_flag="🇫🇷", ), ActivityName.DME: Activity( name=ActivityName.DME, description="Diploma Municipios de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.TOWN, ref_regex=r"DME[\- ]\d{3,5}", comment_names=["DME"], icon="fa-building", region_flag="🇪🇸", ), ActivityName.FEA: Activity( name=ActivityName.FEA, description="Diploma Faros de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.LIGHTHOUSE, # FEA references are technically [DE]\-\d{4}(\.\d)? but spotters always seem to miss out the D- or E- # prefix and just use FEA-1234 or FEA 1234, so allow for that. The FEA activity ref data provider adds both # forms to the database. ref_regex=r"([DE]|FEA)[\- ]\d{4}(\.\d)?", comment_names=["FEA"], icon="fa-house-flood-water", region_flag="🇪🇸", ), ActivityName.DMUE: Activity( name=ActivityName.DMUE, description="Diploma Museos de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.BUILDING, ref_regex=r"MUE[A-Z]{2}-\d{3}", comment_names=["DMUE"], icon="fa-landmark", region_flag="🇪🇸", ), ActivityName.DMVE: Activity( name=ActivityName.DMVE, description="Diploma Monumentos y Vestigios de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.BUILDING, ref_regex=r"MV[A-Z]{1,2}-\d{4}", comment_names=["DMVE"], icon="fa-monument", region_flag="🇪🇸", ), ActivityName.DCE: Activity( name=ActivityName.DCE, description="Diploma Castillos de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.CASTLE, ref_regex=r"C[A-Z]{1,2}-\d{3}", comment_names=["DCE"], icon="fa-chess-rook", region_flag="🇪🇸", ), ActivityName.DEFE: Activity( name=ActivityName.DEFE, description="Diploma Estaciones de Ferrocarril de España", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.BUILDING, ref_regex=r"EF[A-Z]{1,2}-\d{3}", comment_names=["DEFE"], icon="fa-train", region_flag="🇪🇸", ), ActivityName.DTMBA: Activity( name=ActivityName.DTMBA, description="Diploma Teatri Musei e Belle Arti", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.BUILDING, ref_regex=r"I-?[0-9]{3,4}\s?[A-Z]{2}", comment_names=["DTMBA"], icon="fa-landmark", region_flag="🇮🇹", ), ActivityName.BIWOTA: Activity( name=ActivityName.BIWOTA, description="British Inland Waterways on the Air", sig_type=ActivityType.EVENT, has_refs=False, refs_globally_unique=False, ref_type=ActivityRefType.WATERWAY, comment_names=["BIWOTA"], icon="fa-ship", region_flag="🇬🇧", ), ActivityName.COTA: Activity( name=ActivityName.COTA, description="Castles on the Air", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.CASTLE, ref_regex=r"[A-Z]{3}\-[0-9]{3,5}", comment_names=["COTA"], icon="fa-chess-rook", region_flag="🇩🇪", ), ActivityName.PGA: Activity( name=ActivityName.PGA, description="Polish Gmina Award", sig_type=ActivityType.REGIONAL, has_refs=True, refs_globally_unique=False, ref_type=ActivityRefType.REGION, ref_regex=r"[A-Z]{2}[0-9]{2}", comment_names=["PGA"], icon="fa-g", region_flag="🇵🇱", ), ActivityName.TOILETS: Activity( name=ActivityName.TOILETS, description="Toilets on the Air", sig_type=ActivityType.EVENT, has_refs=True, refs_globally_unique=True, ref_type=ActivityRefType.TOILET, ref_regex=r"T\-[0-9]{2}", comment_names=[], icon="fa-toilet", region_flag="🏴‍☠️", ), }