Completed
Push — master ( e847a5...5b0cc0 )
by Matěj
25s queued 10s
created

NextCloud.api_wrappers.user   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 164
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 55
dl 0
loc 164
rs 10
c 0
b 0
f 0
wmc 13

13 Methods

Rating   Name   Duplication   Size   Complexity  
A User.add_to_group() 0 11 1
A User.add_user() 0 10 1
A User.remove_from_group() 0 11 1
A User.enable_user() 0 8 1
A User.get_subadmin_groups() 0 9 1
A User.create_subadmin() 0 11 1
A User.remove_subadmin() 0 11 1
A User.resend_welcome_mail() 0 9 1
A User.disable_user() 0 8 1
A User.get_user() 0 8 1
A User.get_users() 0 15 1
A User.edit_user() 0 26 1
A User.delete_user() 0 8 1
1
from NextCloud.base import WithRequester
2
3
4
class User(WithRequester):
5
    API_URL = "/ocs/v1.php/cloud/users"
6
7
    def add_user(self, uid, passwd):
8
        """
9
        Create a new user on the Nextcloud server
10
11
        :param uid: str, uid of new user
12
        :param passwd: str, password of new user
13
        :return:
14
        """
15
        msg = {'userid': uid, 'password': passwd}
16
        return self.requester.post("", msg)
17
18
    def get_users(self, search=None, limit=None, offset=None):
19
        """
20
        Retrieve a list of users from the Nextcloud server
21
22
        :param search: string, optional search string
23
        :param limit: int, optional limit value
24
        :param offset: int, optional offset value
25
        :return:
26
        """
27
        params = {
28
            'search': search,
29
            'limit': limit,
30
            'offset': offset
31
        }
32
        return self.requester.get(params=params)
33
34
    def get_user(self, uid):
35
        """
36
        Retrieve information about a single user
37
38
        :param uid: str, uid of user
39
        :return:
40
        """
41
        return self.requester.get("{uid}".format(uid=uid))
42
43
    def edit_user(self, uid, what, value):
44
        """
45
        Edit attributes related to a user
46
47
        Users are able to edit email, displayname and password; admins can also edit the quota value
48
49
        :param uid: str, uid of user
50
        :param what: str, the field to edit
51
        :param value: str, the new value for the field
52
        :return:
53
        """
54
        what_to_key_map = dict(
55
            email="email", quota="quote", phone="phone", address="address", website="website",
56
            twitter="twitter", displayname="displayname", password="password",
57
        )
58
        assert what in what_to_key_map, (
59
            "You have chosen to edit user's '{what}', but you can choose only from: {choices}"
60
                .format(what=what, choices=", ".join(what_to_key_map.keys()))
61
        )
62
63
        url = "{uid}".format(uid=uid)
64
        msg = dict(
65
            key=what_to_key_map[what],
66
            value=value,
67
        )
68
        return self.requester.put(url, msg)
69
70
    def disable_user(self, uid):
71
        """
72
        Disable a user on the Nextcloud server so that the user cannot login anymore
73
74
        :param uid: str, uid of user
75
        :return:
76
        """
77
        return self.requester.put("{uid}/disable".format(uid=uid))
78
79
    def enable_user(self, uid):
80
        """
81
        Enable a user on the Nextcloud server so that the user can login again
82
83
        :param uid: str, uid of user
84
        :return:
85
        """
86
        return self.requester.put("{uid}/enable".format(uid=uid))
87
88
    def delete_user(self, uid):
89
        """
90
        Delete a user from the Nextcloud server
91
92
        :param uid: str, uid of user
93
        :return:
94
        """
95
        return self.requester.delete("{uid}".format(uid=uid))
96
97
    def add_to_group(self, uid, gid):
98
        """
99
        Add the specified user to the specified group
100
101
        :param uid: str, uid of user
102
        :param gid: str, name of group
103
        :return:
104
        """
105
        url = "{uid}/groups".format(uid=uid)
106
        msg = {'groupid': gid}
107
        return self.requester.post(url, msg)
108
109
    def remove_from_group(self, uid, gid):
110
        """
111
        Remove the specified user from the specified group
112
113
        :param uid: str, uid of user
114
        :param gid: str, name of group
115
        :return:
116
        """
117
        url = "{uid}/groups".format(uid=uid)
118
        msg = {'groupid': gid}
119
        return self.requester.delete(url, msg)
120
121
    def create_subadmin(self, uid, gid):
122
        """
123
        Make a user the subadmin of a group
124
125
        :param uid: str, uid of user
126
        :param gid: str, name of group
127
        :return:
128
        """
129
        url = "{uid}/subadmins".format(uid=uid)
130
        msg = {'groupid': gid}
131
        return self.requester.post(url, msg)
132
133
    def remove_subadmin(self, uid, gid):
134
        """
135
        Remove the subadmin rights for the user specified from the group specified
136
137
        :param uid: str, uid of user
138
        :param gid: str, name of group
139
        :return:
140
        """
141
        url = "{uid}/subadmins".format(uid=uid)
142
        msg = {'groupid': gid}
143
        return self.requester.delete(url, msg)
144
145
    def get_subadmin_groups(self, uid):
146
        """
147
        Get the groups in which the user is a subadmin
148
149
        :param uid: str, uid of user
150
        :return:
151
        """
152
        url = "{uid}/subadmins".format(uid=uid)
153
        return self.requester.get(url)
154
155
    def resend_welcome_mail(self, uid):
156
        """
157
        Trigger the welcome email for this user again
158
159
        :param uid: str, uid of user
160
        :return:
161
        """
162
        url = "{uid}/welcome".format(uid=uid)
163
        return self.requester.post(url)
164