Skip to content

Commit 795dd28

Browse files
authored
Add support for Labs Merit Badges (#2)
1 parent 12b004a commit 795dd28

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

scout_anki/deck.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def create_merit_badge_model(model_name: str) -> genanki.Model:
2929
{"name": "Name"},
3030
{"name": "Description"},
3131
{"name": "EagleRequired"},
32+
{"name": "LabNote"},
3233
]
3334

3435
# Front template (Image → Name + Description)
@@ -44,6 +45,7 @@ def create_merit_badge_model(model_name: str) -> genanki.Model:
4445
<div style="text-align: center;">
4546
<h2>{{Name}} {{#EagleRequired}}<span class="eagle-badge">🦅</span>{{/EagleRequired}}</h2>
4647
<p>{{Description}}</p>
48+
{{#LabNote}}<p class="lab-note">{{LabNote}}</p>{{/LabNote}}
4749
</div>
4850
"""
4951

@@ -91,6 +93,12 @@ def create_merit_badge_model(model_name: str) -> genanki.Model:
9193
font-size: 0.9em;
9294
margin-left: 5px;
9395
}
96+
97+
.lab-note {
98+
color: #6b7280;
99+
font-size: 0.95em;
100+
margin-top: 8px;
101+
}
94102
"""
95103

96104
return genanki.Model(
@@ -117,14 +125,17 @@ def create_merit_badge_note(
117125
guid = genanki.guid_for(f"{badge_slug}|{image_basename}")
118126

119127
# Prepare fields - put complete img tag with styling in the field
128+
lab_note = "Test Lab Merit Badge" if badge.is_lab else ""
120129
fields = [
121130
f'<img src="{image_name}" style="max-width: 85%; height: auto;">', # Image with styling
122131
badge.name, # Name
123132
badge.description or "", # Description
124133
"1" if badge.eagle_required else "", # EagleRequired (non-empty for true)
134+
lab_note,
125135
]
126136

127-
return genanki.Note(model=model, fields=fields, guid=guid)
137+
tags = ["test-lab"] if badge.is_lab else []
138+
return genanki.Note(model=model, fields=fields, guid=guid, tags=tags)
128139

129140

130141
def create_merit_badge_deck(

scout_anki/merit_badges/schema.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class MeritBadge:
1414
image_filename: str | None = None
1515
source: str | None = None
1616
eagle_required: bool = False
17+
is_lab: bool = False
1718

1819

1920
def normalize_badge_data(data: Any) -> list[MeritBadge]:
@@ -84,6 +85,7 @@ def normalize_badge_data(data: Any) -> list[MeritBadge]:
8485

8586
# Extract eagle required status
8687
eagle_required = bool(item.get("is_eagle_required", False))
88+
is_lab = bool(item.get("is_lab", False))
8789

8890
badge = MeritBadge(
8991
name=name,
@@ -92,6 +94,7 @@ def normalize_badge_data(data: Any) -> list[MeritBadge]:
9294
image_filename=image_filename,
9395
source="JSON",
9496
eagle_required=eagle_required,
97+
is_lab=is_lab,
9598
)
9699
badges.append(badge)
97100

0 commit comments

Comments
 (0)