diff options
author | Wojciech Polak <polak@gnu.org> | 2009-07-13 17:17:00 +0200 |
---|---|---|
committer | Wojciech Polak <polak@gnu.org> | 2009-07-13 17:20:25 +0200 |
commit | b390f3773720cf07d88a192740c0082504faa7f8 (patch) | |
tree | ee647ff0bf7feb2de13fa987d4f4fada91e4f631 /python | |
parent | 36a121b9d19e24815f415054926e5b2f074618df (diff) | |
download | mailutils-b390f3773720cf07d88a192740c0082504faa7f8.tar.gz mailutils-b390f3773720cf07d88a192740c0082504faa7f8.tar.bz2 |
Add more is/set/unset attribute methods (Python).
* python/libmu_py/attribute.c: Add userflag functions.
* python/mailutils/attribute.py: Add more is/set/unset methods.
* python/mailutils/mailbox.py (open): Bugfix.
Diffstat (limited to 'python')
-rw-r--r-- | python/libmu_py/attribute.c | 48 | ||||
-rw-r--r-- | python/mailutils/attribute.py | 76 | ||||
-rw-r--r-- | python/mailutils/mailbox.py | 21 |
3 files changed, 137 insertions, 8 deletions
diff --git a/python/libmu_py/attribute.c b/python/libmu_py/attribute.c index b292d65bd..a930f77a1 100644 --- a/python/libmu_py/attribute.c +++ b/python/libmu_py/attribute.c @@ -181,6 +181,45 @@ api_attribute_unset_flags (PyObject *self, PyObject *args) } static PyObject * +api_attribute_is_userflag (PyObject *self, PyObject *args) +{ + int state, flag; + PyAttribute *py_attr; + + if (!PyArg_ParseTuple (args, "O!i", &PyAttributeType, &py_attr, &flag)) + return NULL; + + state = mu_attribute_is_userflag (py_attr->attr, flag); + return _ro (PyBool_FromLong (state)); +} + +static PyObject * +api_attribute_set_userflag (PyObject *self, PyObject *args) +{ + int status, flag; + PyAttribute *py_attr; + + if (!PyArg_ParseTuple (args, "O!i", &PyAttributeType, &py_attr, &flag)) + return NULL; + + status = mu_attribute_set_userflag (py_attr->attr, flag); + return _ro (PyInt_FromLong (status)); +} + +static PyObject * +api_attribute_unset_userflag (PyObject *self, PyObject *args) +{ + int status, flag; + PyAttribute *py_attr; + + if (!PyArg_ParseTuple (args, "O!i", &PyAttributeType, &py_attr, &flag)) + return NULL; + + status = mu_attribute_unset_userflag (py_attr->attr, flag); + return _ro (PyInt_FromLong (status)); +} + +static PyObject * api_attribute_to_string (PyObject *self, PyObject *args) { char buf[MU_STATUS_BUF_SIZE]; @@ -221,6 +260,15 @@ static PyMethodDef methods[] = { { "unset_flags", (PyCFunction) api_attribute_unset_flags, METH_VARARGS, "" }, + { "is_userflag", (PyCFunction) api_attribute_is_userflag, METH_VARARGS, + "" }, + + { "set_userflag", (PyCFunction) api_attribute_set_userflag, METH_VARARGS, + "" }, + + { "unset_userflag", (PyCFunction) api_attribute_unset_userflag, + METH_VARARGS, "" }, + { "to_string", (PyCFunction) api_attribute_to_string, METH_VARARGS, "" }, diff --git a/python/mailutils/attribute.py b/python/mailutils/attribute.py index 9ffa647ee..affdb5c3f 100644 --- a/python/mailutils/attribute.py +++ b/python/mailutils/attribute.py @@ -81,3 +81,79 @@ class Attribute: if flags & flag: return True return False + + def set_userflag (self, flag): + status = attribute.set_userflag (self.attr, flag) + if status: + raise Error (status) + + def unset_userflag (self, flag): + status = attribute.unset_userflag (self.attr, flag) + if status: + raise Error (status) + + def is_userflag (self, flag): + return attribute.is_userflag (self.attr, flag) + + + def is_answered (self): + return self.is_flag (MU_ATTRIBUTE_ANSWERED) + + def is_flagged (self): + return self.is_flag (MU_ATTRIBUTE_FLAGGED) + + def is_deleted (self): + return self.is_flag (MU_ATTRIBUTE_DELETED) + + def is_draft (self): + return self.is_flag (MU_ATTRIBUTE_DRAFT) + + def is_seen (self): + return self.is_flag (MU_ATTRIBUTE_SEEN) + + def is_read (self): + return self.is_flag (MU_ATTRIBUTE_READ) + + + def set_answered (self): + self.set_flags (MU_ATTRIBUTE_ANSWERED) + + def set_flagged (self): + self.set_flags (MU_ATTRIBUTE_FLAGGED) + + def set_deleted (self): + self.set_flags (MU_ATTRIBUTE_DELETED) + + def set_draft (self): + self.set_flags (MU_ATTRIBUTE_DRAFT) + + def set_seen (self): + self.set_flags (MU_ATTRIBUTE_SEEN) + + def set_read (self): + self.set_flags (MU_ATTRIBUTE_READ) + + def set_recent (self): + self.unset_flags (MU_ATTRIBUTE_READ | MU_ATTRIBUTE_SEEN) + + + def unset_answered (self): + self.unset_flags (MU_ATTRIBUTE_ANSWERED) + + def unset_flagged (self): + self.unset_flags (MU_ATTRIBUTE_FLAGGED) + + def unset_deleted (self): + self.unset_flags (MU_ATTRIBUTE_DELETED) + + def unset_draft (self): + self.unset_flags (MU_ATTRIBUTE_DRAFT) + + def unset_seen (self): + self.unset_flags (MU_ATTRIBUTE_SEEN) + + def unset_read (self): + self.unset_flags (MU_ATTRIBUTE_READ) + + def unset_recent (self): + self.unset_flags (MU_ATTRIBUTE_SEEN) diff --git a/python/mailutils/mailbox.py b/python/mailutils/mailbox.py index a872d9a22..d15f5235c 100644 --- a/python/mailutils/mailbox.py +++ b/python/mailutils/mailbox.py @@ -32,14 +32,19 @@ class MailboxBase: if isinstance (mode, types.StringType): from mailutils import stream flags = 0 - if mode == 'r': - flags = flags | stream.MU_STREAM_READ - elif mode == 'w': - flags = flags | stream.MU_STREAM_WRITE - elif mode == 'a': - flags = flags | stream.MU_STREAM_APPEND - elif mode == 'c': - flags = flags | stream.MU_STREAM_CREAT + for m in mode: + if m == 'r': + flags = flags | stream.MU_STREAM_READ + elif m == 'w': + flags = flags | stream.MU_STREAM_WRITE + elif m == 'a': + flags = flags | stream.MU_STREAM_APPEND + elif m == 'c': + flags = flags | stream.MU_STREAM_CREAT + if flags & stream.MU_STREAM_READ and flags & stream.MU_STREAM_WRITE: + flags = (flags & ~(stream.MU_STREAM_READ | \ + stream.MU_STREAM_WRITE)) | \ + stream.MU_STREAM_RDWR mode = flags status = mailbox.open (self.mbox, mode) if status: |