diff options
author | Primal Pappachan | 2012-03-20 11:55:17 +0530 |
---|---|---|
committer | Primal Pappachan | 2012-03-20 11:55:17 +0530 |
commit | 8df546efd5b4821c7e1d2b500026380f490cc6c4 (patch) | |
tree | 1aab84f974827bf2ff0f89f8db43bf950403f7cc /allotter | |
parent | 4f63e2eca861d597c1041bbf58c63ea4ea3e9a61 (diff) | |
parent | 64f6b14cc6c1ee3cec4c2d65e6a130441555b6b4 (diff) | |
download | aloha-8df546efd5b4821c7e1d2b500026380f490cc6c4.tar.gz aloha-8df546efd5b4821c7e1d2b500026380f490cc6c4.tar.bz2 aloha-8df546efd5b4821c7e1d2b500026380f490cc6c4.zip |
Merge github.com:FOSSEE/aloha
Diffstat (limited to 'allotter')
-rw-r--r-- | allotter/management/__init__.py | 0 | ||||
-rw-r--r-- | allotter/management/commands/__init__.py | 0 | ||||
-rw-r--r-- | allotter/management/commands/loadexam.py | 40 | ||||
-rw-r--r-- | allotter/management/commands/loadoptions.py | 60 | ||||
-rw-r--r-- | allotter/management/commands/loadusers.py | 65 | ||||
-rw-r--r-- | allotter/models.py | 4 |
6 files changed, 167 insertions, 2 deletions
diff --git a/allotter/management/__init__.py b/allotter/management/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/allotter/management/__init__.py diff --git a/allotter/management/commands/__init__.py b/allotter/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/allotter/management/commands/__init__.py diff --git a/allotter/management/commands/loadexam.py b/allotter/management/commands/loadexam.py new file mode 100644 index 0000000..2fedb66 --- /dev/null +++ b/allotter/management/commands/loadexam.py @@ -0,0 +1,40 @@ +from csv import reader +from django.core.management.base import BaseCommand, CommandError +from allotter.models import Exam + +class Command(BaseCommand): + args = '<file_name...>' + help = "Give the filename of the csv file that has all the exam code and exam name relation" + + def handle(self, *args, **options): + + clean_exam() + + for fname in args: + load_exam(fname) + + self.stdout.write('Done\n') + + +def clean_exam(): + """Removes all the objects from the database, required as if not done there might be a case of multile entries""" + data = Exam.objects.all() + data.delete() + +def load_exam(filename): + """Load exam code and exam name from the given csv file. The file should + declare a list of "exam_code;exam_name". + """ + try: + csvFile = open(filename, 'rb') + except IOError as (errno,strerror): + print "I/O error({0}): {1}".format(errno, strerror) + + csvReader = reader(csvFile, delimiter=";") + + for data in csvReader: + new_exam = Exam.objects.create() + new_exam.exam_code = data[0] + new_exam.exam_name = data[1] + new_exam.save() + print "Added ({0} : {1})".format(data[0], data[1])
\ No newline at end of file diff --git a/allotter/management/commands/loadoptions.py b/allotter/management/commands/loadoptions.py new file mode 100644 index 0000000..f7c01e6 --- /dev/null +++ b/allotter/management/commands/loadoptions.py @@ -0,0 +1,60 @@ +from optparse import make_option +from csv import reader +from django.core.management.base import BaseCommand +from allotter.models import Exam, Option + +class Command(BaseCommand): + option_list = BaseCommand.option_list + ( + make_option('--pcc',metavar='Paper course code file name', type=str), + make_option('--cc',metavar='Course code file name', type=str), + ) + help = "Give the filenames of the csv files that has all the option code, name and exam code relation" + + def handle(self, *args, **options): + + clean_option() + + load_option(options) + + self.stdout.write('Done\n') + + +def clean_option(): + """Removes all the objects from the database, required as if not done there might be a case of multiple entries""" + data = Option.objects.all() + data.delete() + +def load_option(options): + """Load option code and option name from the given csv file. The file should + declare a list of "exam_code,option_code,option,code". + """ + paperCourseFileName=options.get('pcc') + courseCodeFileName=options.get('cc') + try: + paperCourseFile = open(paperCourseFileName, 'rb') + except IOError as (errno,strerror): + print "I/O error({0}): {1}".format(errno, strerror) + + try: + courseCodeFile = open(courseCodeFileName, 'rb') + except IOError as (errno,strerror): + print "I/O error({0}): {1}".format(errno, strerror) + + paperReader = reader(paperCourseFile, delimiter=",") + courseReader = reader(courseCodeFile, delimiter=",") + + courseDict = {} + + for data in courseReader: + courseDict[int(data[0])]=data[1] + + for data in paperReader: + exam = Exam.objects.get(exam_code=data[0]) + for value in data[1:len(data)]: + try: + new_option = Option.objects.get(opt_code=value) + except Option.DoesNotExist: + new_option = Option(opt_name=courseDict[int(value)],opt_code=value) + new_option.save() + new_option.exam.add(exam) + print "Added (option {0} with code {1} and exam {2})".format(courseDict[int(value)],value,exam)
\ No newline at end of file diff --git a/allotter/management/commands/loadusers.py b/allotter/management/commands/loadusers.py new file mode 100644 index 0000000..99fd075 --- /dev/null +++ b/allotter/management/commands/loadusers.py @@ -0,0 +1,65 @@ +from optparse import make_option +from datetime import datetime +from csv import DictReader +from django.core.management.base import BaseCommand +from allotter.models import Exam, Application, User, Profile + +class Command(BaseCommand): + option_list = BaseCommand.option_list + ( + make_option('--usdf',metavar='User details file name', type=str), + ) + help = "Give the filename of the csv files that has all the details of the users" + + def handle(self, *args, **options): + + clean_users() + + load_users(options) + + self.stdout.write('Done\n') + + +def clean_users(): + """Removes all the objects from the database, required as if not done there might be a case of multiple entries""" + User.objects.filter(is_superuser=False).delete() + +def load_users(options): + """Load option code and option name from the given csv file. The file should + declare a list of "exam_code,option_code,option,code". + """ + userDetailsFileName=options.get('usdf') + try: + userDetailsFile = open(userDetailsFileName, 'rb') + except IOError as (errno,strerror): + print "I/O error({0}): {1}".format(errno, strerror) + + + userReader = DictReader(userDetailsFile, delimiter=":") + + + for data in userReader: + appno = data['AppNo.'] + regno = data['Reg.No.'] + new_user = User.objects.create_user(regno, password=appno, email="") + application = Application(user=new_user) + application.np = int(data['NP']) + if data['P1'].strip(): + application.first_paper = Exam.objects.get(exam_code=data['P1']) + try: + application.second_paper = Exam.objects.get(exam_code=data['P2']) + except: + pass + else: + application.first_paper = Exam.objects.get(exam_code=data['P2']) + + + application.nat = data['Nat'] + application.gender = data['Gdr'] + application.cent = data['Cent'] + application.cgy = data['Cgy'] + application.save() + dob = datetime.strptime(data['DOB'], "%d/%m/%y") + new_profile = Profile(user=new_user, application=application) + new_profile.dob = dob + new_profile.save() + print "Added user with {0} and {1} with dob as {2}".format(appno,regno,dob)
\ No newline at end of file diff --git a/allotter/models.py b/allotter/models.py index fc0353c..0004505 100644 --- a/allotter/models.py +++ b/allotter/models.py @@ -103,7 +103,7 @@ class Application(models.Model): def __unicode__(self): u = self.user - return u'Application for {0} {1}'.format(u.first_name, u.last_name) + return u'Application for {0}'.format(u.username) class Profile(models.Model): @@ -118,7 +118,7 @@ class Profile(models.Model): def __unicode__(self): u = self.user - return u'User Profile {0} {1}'.format(u.first_name, u.last_name) + return u'User Profile {0}'.format(u.username) |