- #!/usr/bin/env python2
- #-*- coding: utf-8 -*-
- """
- Module for transforming group lists to Moodle format
- Lists must be in CSV format "surname name,id".
- Output data is CSV "firstname;username;password;lastname;email;idnumber.
- """
- import csv
- import sys
- import trans
- class ProcessCSV():
- def __init__(self, input_filename, output_filename):
- self.input_filename = input_filename
- self.output_filename = output_filename
- def construct(self):
- try:
- open(self.input_filename)
- except IOError:
- print(":: Input file does not exist")
- return
- input_file = open(self.input_filename)
- reader = csv.reader(input_file)
- output_file = open(self.output_filename, "w")
- writer = csv.writer(output_file, delimiter=";")
- is_first_row = True
- for row in reader:
- if is_first_row:
- # Construct new header
- row[0] = "firstname"
- row[1] = "username"
- row.append("password")
- row.append("lastname")
- row.append("email")
- row.append("idnumber")
- is_first_row = False
- else:
- lastname = row[0].split()[0]
- firstname = row[0][len(lastname) + 1:]
- personal_id = row[1]
- # Firstname
- row[0] = firstname
- # Username (same as ID)
- # 7 is ID length (we need to save zeros in the beginning)
- row[1] = "{0:07d}".format(int(personal_id))
- # Password (surname translated in lowercase)
- row.append(self.translate(lastname).lower())
- # Lastname
- row.append(lastname)
- # Email (filled by default value)
- row.append("test@test.com")
- # ID
- # 7 is ID length (we need to save zeros in the beginning)
- row.append("{0:07d}".format(int(personal_id)))
- writer.writerow(row)
- input_file.close()
- output_file.close()
- def translate(self, string):
- return self.to_utf8(self.to_unicode(string).encode("trans"))
- def to_utf8(self, string):
- return string.encode("utf-8")
- def to_unicode(self, string):
- return unicode(string, "utf-8")
- def main(arguments):
- app = ProcessCSV(arguments[0], arguments[1])
- app.construct()
- if __name__ == "__main__":
- if (len(sys.argv) != 3):
- print(":: Usage: script.py input.csv output.csv")
- else:
- # Ignore self-name
- main(sys.argv[1:])