src.awards.models

Domain models for awards (OB3 AchievementCredential).

Currently a pragmatic, simple version of a full OpenbadgeCredential.

The full OpenBadgeCredential, with all possible fields, and nested objects, is described in https://www.imsglobal.org/spec/ob/v3p0/#org-1edtech-ob-v3p0-model-0 Starting at AchiementCredential, which is our Award.

 1"""
 2Domain models for awards (OB3 AchievementCredential).
 3
 4Currently a pragmatic, simple version of a full OpenbadgeCredential.
 5
 6The full OpenBadgeCredential, with all possible fields, and nested
 7objects, is described in https://www.imsglobal.org/spec/ob/v3p0/#org-1edtech-ob-v3p0-model-0
 8Starting at AchiementCredential, which is our Award.
 9"""
10
11from dataclasses import dataclass
12
13
14@dataclass
15class Criteria:
16    """Criteria for earning an achievement."""
17
18    narrative: str
19
20
21@dataclass
22class Achievement:
23    """An achievement within an award."""
24
25    id: str
26    type: list[str]
27    criteria: Criteria
28    description: str
29    name: str
30
31
32@dataclass
33class AchievementSubject:
34    """The subject of an AchievementCredential."""
35
36    id: str
37    type: list[str]
38    achievement: Achievement
39
40
41@dataclass
42class Issuer:
43    """The issuer of an AchievementCredential."""
44
45    id: str
46    type: list[str]
47    name: str
48
49
50@dataclass
51class Award:
52    """Minimal OB3 AchievementCredential (unsigned)."""
53
54    id: str
55    type: list[str]
56    name: str
57    issuer: Issuer
58    validFrom: str
59    credentialSubject: AchievementSubject
@dataclass
class Criteria:
15@dataclass
16class Criteria:
17    """Criteria for earning an achievement."""
18
19    narrative: str

Criteria for earning an achievement.

Criteria(narrative: str)
narrative: str
@dataclass
class Achievement:
22@dataclass
23class Achievement:
24    """An achievement within an award."""
25
26    id: str
27    type: list[str]
28    criteria: Criteria
29    description: str
30    name: str

An achievement within an award.

Achievement( id: str, type: list[str], criteria: Criteria, description: str, name: str)
id: str
type: list[str]
criteria: Criteria
description: str
name: str
@dataclass
class AchievementSubject:
33@dataclass
34class AchievementSubject:
35    """The subject of an AchievementCredential."""
36
37    id: str
38    type: list[str]
39    achievement: Achievement

The subject of an AchievementCredential.

AchievementSubject(id: str, type: list[str], achievement: Achievement)
id: str
type: list[str]
achievement: Achievement
@dataclass
class Issuer:
42@dataclass
43class Issuer:
44    """The issuer of an AchievementCredential."""
45
46    id: str
47    type: list[str]
48    name: str

The issuer of an AchievementCredential.

Issuer(id: str, type: list[str], name: str)
id: str
type: list[str]
name: str
@dataclass
class Award:
51@dataclass
52class Award:
53    """Minimal OB3 AchievementCredential (unsigned)."""
54
55    id: str
56    type: list[str]
57    name: str
58    issuer: Issuer
59    validFrom: str
60    credentialSubject: AchievementSubject

Minimal OB3 AchievementCredential (unsigned).

Award( id: str, type: list[str], name: str, issuer: Issuer, validFrom: str, credentialSubject: AchievementSubject)
id: str
type: list[str]
name: str
issuer: Issuer
validFrom: str
credentialSubject: AchievementSubject