-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerator.py
More file actions
56 lines (48 loc) · 2.06 KB
/
generator.py
File metadata and controls
56 lines (48 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import os
import csv
print('\n')
def generate_base_names():
with open('./base_names.txt', 'w') as base_names:
files = os.listdir('./csv')
files = [x for x in files if x.find('.csv') != -1]
for f in files:
filename = f[ : f.find('.csv')]
base_names.write('{}\n'.format(filename))
def generate_admin():
with open('./base_names.txt') as base_names:
with open('./output/admin.py', 'w') as admin:
admin.write('from django.contrib import admin\n')
admin.write('from ipeds_import.model import *\n\n')
admin.write('# Register your models here.\n')
for name in base_names:
name = name.strip()
admin.write('class {}_admin(admin.ModelAdmin):\n'.format(name))
admin.write(' pass\n\n')
admin.write('admin.site.register({}_model, {}_admin)\n\n'.format(name, name))
def generate_model():
with open('./base_names.txt') as base_names:
with open('./output/model.py', 'w') as model:
model.write('from django.db import models\n\n')
model.write('# auto generated model classes from csv file\n')
for name in base_names:
name = name.strip()
# filename = f[ : f.find('.csv')]
model.write('class {}_model(models.Model):\n'.format(name))
with open('./csv/{}.csv'.format(name)) as csvfile:
fields = str(csvfile.readline()).strip().split(',')
for field in fields:
field = field.strip("\"")
field = field.strip("\'")
model.write(' {} = models.TextField()\n'.format(field))
model.write('\n')
def main():
os.chdir(os.path.dirname(os.path.abspath(__file__)))
print("Generating base_names.txt...")
generate_base_names()
print("Generating model.py...")
generate_model()
print("Generating admin.py...")
generate_admin()
print("...Finished!")
if __name__ == '__main__':
main()