Source code for boardgamegeek.objects.guild

"""
:mod:`boardgamegeek.guild` - Guild information
==============================================

.. module:: boardgamegeek.guild
   :platform: Unix, Windows
   :synopsis: classes for storing guild information

.. moduleauthor:: Cosmin Luță <q4break@gmail.com>

"""

from copy import copy

from .things import Thing


[docs] class Guild(Thing): """ Class containing guild information """ def _format(self, log): log.info(f"id : {self.id}") log.info(f"name : {self.name}") log.info(f"category : {self.category}") log.info(f"manager : {self.manager}") log.info(f"website : {self.website}") log.info(f"description: {self.description}") log.info(f"country : {self.country}") log.info(f"state : {self.state}") log.info(f"city : {self.city}") log.info(f"address : {self.address}") log.info(f"postal code: {self.postalcode}") if self.members: log.info(f"{len(self.members)} members") for i in self.members: log.info(f" - {i}") def __init__(self, data): kw = copy(data) if "members" in kw: self._members = set(kw.pop("members")) else: self._members = set() super().__init__(kw) @property def country(self): """ :return: country :rtype: str :return: ``None`` if n/a """ return self._data.get("country") @property def city(self): """ :return: city :rtype: str :return: ``None`` if n/a """ return self._data.get("city") @property def address(self): """ :return: address (both fields concatenated) :rtype: str :return: ``None`` if n/a """ address = "" if self._data.get("addr1"): address += self._data.get("addr1") if self._data.get("addr2"): if len(address): address += " " # delimit the two address fields by a space address += self._data.get("addr2") return address if len(address) else None @property def addr1(self): """ :return: first field of the address :rtype: str :return: ``None`` if n/a """ return self._data.get("addr1") @property def addr2(self): """ :return: second field of the address :rtype: str :return: ``None`` if n/a """ return self._data.get("addr2") @property def postalcode(self): """ :return: postal code :rtype: integer :return: ``None`` if n/a """ return self._data.get("postalcode") @property def state(self): """ :return: state or provine :rtype: str :return: ``None`` if n/a """ return self._data.get("stateorprovince") @property def category(self): """ :return: category :rtype: str :return: ``None`` if n/a """ return self._data.get("category") @property def members(self): """ :return: members of the guild :rtype: set of str """ return self._members @property def members_count(self): """ :return: number of members, as reported by the server :rtype: int """ return self._data.get("member_count", 0) @property def description(self): """ :return: description :rtype: str :return: ``None`` if n/a """ return self._data.get("description") @property def manager(self): """ :return: manager :rtype: str :return: ``None`` if n/a """ return self._data.get("manager") @property def website(self): """ :return: website address :rtype: str :return: ``None`` if n/a """ return self._data.get("website") def add_member(self, member): self._members.add(member) def __len__(self): return len(self._members) def __repr__(self): return f"Guild (id: {self.id})" def __iter__(self): yield from self._members