mirror of https://github.com/zeldaret/tp.git
78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from .util import *
|
|
from .graphql import GraphQLClient
|
|
from dataclasses import dataclass
|
|
from logger import LOG
|
|
|
|
class Option:
|
|
def __init__(self, id, name):
|
|
self.id = id
|
|
self.name = name
|
|
|
|
@staticmethod
|
|
def get_all_options(field_id: str) -> list['Option']:
|
|
LOG.debug(f'Getting all options for field {field_id}')
|
|
query = '''
|
|
query ($fieldId: ID!) {
|
|
node(id: $fieldId) {
|
|
... on ProjectV2SingleSelectField {
|
|
options {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
'''
|
|
variables = {
|
|
"fieldId": field_id
|
|
}
|
|
|
|
data = GraphQLClient.get_instance().make_request(query, variables)
|
|
if data:
|
|
options = data['data']['node']['options']
|
|
LOG.info(f'Options: {options}')
|
|
ret_options = []
|
|
|
|
for option in options:
|
|
option_id = option['id']
|
|
option_name = option['name']
|
|
ret_options.append(Option(id = option_id, name = option_name))
|
|
|
|
return ret_options
|
|
else:
|
|
LOG.warning(f'No options found for field {field_id}')
|
|
return []
|
|
|
|
@staticmethod
|
|
def get_id(field_id: str, option_name: str) -> str:
|
|
LOG.debug(f'Getting option ID for field {field_id} with name {option_name}')
|
|
query = '''
|
|
query ($fieldId: ID!) {
|
|
node(id: $fieldId) {
|
|
... on ProjectV2SingleSelectField {
|
|
options {
|
|
id
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
'''
|
|
variables = {
|
|
"fieldId": field_id
|
|
}
|
|
|
|
data = GraphQLClient.get_instance().make_request(query, variables)
|
|
if data:
|
|
options = data['data']['node']['options']
|
|
for option in options:
|
|
if option['name'] == option_name:
|
|
option_id = option['id']
|
|
LOG.info(f'{option_name} Option ID: {option_id}')
|
|
return option_id
|
|
|
|
LOG.warning(f'No option found with name {option_name}')
|
|
return None
|
|
|
|
def delete(self):
|
|
pass |