196 lines
5.7 KiB
Python
196 lines
5.7 KiB
Python
import sqlite3
|
|
import yaml
|
|
import pprint
|
|
|
|
def main():
|
|
conn = sqlite3.connect('../../pf2.db')
|
|
conn.row_factory = sqlite3.Row
|
|
|
|
q = """
|
|
SELECT * FROM feats;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
data = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(data)
|
|
|
|
q = """
|
|
SELECT * FROM requirements;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
req_data = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(req_data)
|
|
|
|
q = """
|
|
SELECT * FROM actioncosts;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
act_data = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(act_data)
|
|
|
|
q = """
|
|
SELECT * FROM frequency;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
freq_data = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(freq_data)
|
|
|
|
q = """
|
|
SELECT * FROM triggers;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
trig_data = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(trig_data)
|
|
|
|
q = """
|
|
SELECT featprereqs_id, descr, feat_id FROM featprereqs;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q)
|
|
# data = c.fetchall()
|
|
prdata = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(prdata)
|
|
for i in prdata:
|
|
if i['feat_id'] != None:
|
|
q = """
|
|
SELECT short_name from feats WHERE feat_id=?;
|
|
"""
|
|
# so we get a dict out of our query
|
|
c = conn.cursor()
|
|
c.execute(q, (i['feat_id'],))
|
|
# data = c.fetchall()
|
|
subprdata = [dict(row) for row in c.fetchall()]
|
|
# pprint.pprint(subprdata)
|
|
i['feat'] = subprdata[0]['short_name']
|
|
else:
|
|
i['feat'] = None
|
|
|
|
for i in data:
|
|
# all this mess is getting the sources
|
|
x = i['sources_pages'].split(',')
|
|
# if len(x) > 1:
|
|
# print("name:{}, x:{}".format(i['short_name'], x))
|
|
s = []
|
|
for j in x:
|
|
page = int(j)
|
|
s.append({'abbr': 'CRB', 'page_start': page, 'page_stop': page })
|
|
i['source'] = s
|
|
del i['sources_pages']
|
|
|
|
# now get the actions
|
|
if i['action_id'] == None:
|
|
i['action'] = None
|
|
else:
|
|
# get action name based on id
|
|
id = i['action_id']
|
|
for a in act_data:
|
|
if a['actioncosts_id'] == id:
|
|
i['action'] = a['name']
|
|
del i['action_id']
|
|
|
|
# now do the triggers
|
|
if i['triggers_id'] == None:
|
|
i['trigger'] = None
|
|
else:
|
|
# get trigger name based on id
|
|
id = i['triggers_id']
|
|
for t in trig_data:
|
|
if t['triggers_id'] == id:
|
|
i['trigger'] = t['triggers_descr']
|
|
del i['triggers_id']
|
|
|
|
# now do the requirements
|
|
if i['requirements_id'] == None:
|
|
i['requirement'] = None
|
|
else:
|
|
# get requirement name based on id
|
|
id = i['requirements_id']
|
|
for r in req_data:
|
|
if r['requirements_id'] == id:
|
|
i['requirement'] = r['requirements_descr']
|
|
del i['requirements_id']
|
|
|
|
# now do the frequency
|
|
if i['frequency_id'] == None:
|
|
i['frequency'] = None
|
|
else:
|
|
# get requirement name based on id
|
|
id = i['frequency_id']
|
|
# print(id)
|
|
# print(i['short_name'])
|
|
for f in freq_data:
|
|
if f['freq_id'] == id:
|
|
i['frequency'] = f['freq_descr']
|
|
del i['frequency_id']
|
|
|
|
# populate prereqs:
|
|
|
|
### get prereq IDs for a feat
|
|
stmt = "SELECT featprereqs_id FROM feats_featprereqs WHERE feat_id=?"
|
|
c = conn.cursor()
|
|
# print(i['feat_id'])
|
|
c.execute(stmt, (i['feat_id'],))
|
|
# data = c.fetchall()
|
|
fpr_data = [dict(row) for row in c.fetchall()]
|
|
# if len(fpr_data) > 1:
|
|
# # print("fuck")
|
|
# pprint.pprint(fpr_data)
|
|
print(fpr_data)
|
|
for f in fpr_data:
|
|
stmtnext = "SELECT descr, feat_id FROM featprereqs WHERE featprereqs_id=?"
|
|
c = conn.cursor()
|
|
# print(i['feat_id'])
|
|
c.execute(stmtnext, (f['featprereqs_id'],))
|
|
# data = c.fetchall()
|
|
fpr_data_next = [dict(row) for row in c.fetchall()]
|
|
# print(fpr_data_next)
|
|
prlist = []
|
|
for ff in fpr_data_next:
|
|
# print(ff)
|
|
if ff['feat_id'] == None:
|
|
prlist.append({'descr': ff['descr'], 'feat': None})
|
|
else:
|
|
stmtfinal = "SELECT short_name from feats WHERE feat_id=?"
|
|
c = conn.cursor()
|
|
# print(i['feat_id'])
|
|
c.execute(stmtfinal, (ff['feat_id'],))
|
|
# data = c.fetchall()
|
|
fn_data_final = [dict(row) for row in c.fetchall()]
|
|
print("STUFF")
|
|
print(fn_data_final)
|
|
|
|
prlist.append({'descr': ff['descr'], 'feat': fn_data_final[0]['short_name']})
|
|
i['prereqs'] = prlist
|
|
|
|
|
|
|
|
|
|
# THIS NEEDS TO BE LAST AS PREREQS REFERENCES IT
|
|
del i['feat_id']
|
|
i['has_been_manually_proofread'] = False
|
|
|
|
|
|
data = {"feat": data}
|
|
final = yaml.safe_dump(data, allow_unicode=True, width=10000)
|
|
with open('tmp-feat.yaml', 'w') as f:
|
|
f.write(final)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|