"""NGPVAN Supporter Groups Endpoints"""
from parsons.etl.table import Table
import logging
logger = logging.getLogger(__name__)
[docs]
class SupporterGroups(object):
def __init__(self, van_connection):
self.connection = van_connection
[docs]
def get_supporter_groups(self):
"""
Get supporter groups.
`Returns:`
Parsons Table
See :ref:`parsons-table` for output options.
"""
tbl = Table(self.connection.get_request("supporterGroups"))
logger.info(f"Found {tbl.num_rows} supporter groups.")
return tbl
[docs]
def get_supporter_group(self, supporter_group_id):
"""
Get a supporter group.
`Args:`
supporter_group_id: int
The supporter group id.
`Returns:`
dict
"""
r = self.connection.get_request(f"supporterGroups/{supporter_group_id}")
logger.info(f"Found supporter group {supporter_group_id}.")
return r
[docs]
def create_supporter_group(self, name, description):
"""
Create a new supporter group.
`Args:`
name: str
The name of the supporter group. 100 character limit
description: str
Optional; A description of the supporter group. 200 character limit.
`Returns`
Parsons Table with the newly createed supporter group id, name
and description
"""
json = {"name": name, "description": description}
r = self.connection.post_request("supporterGroups", json=json)
return r
[docs]
def delete_supporter_group(self, supporter_group_id):
"""
Delete a supporter group.
`Args:`
supporter_group_id: int
The supporter group id
`Returns:`
``None``
"""
r = self.connection.delete_request(f"supporterGroups/{supporter_group_id}")
logger.info(f"Deleted supporter group {supporter_group_id}.")
return r
[docs]
def add_person_supporter_group(self, supporter_group_id, vanid):
"""
Add a person to a supporter group
`Args:`
supporter_group_id: int
The supporter group id
vanid: int
The vanid of the person to apply
`Returns:`
``None``
"""
r = self.connection.put_request(f"supporterGroups/{supporter_group_id}/people/{vanid}")
logger.info(f"Added person {vanid} to {supporter_group_id} supporter group.")
return r
[docs]
def delete_person_supporter_group(self, supporter_group_id, vanid):
"""
Remove a person from a supporter group
`Args:`
supporter_group_id: int
The supporter group id
vanid: int
The vanid of the person to remove
`Returns:`
``None``
"""
r = self.connection.delete_request(f"supporterGroups/{supporter_group_id}/people/{vanid}")
logger.info(f"Deleted person {vanid} from {supporter_group_id} supporter group.")
return r