37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from fediverse_blocklist_deploy.models import Instance
|
|
import toml
|
|
import io
|
|
import csv
|
|
import json
|
|
|
|
def blocklist_to_markdown(blocklist: [Instance], private: bool = False):
|
|
if private:
|
|
markdown_string = "| Instance | Status | Reason | Private Comment |\n | --- | --- | --- |\n"
|
|
else:
|
|
markdown_string = "| Instance | Status | Reason |\n | --- | --- | --- |\n"
|
|
for instance in blocklist:
|
|
|
|
if private:
|
|
markdown_string += f"| {instance.domain} | {instance.severity} | {instance.public_comment} | {instance.private_comment} |\n"
|
|
else:
|
|
markdown_string += f"| {instance.domain} | {instance.severity} | {instance.public_comment} |\n"
|
|
|
|
return markdown_string
|
|
|
|
def blocklist_to_toml(blocklist: [Instance], private: bool = False):
|
|
toml_string = toml.dumps({"instances": [b.as_dict(private) for b in blocklist]})
|
|
return toml_string
|
|
|
|
def blocklist_to_csv(blocklist: [Instance], private: bool = False):
|
|
csv_string = io.StringIO()
|
|
blocklist_as_dict = [b.as_dict(private) for b in blocklist]
|
|
keys = blocklist_as_dict[0].keys()
|
|
w = csv.DictWriter(csv_string, keys)
|
|
w.writeheader()
|
|
w.writerows(blocklist_as_dict)
|
|
return csv_string.getvalue()
|
|
|
|
def blocklist_to_json(blocklist: [Instance], private: bool = False):
|
|
json_string = json.dumps([b.as_dict(private) for b in blocklist])
|
|
return json_string
|