mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-10 12:22:12 -04:00
@@ -0,0 +1,78 @@
|
||||
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
|
||||
Reference in New Issue
Block a user