def get_current_csv(filepath, delimiter, quotechar): """ Return the csv file currently stored in the user's session :returns: a csv dictreader object with the actual csv datas :raises KeyError: if no file datas are stored in the current session """ # Related to pyramid_deform's way to store temporary datas on disk filebuffer = open(filepath, 'r') return get_csv_reader(filebuffer, delimiter, quotechar)
def check_csv_content(node, value): """ check the file datas are composed of csv datas """ file_obj = value.get('fp') if file_obj: file_obj.seek(0) reader = csv_import.get_csv_reader(file_obj) first_line = reader.next() if not first_line or None in first_line.keys(): message = u"Les données de ce fichier ne semblent pas être au \ format csv." raise colander.Invalid(node, message)
def validator(self, node, value): """ Validate the csv file upload ensuring the datas is in the format described by delimiter an quotechar """ quotechar = value['quotechar'] delimiter = value['delimiter'] csv_file_obj = value['csv_file'].get('fp') csv_file_obj.seek(0) csv_data = csv_import.get_csv_reader( csv_file_obj, delimiter=delimiter, quotechar=quotechar, ) try: first_line = csv_data.next() csv_file_obj.seek(0) except: raise colander.Invalid(node, u"Ce fichier semble vide") keys = first_line.keys() if not first_line or None in keys or len(keys) < 2: message = u"Les données de ce fichier ne semblent pas être au \ bon format." raise colander.Invalid(node, message)