Ankündigung

Einklappen
Keine Ankündigung bisher.

iCal

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [callidomus] iCal

    Hallo,

    hat schon jemand es geschafft, einen Kalender über eine iCal Datei einzubinden?

    Gruß
    Thomas

    #2
    Hallo Thomas,

    logisch. Ich hoffe meine Logik erschlägt dich nicht. Sie kombiniert verschieden Kalender der nächsten beiden Tage.

    Irgendwann kann ich das vielleicht vereinfachen. Ein einzelner Kalender ist aber einfacher.

    Bis bald

    Marcus

    Code:
    heute = cd.now().date()
    morgen = heute + datetime.timedelta(days=1)
    
    # Kalender
    
    muell = cd.ical('http://XXX/muell.ics')
    ferien = cd.ical('http://XXX/ferien.ics')
    arbeit = cd.ical('https://XXXX/cal.php/calendars/marcus/arbeit?export', auth='digest', username='marcus', password='XXXX', check_hostname=False)
    marcus = cd.ical('https://XXXX/cal.php/calendars/marcus/privat?export', auth='digest', username='marcus', password='XXXX', check_hostname=False)
    familie = cd.ical('https://XXXX/cal.php/calendars/familie/allgemein?export', auth='digest', username='familie', password='XXXX', check_hostname=False)
    kinder = cd.ical('https://XXXX/cal.php/calendars/familie/kinder?export', auth='digest', username='familie', password='XXX', check_hostname=False)
    
    
    def _tag(tag, datum, feiertag):
        kalender = []
        if datum in muell:
            for event in muell[datum]:
                event['Icon'] = 'cd/trash'
                if event['Summary'] == 'Restmüll':
                    event['Class'] = 'muellRest'
                elif event['Summary'] == 'Papier':
                    event['Class'] = 'muellPapier'
            kalender.extend(muell[datum])
    
        if feiertag():
            dt = datetime.datetime.combine(datum, datetime.time(tzinfo=datetime.timezone.utc))
            kalender.append({'Summary': feiertag(), 'Icon': 'cd/holiday', 'Class': 'holiday', 'Start': dt, 'End': dt})
    
        if datum in kinder:
            for event in kinder[datum]:
                event['Icon'] = 'cd/children'
            kalender.extend(kinder[datum])
    
        if datum in familie:
            for event in familie[datum]:
                event['Icon'] = 'cd/family'
            kalender.extend(familie[datum])
    
        if datum in ferien:
            for event in ferien[datum]:
                event['Icon'] = 'cd/holiday'
                event['Class'] = 'ferien'
            kalender.extend(ferien[datum])
    
        if datum in marcus:
            for event in marcus[datum]:
                event['Icon'] = 'cd/man'
            kalender.extend(marcus[datum])
    
        if datum in arbeit:
            for event in arbeit[datum]:
                if event['Summary'] == 'Stammtisch':
                    event['Icon'] = 'cd/wine'
                else:
                    event['Icon'] = 'cd/briefcase'
                event['Class'] = 'arbeit'
            kalender.extend(arbeit[datum])
    
        kalender.sort(key=lambda e: e['Start'])
        for event in kalender:
            if 'Start' in event and 'End' in event:
                if event['Start'].strftime("%H%M%S") == "000000" and event['End'].strftime("%H%M%S") == "000000":
                    del event['Start']
                    del event['End']
                else:
                    if event['Start'].date() < datum:
                        del event['Start']
                    if event['End'].date() > datum:
                        del event['End']
        tag.kalender(kalender)
    
    _tag(cd.heute, heute, cd.location.today.holiday)
    _tag(cd.morgen, morgen, cd.location.tomorrow.holiday)

    Kommentar


      #3
      Hallo Marcus,

      nö, ist soweit verständlich. Ich bin mit der Darstellung des Kalenders noch nicht so zufrieden, deswegen habe ich noch ein paar Fragen:

      Du weist den Events in deinem Script Klassen (event['Class']) zu. Ich nehme an, da geht um eine CSS-Klasse, um den Termin entsprechend einzufärben / zu formatieren? Falls ich richtig liege, an welcher Stelle kann ich diese Formatierung bei mir ins CSS einfügen?

      Bei mir zeigt er den Titel des Kalender-Eintrags an (aus dem offiziellen Abfall-Kalender) und darunter "Reminder" - wo kommt das her bzw. welches Feld zeigt das Kalender-Widget da an? Der Inhalt des Eintrags ist leer, es gibt nur Titel, Ort und Datum.

      Gruß
      Thomas
      Zuletzt geändert von Stereofeld; 02.06.2016, 23:37. Grund: Einiges habe ich schon selber lösen können ...

      Kommentar


        #4
        Hallo Thomas,

        der Reminder steht bei der Description drin. Das wird von den Kalenderprogrammen für einen Reminder genutzt.

        Code:
        del event['Description']
        Eigene CSS Einträge kannst Du unter /data/callidomus/local/visu/static/css/custom.styl vornehmen.

        Bis bald

        Marcus


        Kommentar


          #5
          Super! Passt.

          Danke
          Thomas

          Kommentar


            #6
            Dann rück mal Bilder raus

            Kommentar


              #7
              Hallo Marcus,

              könntest du vielleicht kurz stichpunktartig beschreiben wie man nur einen Kalender einbindet ?

              Für mich ist es leider noch nicht so ganz klar

              Danke und Gruß
              Jörg

              Kommentar


                #8
                Hallo Jörg,

                klar, gerne:

                Code:
                heute = cd.now().date() # Das Datum von heute
                muell = cd.ical('http://XXX/muell.ics') # holt und parst die Calenderdatei
                cd.meinkalender(muell.get(heute), []) # wenn heute im Kalender ist werden die Events in cd.meinkalender geschrieben
                                                                            # ansonsten wird der Kalender leer gefüllt.
                Bis bald

                Marcus

                Kommentar


                  #9
                  Ich hatte noch nicht mit ics Dateien gemacht. Bekommt man die irgentwie aus dem Googel Kalender raus?
                  VG
                  Jürgen

                  Kommentar


                    #10
                    ja, da gibt es irgendwo einen ics link.

                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Das einzige was ich bei googel gefunden habe ist ein export als zip...mit welches pc/cloud program wurde es den getestet? Ich muss nicht unbedingt googel benutzen.
                      vg
                      Jürgen

                      Kommentar


                        #12
                        Hallo,

                        ich habe mal kurz gegoogelt: https://support.google.com/calendar/answer/37083

                        Das wurde auch schon getestet. Dazu muss man seine Kalender "veröffentlichen".

                        Alternativ kann man z.B. Beikam verwenden. Das läuft bei mir auf meinem NAS.

                        Bis bald

                        Marcus

                        Kommentar


                          #13
                          Zitat von heckmannju Beitrag anzeigen
                          Dann rück mal Bilder raus
                          Naja, ist ziemlich unspektakulär. Aber wir benutzen mehrere OwnCloud-Kalender und diese habe ich auch alle eingebunden und jeweils mit der entsprechenden Farbe (grün = Familie) markiert. Die Mülltonnen sind dann auch jeweils in der entsprechenden Farbe markiert (blau = Papier usw.).

                          Gruß
                          Thomas
                          You do not have permission to view this gallery.
                          This gallery has 1 photos.
                          Zuletzt geändert von Stereofeld; 03.06.2016, 22:33.

                          Kommentar


                            #14
                            Hallo,
                            also meinen Google Kalender bringe ich nicht zum laufen.

                            Ich erhalte derzeit folgenden Fehler im Log:

                            2016-06-19 14:05:33 WARNING kalender-code Item kalender: problem evaluating heute = cd.now().date()
                            muell = cd.ical('https://calendar.google.com/calendar/ical/%23daynum%40group.v.calendar.google.com/public/basic.ics')
                            cd.meinkalender(muell.get(heute), []): 'CallidomusCore' object has no attribute 'ical'



                            Vorgehen:
                            Ich habe ein Item "Kalender" wie im Demoprojekt angelegt.
                            Quellcode so wie oben eingetragen:

                            heute = cd.now().date()
                            muell = cd.ical('https://calendar.google.com/calendar/ical/%23daynum%40group.v.calendar.google.com/public/basic.ics')
                            cd.meinkalender(muell.get(heute), [])

                            Der ics-Link auf meinen Kalender funktioniert. Getestet mit Outlook.
                            Der Kalender in Calli klappt nicht.
                            Hat jemand eine Idee?
                            Zugriff erfolgt auf einen öffentlichen Google-Kalender der den Jahrestag anzeigt. Es steht also jeden Tag was drin.

                            Hier noch mal der Link zum testen

                            https://calendar.google.com/calendar...blic/basic.ics


                            Gruß
                            MarcusW.

                            Kommentar


                              #15
                              Hi,
                              ich hab so ein ähnliches Porblem bei mir wird das log im sekundentakt vollgemüllt.

                              2016-06-19 16:01:22 DEBUG kalender.muell-code Triggering kalender.muell-code - by: [] source: None dest: None value: {'dest': None, 'value': [], 'caller': []
                              2016-06-19 16:01:22 DEBUG kalender.muell-code Triggering kalender.muell-code - by: [] source: None dest: None value: {'dest': None, 'value': [], 'caller': []
                              2016-06-19 16:01:22 DEBUG kalender.muell-code Triggering kalender.muell-code - by: [] source: None dest: None value: {'dest': None, 'value': [], 'caller': []
                              2016-06-19 16:01:23 DEBUG kalender.muell-code Triggering kalender.muell-code - by: [] source: None dest: None value: {'dest': None, 'value': [], 'caller': []


                              Vg
                              Jürgen

                              Kommentar

                              Lädt...
                              X