Re: Nutzen der COM-Schnittstelle von Zope aus

Patrick Gerken <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <[email protected]>
Hi,

auf dem Forum hast du wahrscheinlich keine Antwort bekommen weil
die Leser dachten es waere eine Zope Frage und damit kennen sich
nicht so viele aus.

Hier stellst du nun eine win32 Funktionalitaeten und riskierst wieder
keine Antworten zu bekommen weil hier vielleicht nicht so viele
die win32 Schnittstelle kennen.

Ich wuerde dir gerne weiterhelfen, weiss aber die Antwort nicht. Falls
hier niemand anderes eine Antwort weiss, stell die Frage, wie man
Outlook aus python starten kann, nochmal mit passendem subject
im Forum. Oder falls du keine Angst vor Englisch hast, probier mal
stackoverflow:
http://stackoverflow.com/search?q=outlook+python


MfG

      Patrick

p.s.: Hast du vielleicht mal die Holzhammer Methode probiert,
vorher einfach mittels os.system() Outlook zu starten?


2009/11/23 Iffland Stefan <[email protected]>:
> Hallo zusammen,
>
>
>
> ich habe mein Problem unter
> http://www.python-forum.de/topic-20807.html?sid=495671c5e331f0c2b566b681e04b0959
> schon einmal
>
> etwas detailiert gepostet. (mit Code-Beispiel)
>
>
>
> Meine erste Nachricht an die Liste. Hoffe, dass ich hier ein paar Anregungen
> bekomme.
>
>
>
> Also es geht um eine etwas veraltete webbasierte Unternehmensanwendung, die
> mit Hilfe von Zope realisiert wurde. Die Anwendung
>
> wurde mittlerweile von Zope 2.4.2 auf Zope 2.11.4 migriert und läuft wieder.
> Verwendet werden neben den Standard-Produkten
>
> NFGnav, ZPyODBCDA und experimentell COMObject. Die Anwendung wird zum
> Erfassen von Abwesenheiten (Urlaub, Gleitzeit, etc.)
>
> und einer ggf. notwendigen Genehmigung durch Vorgesetzte verwendet. In der
> Hauptsache bildet die Anwendung also eine
>
> An-/Abwesenheitsübersicht ab. Die Mitarbeiterdatensätze und
> Abwesenheitsdatensätze werden in einer SQL-Server DB gespeichert.
>
>
>
> Da sich der Python-Kern der Installerversion von Zope 2.11.4 schlecht
> erweitern lässt und zum Beispiel PythonWin nicht nutzbar ist um
>
> die COM-Schnittstellen zu generieren, bin ich nach langen Versuchen nun bei
> Zope 2.12.1 angekommen. Dieser läuft zunächst nur auf
>
> meinem Entwicklungsrechner (Windows XP), aber auch dort läuft die
> Applikation soweit. Was ich nun abbilden muss: Wenn ein Mitarbeiter
>
> im Portal eine Abwesenheit erfasst, soll an seine Kollegen statt einer
> Email-Benachrichtigung eine Besprechungsanfrage für Outlook
>
> versendet werden. Das möchte ich über die COM-Schnittstelle realisieren.
> Zope wird dazu als Windows-Dienst eingerichtet und mit
>
> einem bestimmten Benutzer gestartet. Auf diese Weise wird sichergestellt,
> dass Outlook auch mit den Einstellungen dieses Benutzers
>
> gestartet wird. Der Dummy-User hat also irgendwann einen Kalender mit
> sämtlichen Abwesenheiten aller MA und man könnte so auch
>
> wieder über COM existierende Einträge überarbeiten und löschen. Soweit die
> Theorie. ;-)
>
>
>
> Von der Python-Konsole aus funktioniert folgendes Skript ohne Probleme,
> allerdings nur, wenn Outlook bereits geöffnet ist.
>
>
>
> def besprechung(subject, start_year, start_month, start_day, start_hour="0",
> start_minute="0", debug=False):
>
>     import win32com.client
>
>     import pythoncom
>
>
>
>     pythoncom.CoInitialize()
>
>     o = win32com.client.gencache.EnsureDispatch("Outlook.Application")
>
>
>
>     appointment = o.CreateItem(win32com.client.constants.olAppointmentItem)
>
>     try:
>
>         appointment.Start = start_year + "-" + start_month + "-" + start_day
> + " " + start_hour + ":" + start_minute
>
>         appointment.AllDayEvent = True
>
>         appointment.MeetingStatus = win32com.client.constants.olMeeting
>
>         appointment.Subject = "Urlaubsportal: " + subject
>
>         appointment.ReminderSet = False
>
>         appointment.ResponseRequested = False
>
>         myRequiredAttendee = appointment.Recipients.Add("USERXY")
>
>         myRequiredAttendee.Type = win32com.client.constants.olRequired # 1 =
> erforderlich
>
>         #myOptionalAttendee = appointment.Recipients.Add("Bachmann Eric")
>
>         #myOptionalAttendee.Type = 2 # 2 = optional
>
>         appointment.Send()
>
>         appointment.Save()
>
>         print "Keine Fehler"
>
>     finally:
>
>         appId = appointment.EntryID
>
>         del o
>
>         try:
>
>             pythoncom.CoUninitialize()
>
>         except:
>
>             pass
>
>         if debug:
>
>             return "Objekt geloescht! EntryID:" + appId
>
>
>
>     return appId
>
>
>
>
>
> print besprechung(subject="Max Muster hat frei", start_year="2009",
> start_month="11", start_day="12", debug=True)
>
>
>
> Python scheint also nicht in der Lage zu sein, eine Outlook-Instanz zu
> starten. Wenn das Skript auf einem Server laufen soll, kann ich jedoch nicht
> sicherstellen,
>
> dass Outlook immer schon geöffnet ist. Andererseits, wenn ich das Skript –
> leicht modifiziert – in Zope als External Method einbinde und starte, wenn
> Outlook
>
> läuft, dann bekomme ich eine Windows-Fehlermeldung (Fehler beim
> Speicherzugriff) und darf Zope neu starten.
>
>
>
> Rufe ich die externe Methode auf, wenn Outlook geschlossen ist, scheitert
> Zope beim Hinzufügen der Empfänger (Zeile 22). Nun bin ich für jeden Hinweis
>
> dankbar, was ich beachten muss und wo der Fehler liegen könnte. Ich bin neu
> in Python und entsprechend dürftig ist mein Wissen teils noch.
>
>
>
> Vielen Dank und Viele Grüße
>
> Stefan
>
>
>
> Stefan Iffland
>
> Telefon +49 (7243) 570-1681
> E-Mail [email protected]
>
>
>
>
> _______________________________________________
> zope mailing list
> [email protected]
> https://mail.dzug.org/mailman/listinfo/zope
>
>



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.