Source code for boardgamegeek.objects.guild

# coding: utf-8
"""
:mod:`boardgamegeek.guild` - Guild information
==============================================

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

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

"""
from __future__ import unicode_literals

from copy import copy

from .things import Thing


[docs]class Guild(Thing): """ Class containing guild information """ def _format(self, log): log.info("id : {}".format(self.id)) log.info("name : {}".format(self.name)) log.info("category : {}".format(self.category)) log.info("manager : {}".format(self.manager)) log.info("website : {}".format(self.website)) log.info("description: {}".format(self.description)) log.info("country : {}".format(self.country)) log.info("state : {}".format(self.state)) log.info("city : {}".format(self.city)) log.info("address : {}".format(self.address)) log.info("postal code: {}".format(self.postalcode)) if self.members: log.info("{} members".format(len(self.members))) for i in self.members: log.info(" - {}".format(i)) def __init__(self, data): kw = copy(data) if "members" in kw: self._members = set(kw.pop("members")) else: self._members = set() super(Guild, self).__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 "Guild (id: {})".format(self.id) def __iter__(self): for member in self._members: yield member