Source code for boardgamegeek.objects.user
"""
:mod:`boardgamegeek.user` - BoardGameGeek "Users"
=================================================
.. module:: boardgamegeek.user
:platform: Unix, Windows
:synopsis: class handling user information
.. moduleauthor:: Cosmin Luță <q4break@gmail.com>
"""
from copy import copy
from .things import Thing
[docs]
class User(Thing):
"""
Information about an user.
"""
def __init__(self, data):
kw = copy(data)
if "buddies" not in kw:
kw["buddies"] = []
self._buddies = []
for i in kw["buddies"]:
self._buddies.append(Thing(i))
if "guilds" not in kw:
kw["guilds"] = []
self._guilds = []
for i in kw["guilds"]:
self._guilds.append(Thing(i))
if "hot" not in kw:
kw["hot"] = []
self._hot = []
for i in kw["hot"]:
self._hot.append(Thing(i))
if "top" not in kw:
kw["top"] = []
self._top = []
for i in kw["top"]:
self._top.append(Thing(i))
super().__init__(kw)
def __str__(self):
return f"User: {self.firstname} {self.lastname}"
def __repr__(self):
return f"User: {self.name} (id: {self.id})"
[docs]
def add_buddy(self, data):
"""
Add a buddy to this user
:param dict data: buddy's data
"""
self._buddies.append(Thing(data))
# self._data["buddies"].append(data)
def add_guild(self, data):
self._guilds.append(Thing(data))
# self._data["guilds"].append(data)
def add_top_item(self, data):
self._data["top"].append(data)
self._top.append(Thing(data))
def add_hot_item(self, data):
self._data["hot"].append(data)
self._hot.append(Thing(data))
def _format(self, log):
log.info(f"id : {self.id}")
log.info(f"login name : {self.name}")
log.info(f"first name : {self.firstname}")
log.info(f"last name : {self.lastname}")
log.info(f"state : {self.state}")
log.info(f"country : {self.country}")
log.info(f"home page : {self.homepage}")
log.info(f"avatar : {self.avatar}")
log.info(f"xbox acct : {self.xbox_account}")
log.info(f"wii acct : {self.wii_account}")
log.info(f"steam acct : {self.steam_account}")
log.info(f"psn acct : {self.psn_account}")
log.info(f"last login : {self.last_login}")
log.info(f"trade rating: {self.trade_rating}")
log.info(
"user has {} buddies{}".format(
self.total_buddies,
" (forever alone :'( )" if self.total_buddies == 0 else "",
)
)
buddies = self.buddies
if buddies:
for b in buddies:
log.info(f"- {b.name}")
log.info(f"user is member in {self.total_guilds} guilds")
guilds = self.guilds
if guilds:
for g in guilds:
log.info(f"- {g.name}")
log.info("top10 items")
for i in self.top10:
log.info(f"- {i.name} (id: {i.id})")
log.info("hot10 items")
for i in self.hot10:
log.info(f"- {i.name} (id: {i.id})")
@property
def total_buddies(self):
"""
:return: number of buddies
:rtype: integer
"""
return len(self._buddies)
@property
def total_guilds(self):
"""
:return: number of guilds
:rtype: integer
"""
return len(self._guilds)
@property
def top10(self):
"""
:return: user's top10
:rtype: list of :py:class:`boardgamegeek.things.Thing`
"""
return self._top
@property
def hot10(self):
"""
:return: user's hot10
:rtype: list of :py:class:`boardgamegeek.things.Thing`
"""
return self._hot
@property
def buddies(self):
"""
:return: user's buddies
:rtype: list of :py:class:`boardgamegeek.things.Thing`
"""
return self._buddies
@property
def guilds(self):
"""
:return: user's guilds
:rtype: list of :py:class:`boardgamegeek.things.Thing`
"""
return self._guilds
@property
def firstname(self):
"""
:return: user's first name
:rtype: str
:return: ``None`` if n/a
"""
return self._data.get("firstname")
@property
def lastname(self):
"""
:return: user's last name
:rtype: str
:return: ``None`` if n/a
"""
return self._data.get("lastname")
@property
def avatar(self):
"""
:return: avatar's URL
:rtype: str
:return: ``None`` if n/a
"""
return self._data.get("avatarlink")
@property
def last_login(self):
return self._data.get("lastlogin")
@property
def state(self):
return self._data.get("stateorprovince")
@property
def country(self):
return self._data.get("country")
@property
def homepage(self):
return self._data.get("webaddress")
@property
def xbox_account(self):
return self._data.get("xboxaccount")
@property
def wii_account(self):
return self._data.get("wiiaccount")
@property
def steam_account(self):
return self._data.get("steam_account")
@property
def psn_account(self):
return self._data.get("psnaccount")
@property
def trade_rating(self):
return self._data.get("trade_rating")