# -*- coding: utf-8 -*-
from .generic import Manager
[docs]class UserManager(Manager):
[docs] def update(self, **kwargs):
"""
Updates the user data.
"""
cmd = {
'type': 'user_update',
'uuid': self.api.generate_uuid(),
'args': kwargs,
}
self.queue.append(cmd)
[docs] def update_goals(self, **kwargs):
"""
Updates the user's karma goals.
"""
cmd = {
'type': 'update_goals',
'uuid': self.api.generate_uuid(),
'args': kwargs,
}
self.queue.append(cmd)
[docs] def sync(self):
return self.api.sync()
[docs] def get(self, key=None, default=None):
ret = self.state['user']
if key is not None:
ret = ret.get(key, default)
return ret
[docs] def get_id(self):
return self.state['user']['id']
[docs] def login(self, email, password):
"""
Logins user, and returns the response received by the server.
"""
data = self.api._post('user/login', data={'email': email,
'password': password})
if 'token' in data:
self.api.token = data['token']
return data
[docs] def login_with_google(self, email, oauth2_token, **kwargs):
"""
Logins user with Google account, and returns the response received by
the server.
"""
data = {'email': email, 'oauth2_token': oauth2_token}
data.update(kwargs)
data = self.api._post('user/login_with_google', data=data)
if 'token' in data:
self.api.token = data['token']
return data
[docs] def register(self, email, full_name, password, **kwargs):
"""
Registers a new user.
"""
data = {'email': email, 'full_name': full_name, 'password': password}
data.update(kwargs)
data = self.api._post('user/register', data=data)
if 'token' in data:
self.api.token = data['token']
return data
[docs] def delete(self, current_password, **kwargs):
"""
Deletes an existing user.
"""
params = {'token': self.token,
'current_password': current_password}
params.update(kwargs)
return self.api._get('user/delete', params=params)
[docs] def update_notification_setting(self, notification_type, service,
dont_notify):
"""
Updates the user's notification settings.
"""
return self.api._post('user/update_notification_setting',
data={'token': self.token,
'notification_type': notification_type,
'service': service,
'dont_notify': dont_notify})