"""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