-
Notifications
You must be signed in to change notification settings - Fork 3
/
addData.py
150 lines (126 loc) · 5.22 KB
/
addData.py
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#Author : Devanshu Gupta
#Date : 16-04-2014
#Function of This Script :
#This file adds data to the database already saved in file
#This file is only used once by seprate calling,
#after creating storage.db
#Call this file after 'python manage.py syncdb'
#Type in 'python manage.py shell'
#After you are in your console
#Type in 'import addData'
#Type in 'addData.addData()'
import os
#List of Import of Models
#from <YourApp>.models import <ModelClass>
from appdata.models import State
from appdata.models import City
from appdata.models import BloodGroupType
from appdata.models import Facts
from appdata.models import NotDonate
from appdata.models import Medication
from appdata.models import FamousQuotes
class Data:
def __init__(self,filename):
f = open(filename, 'r')
self.datafield = map(lambda x: x.strip(), f.readlines())
self.read = -1
def nextText(self):
self.read += 1
while self.datafield[self.read]!='start':
self.read += 1
self.read += 1
string_arr = []
while self.datafield[self.read]!='end':
string_arr.append(self.datafield[self.read])
self.read += 1
return "\n".join(string_arr)
def nextCharField(self):
self.read += 1
return self.datafield[self.read]
def nextIntegerField(self):
self.read += 1
return int(self.datafield[self.read])
def fieldReadCount(self):
return len(self.datafield)
'''
#Method can be used for ForeignKey as well with slight modification
def add<ModelClass>(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),<fieldCount>):
obj = modelclass(<FieldName>=data.next<Type>(), [<FieldName>=data.next<Type>(), [<FieldName>=data.next<Type>()....]])
obj.save()
'''
def addState(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0, data.fieldReadCount(), 1):
obj = modelclass(state_name=data.nextCharField())
obj.save()
def addCity(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),2):
obj = modelclass(city_name=data.nextCharField(), state_name=State(state_name=data.nextCharField()))
obj.save()
def addBloodGroupType(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),1):
obj = modelclass(bloodtype=data.nextCharField())
obj.save()
def addFacts(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),1):
obj = modelclass(fact=data.nextCharField())
obj.save()
def addNotDonate(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),1):
obj = modelclass(notdonate=data.nextCharField())
obj.save()
def addMedication(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,data.fieldReadCount(),2):
obj = modelclass(medication=data.nextCharField(), waiting_time=data.nextCharField())
obj.save()
#addFamousQuotes is a custom made, and revealed some flaw in script
def addFamousQuotes(modelclass,MASTER_DIC):
filename = os.path.join(MASTER_DIC['DATA_DIR'], MASTER_DIC['FILES'][modelclass.__name__])
data = Data(filename)
for i in xrange(0,31):
obj = modelclass(quote=data.nextText(), author=data.nextCharField(), link=data.nextCharField(), reference=data.nextCharField())
obj.save()
def addData():
#Add files to add to the database
FILES = {
#'<ModelClass>' : '<data_file.txt>',
'City' : 'cities_data.txt',
'State' : 'state_data.txt',
'BloodGroupType' : 'blood_group_data.txt',
'Facts' : 'facts.txt',
'NotDonate' : 'no_donation.txt',
'Medication' : 'medication.txt',
'FamousQuotes' : 'sayings.txt',
}
#Replace by static path of data dictionary
DATA_DIR_NAME = 'assets//data'
#No alteration in following variables
BASE_DIR = os.path.dirname(__file__)
DATA_DIR = os.path.join(BASE_DIR, DATA_DIR_NAME)
MASTER_DIC = {'DATA_DIR':DATA_DIR,
'FILES':FILES}
#add<ModelClass>(<ModelClass>, MASTER_DIC)
#addState(State, MASTER_DIC)
#addCity(City, MASTER_DIC)
#addBloodGroupType(BloodGroupType, MASTER_DIC)
#addFacts(Facts, MASTER_DIC)
#addNotDonate(NotDonate, MASTER_DIC)
#addMedication(Medication, MASTER_DIC)
addFamousQuotes(FamousQuotes, MASTER_DIC)
print "Congratulations!!! The data has been added to the databases"
if __name__ == "__main__":
main()