From 1a8f15d510898f823c3b5a123f4e6112ba620106 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Tue, 28 Oct 2014 07:22:50 +0000 Subject: [PATCH] Support CZNC::GetUserMap() from modpython. Thanks to lol768 for reporting it. --- modules/modpython/modpython.i | 13 +++++++++++++ modules/modpython/znc.py | 1 + 2 files changed, 14 insertions(+) diff --git a/modules/modpython/modpython.i b/modules/modpython/modpython.i index 01d1a7c7..9f4dbb7e 100644 --- a/modules/modpython/modpython.i +++ b/modules/modpython/modpython.i @@ -277,6 +277,19 @@ class CPyRetBool { } }; +%extend CZNC { + PyObject* GetUserMap_() { + PyObject* result = PyDict_New(); + auto user_type = SWIG_TypeQuery("CUser*"); + for (const auto& p : $self->GetUserMap()) { + PyObject* user = SWIG_NewInstanceObj(p.second, user_type, 0); + PyDict_SetItemString(result, p.first.c_str(), user); + Py_CLEAR(user); + } + return result; + } +}; + /* To allow module-loaders to be written on python. * They can call CreatePyModule() to create CModule* object, but one of arguments to CreatePyModule() is "CModule* pModPython" * Pointer to modpython is already accessible to python modules as self.GetModPython(), but it's just a pointer to something, not to CModule*. diff --git a/modules/modpython/znc.py b/modules/modpython/znc.py index d0e566de..1ccbab38 100644 --- a/modules/modpython/znc.py +++ b/modules/modpython/znc.py @@ -704,6 +704,7 @@ def CreateWebSubPage(name, title='', params=dict(), admin=False): CUser.GetNetworks = CUser.GetNetworks_ CIRCNetwork.GetChans = CIRCNetwork.GetChans_ CChan.GetNicks = CChan.GetNicks_ +CZNC.GetUserMap = CZNC.GetUserMap_ class ModulesIter(collections.Iterator):