| @@ -2,10 +2,39 @@ import requests, time, os, sys, json, csv | |||
| from bs4 import BeautifulSoup | |||
| class DataTable: | |||
| def __init__(self): | |||
| def __init__(self, rdas_obj=None): | |||
| self.table = {} | |||
| self.cols = {} | |||
| self.rows = {} | |||
| self._cols = {} | |||
| self._rows = {} | |||
| self.col_labels = {} | |||
| self.row_labels = {} | |||
| if rdas_obj != None: | |||
| self.populate(rdas_obj) | |||
| def populate(self, rdas_obj): | |||
| # 1. Put values from results:column:options:key into a list. | |||
| # a. Sort the list on the int value of the key. | |||
| # b. Place the list into self._cols, using the value as the key and the index as the value. | |||
| # 2. Do the same thing for the values from results:row:options:key and self._rows. | |||
| # 3. Using the key-value pairs in self._cols, place results:column:options:title into self.col_labels | |||
| # with the self._cols VALUE as the key. | |||
| # a. REMEMBER that missing values are coded "." in keys but "" in cell descriptors! | |||
| # 4. Do the same thing for results:row:options:title and self._rows. | |||
| # 5. For each record in results:cells, get a row-column coordinate by associating row_option and column_option | |||
| # with a key in each of self._rows and self._cols. | |||
| # a. Insert the value in results:cells:n:column into self.table at that row-column coordinate. | |||
| pass | |||
| def generate_table(self): | |||
| # Return an object containing self.col_labels, self.row_labels, and self.table. | |||
| # self._cols and self._rows are for internal use and don't need to be produced. | |||
| o = { | |||
| "clabels": self.col_labels, | |||
| "rlabels": self.row_labels, | |||
| "values": self.table | |||
| } | |||
| return o | |||
| class DataPocket: | |||
| def __init__(self): | |||