spaceport/apiserver/import_old_portal.py
2020-01-17 04:16:09 +00:00

203 lines
4.6 KiB
Python
Executable File

import django, sys, os
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
django.setup()
from apiserver.api import models, old_models
from apiserver.api.serializers import process_image
MEMBER_FIELDS = [
'id',
# email -> old_email
'first_name',
'last_name',
'preferred_name',
'status',
'phone',
'expire_date',
'current_start_date',
'application_date',
'vetted_date',
'monthly_fees',
'emergency_contact_name',
'emergency_contact_phone',
# minor -> is_minor
'birthdate',
'guardian_name',
'street_address',
# city, provice -> city
'postal_code',
]
TRANSACTION_FIELDS = [
'id',
'member_id',
'date',
'amount',
'reference_number',
'memo',
'number_of_membership_months',
'payment_method',
'category',
'account_type',
'info_source',
]
CARD_FIELDS = [
'id',
'member_id',
'card_number',
'notes',
'last_seen_at',
'active_status',
]
COURSE_FIELDS = [
'id',
'name',
'description',
# True -> is_old
]
SESSION_FIELDS = [
'id',
# course_id -> course
# instructor -> old_instructor
# datetime -> fix timezone
'cost',
]
TRAINING_FIELDS = [
'id',
# class_session_id -> session
'member_id',
'attendance_status',
'sign_up_date',
'paid_date',
]
photo_folders = os.listdir('old_photos')
print('Found {} member photo folders'.format(len(photo_folders)))
print('Deleting all members...')
models.Member.objects.all().delete()
print('Importing old members...')
old = old_models.Members.objects.using('old_portal').all()
for o in old:
new = {}
for f in MEMBER_FIELDS:
new[f] = o.__dict__.get(f, None)
if o.city and o.province:
new['city'] = '{}, {}'.format(o.city, o.province)
new['old_email'] = o.email
new['is_minor'] = o.minor
small, medium, large = None, None, None
if str(o.id) in photo_folders:
folder = 'old_photos/' + str(o.id)
if 'photo.jpg' in os.listdir(folder):
small, medium, large = process_image(folder + '/photo.jpg')
print('Found a photo')
models.Member.objects.create(photo_small=small, photo_medium=medium, photo_large=large, **new)
print('Imported member #{} - {} {}'.format(
o.id, o.first_name, o.last_name
))
print('Deleting all transactions...')
models.Transaction.objects.all().delete()
print('Importing old transactions...')
old = old_models.Transactions.objects.using('old_portal').all()
for o in old:
new = {}
for f in TRANSACTION_FIELDS:
new[f] = o.__dict__.get(f, None)
models.Transaction.objects.create(**new)
print('Imported transaction #{} - {} {}'.format(
o.id, o.member_id, o.category
))
print('Deleting all cards...')
models.Card.objects.all().delete()
print('Importing old cards...')
old = old_models.AccessKeys.objects.using('old_portal').all()
for o in old:
new = {}
for f in CARD_FIELDS:
new[f] = o.__dict__.get(f, None)
models.Card.objects.create(**new)
print('Imported card #{} - {} {}'.format(
o.id, o.card_number, o.notes
))
print('Deleting all courses...')
models.Course.objects.all().delete()
print('Importing old courses...')
old = old_models.Courses.objects.using('old_portal').all()
for o in old:
new = {}
for f in COURSE_FIELDS:
new[f] = o.__dict__.get(f, None)
new['name'] = new['name'].split('<',1)[0]
new['is_old'] = True
models.Course.objects.create(**new)
print('Imported course #{} - {}'.format(
o.id, new['name']
))
print('Deleting all sessions...')
models.Session.objects.all().delete()
print('Importing old session...')
old = old_models.ClassSessions.objects.using('old_portal').all()
for o in old:
new = {}
for f in SESSION_FIELDS:
new[f] = o.__dict__.get(f, None)
new['course'] = models.Course.objects.get(id=o.course_id)
new['old_instructor'] = o.instructor
new['datetime'] = str(o.datetime).replace('+00:00', '-07:00')
models.Session.objects.create(**new)
print('Imported session #{} - {} {}'.format(
o.id, o.instructor, new['course']
))
print('Deleting all training...')
models.Training.objects.all().delete()
print('Importing old training...')
old = old_models.ClassRegistrants.objects.using('old_portal').all()
for o in old:
new = {}
for f in TRAINING_FIELDS:
new[f] = o.__dict__.get(f, None)
new['session'] = models.Session.objects.get(id=o.class_session_id)
models.Training.objects.create(**new)
print('Imported training #{} - {} {}'.format(
o.id, new['session'], o.member_id
))
print('Done.')