code: def get_sample_values(self):
          
          res = {'samples': []}
          lines = self.getOriginalFile().data.splitlines()
          reader = csv.reader(lines)
          next_rows_are_sample_rows = False
          for row in reader:
              if not any(row):
                  continue
              if next_rows_are_sample_rows:
                  vals = [x.strip() for x in row]
                  if not any(vals):
                      continue
                  res['samples'].append(zip(res['headers'], vals))
              elif row[0].strip().lower() == 'samples':
                  res['headers'] = [x.strip() for x in row]
              elif row[0].strip().lower() == 'analysis price':
                  res['prices'] = \
                      zip(res['headers'], [x.strip() for x in row])
              elif row[0].strip().lower() == 'total analyses':
                  res['total_analyses'] = \
                      zip(res['headers'], [x.strip() for x in row])
              elif row[0].strip().lower() == 'total price excl tax':
                  res['price_totals'] = \
                      zip(res['headers'], [x.strip() for x in row])
                  next_rows_are_sample_rows = True
          return res
docs: Read the rows specifying Samples and return a dictionary with
          related data.
  
          keys are:
              headers - row with "Samples" in column 0.  These headers are
                 used as dictionary keys in the rows below.
              prices - Row with "Analysis Price" in column 0.
              total_analyses - Row with "Total analyses" in colmn 0
              price_totals - Row with "Total price excl Tax" in column 0
              samples - All other sample rows.