csv: add parameters for id and text columns
This commit is contained in:
parent
708f37c2ee
commit
b3e1b35449
|
@ -14,6 +14,8 @@ class BaseDataSource(models.Model):
|
|||
|
||||
class CsvDataSource(BaseDataSource):
|
||||
csv_file = models.FileField(upload_to='csv')
|
||||
key_column = models.IntegerField()
|
||||
value_columns = models.CommaSeparatedIntegerField(max_length=100)
|
||||
|
||||
def get_data(self):
|
||||
data = []
|
||||
|
@ -21,6 +23,17 @@ class CsvDataSource(BaseDataSource):
|
|||
dialect = csv.Sniffer().sniff(self.csv_file.read(1024))
|
||||
self.csv_file.seek(0)
|
||||
reader = csv.reader(self.csv_file, dialect)
|
||||
|
||||
def get_value(row):
|
||||
return (' '.join([unicode(row[int(x)-1], 'utf-8') for x in self.value_columns.split(',')]))
|
||||
|
||||
def get_key(row):
|
||||
if self.key_column:
|
||||
return unicode(row[self.key_column-1], 'utf-8')
|
||||
else:
|
||||
return get_value(row).lower().encode('ascii', 'ignore').replace(' ', '-')
|
||||
|
||||
for row in reader:
|
||||
data.append(unicode(row[0], 'utf-8')) # 1st column only
|
||||
data.append({'id': get_key(row), 'text': get_value(row)})
|
||||
|
||||
return data
|
||||
|
|
|
@ -8,6 +8,6 @@ def json(request, datasource):
|
|||
q = request.GET.get('q')
|
||||
if q:
|
||||
q = q.lower()
|
||||
return sorted([x for x in ds.get_data() if q in x.lower()])
|
||||
return sorted([x for x in ds.get_data() if q in x['text'].lower()])
|
||||
else:
|
||||
return sorted(ds.get_data())
|
||||
|
|
Loading…
Reference in New Issue