aula icon indicating copy to clipboard operation
aula copied to clipboard

Search/replace in event title

Open goegsig opened this issue 9 months ago • 0 comments

Jeg har længe ønsket at kalenderen ikke skriver MAT men Matamatik, og Dansk istedet for DAN. Det samme gælder for Lærenes navne. Jeg har længe forsøgt at lave rettelsen inde in Home Assistent men så slog det mig at det måske kunne lade sig gøre i forbindelse med at data hentes. Der for har jeg lavet følgende rettelse i calander.py Det løser mit problem. Men den dag du retter koden vil min løsning ikke virke mere. Er der en mulighed for det på en nem måde bliver implemeteret.

Tak for et super godet produkt.

def parseCalendarData(self,i=None):
        import json
        try:
            with open('skoleskema.json', 'r') as openfile:
                _data = json.load(openfile)
            data = json.loads(_data)
        except:
            _LOGGER.warn("Could not open and parse file skoleskema.json!")
            return False
            
        # RLG Define mapping of abbreviations to full forms
        subject_mapping = {
            "MAD": "Madkundskab",
            "HIS": "Historie",
            "ENG": "Engelsk",
            "DAN": "Dansk",
            "MAT": "Matamatik",
            "BIL": "Billedekunskab",
            "MB":  "Morgen Bånd",
            "N/T": "NaturTeknik",
            "TYS": "Tysk",
            "FRA": "Fransk",
            "IDR": "Idræt",
            "KRI": "Kristendom",
            "ELLE": "Elev Lære",
            "PÆP": "Pedagoisk",
            "MUS": "Musik"
        }    
        # RLG Define the teacher mapping dictionary
        teacher_mapping = {
            "CJ": "Charlotte ",
            "MFU": "Maja ",
            "JD": "Jeppe ",
            "AHS": "Anne ",
            "HSC": "Henrik ",
            "AN": "Anna ",
            "REA": "Rikke ",
            "MIN": "Marlene ",
            "PW": "Per ",
            "FDH": "Frederik ",
            "LD": "Lise ",
            "SK": "Signe ",
            "J": "Rune ",
            "MS": "Mie ",
            "UB": "Ulla "
        }    
            
            
        events = []
        _LOGGER.debug("Parsing skoleskema.json...")
        for c in data['data']:
            if c['type'] == "lesson" and c['belongsToProfiles'][0] == self._childid:
                summary = c['title']
                # RLG Replace abbreviation with full form
                summary = subject_mapping.get(summary, summary)
                #
                start = datetime.strptime(c['startDateTime'],"%Y-%m-%dT%H:%M:%S%z")
                end = datetime.strptime(c['endDateTime'],"%Y-%m-%dT%H:%M:%S%z")
                vikar = 0
                for p in c['lesson']['participants']:
                    if p['participantRole'] == 'substituteTeacher':
                        teacher = "VIKAR: "+p['teacherName']
                        vikar = 1
                        break
                if vikar == 0:
                    try:
                        teacher = c['lesson']['participants'][0]['teacherInitials']
                        # RLG Replace teacher initials with full name if available in the mapping
                        teacher = teacher_mapping.get(teacher_initials, teacher_initials)
                        #
                    except:
                        try:
                            _LOGGER.debug("Lesson json dump"+str(c['lesson']))
                            teacher = c['lesson']['participants'][0]['teacherName']
                        except:
                            _LOGGER.debug("Could not find any teacher information for "+summary+" at "+str(start))
                            teacher = ""
                event = CalendarEvent(
                    summary=str(summary) + ", " + str(teacher),
                    start = start,
                    end = end,
                )
                events.append(event)
        return events

goegsig avatar Apr 22 '25 10:04 goegsig