Plone 4: ส่งอีเมลเมื่อมีการอัปเดตข้อมูลผู้ใช้

ฉันกำลังพยายามเพิ่มตัวฟังเหตุการณ์ให้กับผลิตภัณฑ์ที่กำหนดเอง เพื่อให้สามารถส่งอีเมลเมื่อมีการบันทึกหน้า @@ข้อมูลส่วนบุคคล

ฉันลองใส่สิ่งต่อไปนี้ใน configuration.zcml ของฉัน:

<subscriber
    for="Products.PluggableAuthService.interfaces.events.IPropertiesUpdatedEvent"
    handler=".handlers.userupdate"
    />

จากนั้นใน handlers.py ของฉัน:

def userupdate(event):
""" Handler for User Properties Updated """
... code to send email...

ฉันไม่ได้รับข้อผิดพลาดใดๆ แต่ไม่มีอะไรเกิดขึ้น นั่นไม่ใช่เหตุการณ์ที่ถูกต้องที่จะรับฟังใช่ไหม? มีวิธีที่ดีกว่าในการบรรลุเป้าหมายนี้หรือไม่?


person Stephen Moran    schedule 18.12.2011    source แหล่งที่มา


คำตอบ (1)


นี่เป็นแนวทางที่ถูกต้องและโค้ดของคุณก็ดูดีสำหรับฉัน ลองตั้งค่าคำสั่ง pdb เป็นวิธี userupdate ของคุณ และเริ่มอินสแตนซ์ของคุณในเบื้องหน้า ("bin/instance fg") เพื่อดูว่ามีการเรียกรหัสเมื่อคุณแก้ไขข้อมูลส่วนบุคคลของผู้ใช้หรือไม่:

def userupdate(event):
    import pdb; pdb.set_trace()

ถ้าไม่มีการเรียกเมธอดเลย นี่อาจเป็นจุดบกพร่อง น่าจะเป็นอันนี้:

https://bugs.launchpad.net/zope-pas/+bug/795086

ลองใช้ Products.PluggableAuthService เวอร์ชันล่าสุดซึ่งข้อบกพร่องนี้ได้รับการแก้ไขแล้ว

http://pypi.python.org/pypi/Products.PluggableAuthService

ตามบันทึกประจำรุ่นโดยใช้ Products.PluggableAuthService 1.7.6 ควรทำเคล็ดลับ

person tisto    schedule 18.12.2011