Skip to content

Commit

Permalink
Ajout de moyennes
Browse files Browse the repository at this point in the history
  • Loading branch information
Giga77 committed Oct 17, 2024
1 parent 5fc1511 commit ae271ea
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 0 deletions.
6 changes: 6 additions & 0 deletions custom_components/ecole_directe/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,12 @@ async def _async_update_data(self) -> dict[Platform, dict[str, Any]]:
year_data,
self.hass.config.config_dir,
)
disciplines = grades_evaluations["disciplines"]
self.data[f"{eleve.get_fullname_lower()}_disciplines"] = disciplines
for discipline in disciplines:
self.data[f"{eleve.get_fullname_lower()}_{discipline["name"]}"] = discipline

self.data[f"{eleve.get_fullname_lower()}_moyenne_generale"] = grades_evaluations["moyenne_generale"]

self.data[f"{eleve.get_fullname_lower()}_grades"] = (
grades_evaluations["grades"]
Expand Down
43 changes: 43 additions & 0 deletions custom_components/ecole_directe/ecole_directe_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -495,10 +495,32 @@ def get_grades_evaluations(token, eleve, annee_scolaire, config_path):

response = {}
response["grades"] = []
response["moyenne_generale"] = {}
response["evaluations"] = []
response["disciplines"] = []
data = json_resp["data"]
index1 = 0
index2 = 0
if "periodes" in data:
data["periodes"].sort(key=operator.itemgetter("dateDebut"))
for periode_json in data["periodes"]:
if datetime.now() < datetime.strptime(periode_json["dateDebut"], "%Y-%m-%d"):
continue
if datetime.now() > datetime.strptime(periode_json["dateFin"], "%Y-%m-%d"):
continue
response["disciplines"] = get_disciplines_periode(periode_json)
if periode_json["ensembleMatieres"]:
response["moyenne_generale"] = {
"moyenneGenerale":periode_json["ensembleMatieres"]["moyenneGenerale"],
"moyenneClasse":periode_json["ensembleMatieres"]["moyenneClasse"],
"moyenneMin":periode_json["ensembleMatieres"]["moyenneMin"],
"moyenneMax":periode_json["ensembleMatieres"]["moyenneMax"],
"dateCalcul":periode_json["ensembleMatieres"]["dateCalcul"],
}

break


if "notes" in data:
data["notes"].sort(key=operator.itemgetter("date"))
data["notes"].reverse()
Expand Down Expand Up @@ -545,6 +567,27 @@ def get_grade(data):
"elements_programme": elements_programme,
}

def get_disciplines_periode(data):
"""get periode information"""

try:
disciplines = []
if "ensembleMatieres" in data:
if "disciplines" in data["ensembleMatieres"]:
for discipline_json in data["ensembleMatieres"]["disciplines"]:
discipline = {
"name": discipline_json["discipline"].lower(),
"moyenne": discipline_json["moyenne"],
"moyenneClasse": discipline_json["moyenneClasse"],
"moyenneMin": discipline_json["moyenneMin"],
"moyenneMax": discipline_json["moyenneMax"],
"appreciations":discipline_json["appreciations"],
}
disciplines.append(discipline)
return disciplines
except Exception as ex:
_LOGGER.warning("get_periode: %s", ex)
raise

def get_evaluation(data):
"""get evaluation information"""
Expand Down
46 changes: 46 additions & 0 deletions custom_components/ecole_directe/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ async def async_setup_entry(
if DEBUG_ON or "NOTES" in eleve.modules:
sensors.append(EDGradesSensor(coordinator, eleve))
sensors.append(EDEvaluationsSensor(coordinator, eleve))
disciplines = coordinator.data[f"{eleve.get_fullname_lower()}_disciplines"]
for discipline in disciplines:
sensors.append(EDDisciplineSensor(coordinator, eleve,discipline["name"],discipline["moyenne"]))
moyenne = coordinator.data[f"{eleve.get_fullname_lower()}_moyenne_generale"]
sensors.append(EDMoyenneSensor(coordinator, eleve,moyenne["moyenneGenerale"]))

if DEBUG_ON or "VIE_SCOLAIRE" in eleve.modules:
sensors.append(EDAbsencesSensor(coordinator, eleve))
sensors.append(EDRetardsSensor(coordinator, eleve))
Expand Down Expand Up @@ -256,6 +262,25 @@ def extra_state_attributes(self):
"grades": attributes,
}

class EDDisciplineSensor(EDGenericSensor):
"""Representation of a ED sensor."""

def __init__(self, coordinator: EDDataUpdateCoordinator, eleve: EDEleve, nom, note) -> None:
"""Initialize the ED sensor."""
super().__init__(coordinator, nom, eleve, note)

@property
def extra_state_attributes(self):
"""Return the state attributes."""
discipline = self.coordinator.data[self._name]

return {
"updated_at": self.coordinator.last_update_success_time,
"moyenneClasse": discipline["moyenneClasse"],
"moyenneMin": discipline["moyenneMin"],
"moyenneMax": discipline["moyenneMax"],
"appreciations":discipline["appreciations"]
}

class EDLessonsSensor(EDGenericSensor):
"""Representation of a ED sensor."""
Expand Down Expand Up @@ -331,6 +356,27 @@ def extra_state_attributes(self):

return result

class EDMoyenneSensor(EDGenericSensor):
"""Representation of a ED sensor."""

def __init__(self, coordinator: EDDataUpdateCoordinator, eleve: EDEleve, note) -> None:
"""Initialize the ED sensor."""
super().__init__(coordinator, "moyenne_generale", eleve, note)

@property
def extra_state_attributes(self):
"""Return the state attributes."""
moyenne = self.coordinator.data[
f"{self._child_info.get_fullname_lower()}_moyenne_generale"
]

return {
"updated_at": self.coordinator.last_update_success_time,
"moyenneClasse": moyenne["moyenneClasse"],
"moyenneMin": moyenne["moyenneMin"],
"moyenneMax": moyenne["moyenneMax"],
"dateCalcul": moyenne["dateCalcul"],
}

class EDEvaluationsSensor(EDGenericSensor):
"""Representation of a ED sensor."""
Expand Down

0 comments on commit ae271ea

Please sign in to comment.