Skip to content

Instantly share code, notes, and snippets.

@artschwagerb
Created May 5, 2015 21:12
Show Gist options
  • Save artschwagerb/9656d9c2952a978a28b2 to your computer and use it in GitHub Desktop.
Save artschwagerb/9656d9c2952a978a28b2 to your computer and use it in GitHub Desktop.
Genesis Report CSV to Django
import os
import sys
import datetime
from datetime import datetime
import csv
import traceback
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
from django.db import connection, connections, transaction
from django.core.exceptions import ObjectDoesNotExist
from htps.models import *
def str2bool(v):
return v.lower() in ("y", "true", "yes", "ok")
def sync_students(self):
self.stdout.write('Syncing Genesis Withdrawn to Django')
i = 0
datafile = open('/home/genesis/students_withdrawn.csv', 'r')
datareader = csv.reader(datafile)
#original query
#person_list = Person.objects.filter(is_student=True)
#Using .only() improves performance similar to a SELECT minimal fields in SQL.
person_list = Person.objects.filter(is_student=True).only('id','htps_id','date_withdraw','withdraw_code','active')
if person_list:
for row in datareader:
if i == 0:
i = i + 1
continue
elif i % 100 == 0:
self.stdout.write(str(i) + ' Genesis Students Synced')
try:
htps_id = row[1]
withdraw_date = row[4]
withdraw_code = row[5]
person_item = person_list.get(htps_id=htps_id)
person_item.date_withdraw = datetime.strptime(withdraw_date, '%m/%d/%Y')
person_item.withdraw_code = withdraw_code
person_item.active = False
person_item.save()
except:
if not "DoesNotExist: Person matching query does not exist." in str(traceback.format_exc()):
print str(traceback.format_exc())
finally:
i = i + 1
class Command(BaseCommand):
args = '(none)'
help = 'Sync Genesis Withdrawn Students to Django'
def handle(self, *args, **options):
self.stdout.write('\033[01;31m')
self.stdout.write(' ----------------------------------------------- ')
self.stdout.write('| Sync Genesis Withdrawn Students |')
self.stdout.write('| Modified: 05/04/15 |')
self.stdout.write('| Author: Brian Artschwager |')
if settings.DEBUG:
self.stdout.write('| Running in DEBUG Mode!! |')
self.stdout.write(' ----------------------------------------------- ' + '\033[1;m')
self.stdout.write('')
sync_students(self)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment