summaryrefslogtreecommitdiff
path: root/slixmpp/plugins/google/settings/stanza.py
blob: d26ba2f93def65e814abad4cef9b9342b05d3b1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

# Slixmpp: The Slick XMPP Library
# Copyright (C) 2013 Nathanael C. Fritz, Lance J.T. Stout
# This file is part of slixmpp.
# See the file LICENSE for copying permission.
from slixmpp.xmlstream import ET, ElementBase


class UserSettings(ElementBase):
    name = 'usersetting'
    namespace = 'google:setting'
    plugin_attrib = 'google_settings'
    interfaces = set(['auto_accept_suggestions',
                      'mail_notifications',
                      'archiving_enabled',
                      'gmail',
                      'email_verified',
                      'domain_privacy_notice',
                      'display_name'])

    def _get_setting(self, setting):
        xml = self.xml.find('{%s}%s' % (self.namespace, setting))
        if xml is not None:
            return xml.attrib.get('value', '') == 'true'
        return False

    def _set_setting(self, setting, value):
        self._del_setting(setting)
        if value in (True, False):
            xml = ET.Element('{%s}%s' % (self.namespace, setting))
            xml.attrib['value'] = 'true' if value else 'false'
            self.xml.append(xml)

    def _del_setting(self, setting):
        xml = self.xml.find('{%s}%s' % (self.namespace, setting))
        if xml is not None:
            self.xml.remove(xml)

    def get_display_name(self):
        xml = self.xml.find('{%s}%s' % (self.namespace, 'displayname'))
        if xml is not None:
            return xml.attrib.get('value', '')
        return ''

    def set_display_name(self, value):
        self._del_setting(setting)
        if value:
            xml = ET.Element('{%s}%s' % (self.namespace, 'displayname'))
            xml.attrib['value'] = value
            self.xml.append(xml)

    def del_display_name(self):
        self._del_setting('displayname')

    def get_auto_accept_suggestions(self):
        return self._get_setting('autoacceptsuggestions')

    def get_mail_notifications(self):
        return self._get_setting('mailnotifications')

    def get_archiving_enabled(self):
        return self._get_setting('archivingenabled')

    def get_gmail(self):
        return self._get_setting('gmail')

    def get_email_verified(self):
        return self._get_setting('emailverified')

    def get_domain_privacy_notice(self):
        return self._get_setting('domainprivacynotice')

    def set_auto_accept_suggestions(self, value):
        self._set_setting('autoacceptsuggestions', value)

    def set_mail_notifications(self, value):
        self._set_setting('mailnotifications', value)

    def set_archiving_enabled(self, value):
        self._set_setting('archivingenabled', value)

    def set_gmail(self, value):
        self._set_setting('gmail', value)

    def set_email_verified(self, value):
        self._set_setting('emailverified', value)

    def set_domain_privacy_notice(self, value):
        self._set_setting('domainprivacynotice', value)

    def del_auto_accept_suggestions(self):
        self._del_setting('autoacceptsuggestions')

    def del_mail_notifications(self):
        self._del_setting('mailnotifications')

    def del_archiving_enabled(self):
        self._del_setting('archivingenabled')

    def del_gmail(self):
        self._del_setting('gmail')

    def del_email_verified(self):
        self._del_setting('emailverified')

    def del_domain_privacy_notice(self):
        self._del_setting('domainprivacynotice')