예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
    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)