def import_from_fig(request): response = ""; type = request.GET.get('type','') disc = request.GET.get('disc','') db = request.GET.get('db','') un = request.GET.get('user','') pw = request.GET.get('pw','') try: cnx = mysql.connector.connect(user=un, password=pw, host='212.147.112.242',database=db,port='8083') except mysql.connector.Error as err: return JsonResponse({'result':err}) cursor = cnx.cursor() discipline = Disc.objects.all() disc_list = dict([(disc.folder_name,disc.id) for disc in discipline]) if discipline.exists(): #might need to do just all users first, then match them up for imports. if 'fixsubdiscs' in type: subs = Subscription.objects.filter(disc=None) for sub in subs: try: sub.disc_id = sub.user.usersettings.judge_disc_id sub.save() except: sub.save() if 'userremovebad' in type: User.objects.filter(first_name='AutoFederation').delete() Subscription.objects.filter(user=None).delete() if 'usertest' in type: #User.objects.filter(usersettings__is_imported_user=True).delete()84262 #Subscription.objects.filter(user=None).delete() query="SELECT userid,username,email,password,fullname,country,type,mag,wag,tra,ryt,acr,aer,pk,judgeid,paypal_id,txn_id,disc,period,lastpayment,expires FROM users left join subscriptions on users.UserID = subscriptions.user_id where UserID >= " + request.GET.get('start',84262) + " and UserID < " + request.GET.get('end',87000) + " order by userid desc" cursor.execute(query) last_id = -1 for (userid,username,email,password,fullname,country,type,mag,wag,tra,ryt,acr,aer,pk,judgeid,paypal_id,txn_id,disc,period,lastpayment,expires) in cursor: user_disc_id = -1 if mag==1: user_disc_id = disc_list['mag'] elif wag==1: user_disc_id = disc_list['wag'] elif tra==1: user_disc_id = disc_list['tra'] elif ryt==1: user_disc_id = disc_list['rg'] elif acr==1: user_disc_id = disc_list['acro'] elif aer==1: user_disc_id = disc_list['aer'] elif pk==1: user_disc_id = disc_list['pk'] if last_id != userid and User.objects.filter(username=username).first() == None: last_id = userid #create the user try: new_user = User.objects.create_user(username=username,email=email,password='importeduserpasswordholder',first_name=fullname) new_user.save() u_settings = UserSettings(user=new_user) u_settings.old_password = password u_settings.is_imported_user = True u_settings.old_id = userid u_settings.type = type u_settings.judge_id=judgeid u_settings.country = country u_settings.save() if user_disc_id != -1 and type=='FIG': u_settings.judge_disc_id = user_disc_id elif type == 'Customer': u_settings.judge_disc_id = disc_list[disc.lower()] u_settings.save() #now give subscription if Subscription.objects.filter(user=new_user).first() == None: this_period="Year" if period == '1 M': this_period = 'Month' sub = Subscription(user=new_user,interval=this_period,is_imported=True) if paypal_id != None: customer_id=paypal_id if txn_id != None: subscription_id=txn_id sub.expires='2022-04-01' if new_user.usersettings.type == 'FIG': sub.free=True sub.save() except Exception as e: response += " | error: " + username else: new_user = User.objects.filter(username=username).first() response += " | users imported " #delete for that disc discid = discipline[0].id if 'incrementvalue' in type: elements = Element.objects.filter(disc_id=discid) for e in elements: if e.letter_value != "": e.up_value_letter = chr(ord(e.letter_value)+1) if e.letter_value != "A": e.down_value_letter = chr(ord(e.letter_value)-1) else: e.down_value_letter = "A" e.save() if 'element' in type or type=='all': ElementText.objects.filter(element__disc_id=discid).delete() Element.objects.filter(disc_id=discid).delete() #elements query="Select DISTINCT main.event,main.strgrp,main.codeorder,main.`id number`, main.value, main.range, `id text`,shorttext,text,named,hold,`author's comments`,1dvlower,1dvhigher,internalid FROM Main INNER JOIN EnglishSkills ON Main.Event = EnglishSkills.Event AND Main.StrGrp = EnglishSkills.StrGrp AND Main.CodeOrder = EnglishSkills.CodeOrder" cursor.execute(query) for (event,strgrp,codeorder,idnum,value,rng,idtext,shorttext,text,named,hold,additional,downvalue,upvalue,oldid) in cursor: if downvalue == None: downvalue = '' if upvalue == None: upvalue = '' if rng == None: rng = '' value = value.replace("points","") el = Element(disc_id=discid,event=event,str_grp=strgrp,code_order=codeorder,id_number=idnum,letter_value=value[:1],value=value[-3:],up_value_letter=upvalue,down_value_letter=downvalue,range=rng,old_id=oldid) el.save() if hold == None: hold = '' if additional == None: additional='' if shorttext == None: shorttext = '' if named == None: named = '' if shorttext == '': shorttext = text et = ElementText(element=el, text=text,short_text=shorttext,named=named,additional_info=additional,hold_text=hold,id_number_text=idtext) et.save() response += " | elements created: " + str(Element.objects.filter(disc_id=discid).count()) if 'unrated' in type or type=='all': UnratedElement.objects.filter(disc_id=discid).delete() query="Select id,event,name From extraskillsenglish order by event" cursor.execute(query) for (id,event,name) in cursor: ue = UnratedElement(disc_id=discid,old_id=id,event=event,name=name) ue.save() response += " | unrated created: " + str(UnratedElement.objects.filter(disc_id=discid).count()) if 'video' in type or type=='all': Video.objects.filter(disc_id=discid).delete() query="Select VideoID,Event,File,FPS,Approved,JohannaApproved From VideosEnglish order by event" cursor.execute(query) for (id,event,file,fps,approved,approvedJ) in cursor: file = file.replace(".mov",".mp4") vid = Video(disc_id=discid,old_id=id,event=event,file=file,fps=fps,approved_final=approved,approved_liason=approvedJ) vid.save() response += " | videos created: " + str(Video.objects.filter(disc_id=discid).count()) if 'vidlinks' in type or type=='all': #video links elements VideoLink.objects.filter(video__disc_id=discid).delete() query="Select file,videojump,internalid FROM Main where file is not null and file <> ''" cursor.execute(query) for (file,videojump,id) in cursor: element_ref = Element.objects.filter(old_id=id,disc_id=discid).first() order=0 for link,jump in zip(file.split(','),videojump.split(',')): try: vl = VideoLink(video=Video.objects.filter(old_id=link,disc_id=discid).first(),element=element_ref,frame_jump=jump,order=order) vl.save() except: errored = "video link missed" order = order + 1 response += " | videos linked: " + str(VideoLink.objects.filter(video__disc_id=discid).count()) if 'rules' in type or type=='all': #rules RuleText.objects.filter(rule__disc_id=discid).delete() Rule.objects.filter(disc_id=discid).delete() query="Select DISTINCT qresp.question,RuleID,ArtEvt,RuleNo, SubRule, cue, response,ruledescription,`author's comments`,specificdeduction,cat0,cat1,cat2,cat3,cat4 FROM `qresp` INNER JOIN `qrespenglish` on `qresp`.question = `qrespenglish`.question ORDER BY `qresp`.`Question`" cursor.execute(query) order = 0 last_rule = "" rule_no_order = 0 last_art = "" for (oldid,ruleid,artevt,ruleno,subrule,cue,answer,ruledesc,additionalinfo,specificdeduction,cat0,cat1,cat2,cat3,cat4) in cursor: if ruleno == None: ruleno = '' if subrule == None: subrule = '' if cat0 == None: cat0 = '' if cat1 == None: cat1 = '' if cat2 == None: cat2 = '' if cat3 == None: cat3 = '' if cat4 == None: cat4 = '' if additionalinfo == None: additionalinfo='' if last_rule != ruleid: order = order + 1 rule_no_order = 0 if artevt != last_art: rule_no_order = rule_no_order + 1 last_art = artevt last_rule = ruleid answer = answer.replace("777","") cue = cue[4:] rl = Rule(disc_id=discid,event=ruleid,rule_id=ruleid,section=ruleid,rule_no=artevt,search_display=ruleid[:2].replace('A','S'),display_order=(order*10),old_id=oldid,sub_rule=(ruleid + "." + ruleno + "." + subrule)) rl.save() rt = RuleText(rule=rl,cue=cue,response=answer,additional_info=additionalinfo,rule_description=ruledesc,specific_deduction=specificdeduction,cat0=cat0,cat1=cat1,cat2=cat2,cat3=cat3,cat4=cat4,section_text=artevt,chapter_text=ruleid) rt.save() response += " | rules added: " + str(Rule.objects.filter(disc_id=discid).count()) if 'rulelinks' in type or type=='all': #rule links RuleLink.objects.filter(disc_id=discid).delete() RuleLink.objects.filter(disc=None).delete() query="Select text,rulelink,categoryname,categoryorder,deductionamount,connectedelements,type,event,id FROM rulelinksenglishconversion where rulelink is not null and categoryname is not null and categoryorder is not null" cursor.execute(query) for (text,rulelink,categoryname,categoryorder,deductionamount,connectedelements,type,event,id) in cursor: if event == None: event = '' if deductionamount == '' or deductionamount == ' ' or deductionamount == None: deductionamount = 0 elif '.' in deductionamount: deductionamount = deductionamount.replace('.','') rl = RuleLink(disc_id=discid,text=text,category_name=categoryname,category_order=categoryorder,deduction_amount=deductionamount,connected_elements=connectedelements,type=type[:1].upper(),event=event,old_id=id) rl.save(); for link in rulelink.split(','): rule = Rule.objects.filter(old_id=link,disc_id=discid).first() if rule: rl.rule.add(Rule.objects.filter(old_id=link,disc_id=discid).first()) rl.save(); response += " | rules linked: " + str(RuleLink.objects.filter(disc_id=discid).count()) if 'vidnotes' in type or type=='all': #rule links VideoNote.objects.filter(video__disc_id=discid).delete() query="Select videoid,type,color,linkid,frame,Event,type,event,cr,overridetext,novaluetype,skipframe FROM videonotes order by videoid" cursor.execute(query) lastvid = "" for (videoid,type,color,linkid,frame,Event,type,event,cr,overridetext,novaluetype,skipframe) in cursor: if cr == None: cr = '' if overridetext == None: overridetext = '' if novaluetype == None: novaluetype = '' if color == None: color = '' if skipframe == None or skipframe == '' or skipframe == '0' or skipframe == 0: skipframe = False else: skipframe = True if color == '9': color = '' elif color == 'b': color = 'Blue' elif color == 'r': color = 'Red' event = event.upper() if lastvid != videoid: lastvid = videoid video_ref = Video.objects.filter(old_id=videoid,disc_id=discid).first() if videoid == 584: lastvid = videoid vn = VideoNote(video=video_ref,frame=frame,skip_frame=skipframe,color=color,event=event,cr=cr,override_text=overridetext,no_value_type=novaluetype) if type.lower() == "element" and novaluetype.lower() == "unrated": ul = UnratedElement.objects.filter(old_id=linkid,disc_id=discid).first() vn.unrated_link = ul elif type == 'E' or type == 'D' or type == 'A': rl = RuleLink.objects.filter(old_id=linkid,disc_id=discid).first() vn.rule_link = rl else: el = Element.objects.filter(old_id=linkid,disc_id=discid).first() vn.element_link = el vn.save(); response += " | video notes created: " + str(VideoNote.objects.filter(video__disc_id=discid).count()) if 'tcexamples' in type or type=='all': #Video.objects.filter(disc_id=discid).delete() Video.objects.filter(disc_id=discid).exclude(tcexample=None).delete() query="Select ID,Event,Year,NoteType,File,FPS,SpecialNotes,name From tcexamples order by Year,NoteType,Event" cursor.execute(query) for (id,event,year,type,file,fps,special,name) in cursor: file = file.replace(".mov",".mp4") vid = Video(disc_id=discid,old_id=id+100000,event=event,file=file,fps=fps) vid.save() tcvid = TCExample(video=vid,name=name,type=type,year=year,short_name=year[2:],special_notes=special) tcvid.save() response += " | tc videos created: " + str(TCExample.objects.filter(video__disc_id=discid).count()) if 'tcnotes' in type or type=='all': VideoNote.objects.filter(video__disc_id=discid).exclude(video__tcexample=None).delete() query="Select videoid,type,color,linkid,frame,Event,type,event,cr,overridetext,novaluetype,skipframe FROM tcexamplesnotes order by videoid" cursor.execute(query) lastvid = "" for (videoid,type,color,linkid,frame,Event,type,event,cr,overridetext,novaluetype,skipframe) in cursor: if cr == None: cr = '' if overridetext == None: overridetext = '' if novaluetype == None: novaluetype = '' if color == None: color = '' if skipframe == None or skipframe == '' or skipframe == '0' or skipframe == 0: skipframe = False else: skipframe = True if color == '9': color = '' elif color == 'b': color = 'Blue' elif color == 'r': color = 'Red' event = event.upper() if lastvid != videoid: lastvid = videoid video_ref = Video.objects.filter(old_id=videoid+100000,disc_id=discid).first() vn = VideoNote(video=video_ref,frame=frame,skip_frame=skipframe,color=color,event=event,cr=cr,override_text=overridetext,no_value_type=novaluetype) if type.lower() == "element" and novaluetype.lower() == "unrated": ul = UnratedElement.objects.filter(old_id=linkid,disc_id=discid).first() vn.unrated_link = ul elif type == 'E' or type == 'D' or type == 'A': rl = RuleLink.objects.filter(old_id=linkid,disc_id=discid).first() vn.rule_link = rl else: el = Element.objects.filter(old_id=linkid,disc_id=discid).first() vn.element_link = el vn.save(); response += " | tc notes created: " + str(VideoNote.objects.filter(video__disc_id=discid).exclude(video__tcexample=None).count()) if 'acrobalancepairs' in type or type=='acroall': AcroBalance.objects.filter(event='XP').delete() #balance pairs query="Select Catagory,`Skill Number`,Value,Bonus,`Transition Bonus`,`Skill Name`,`Skill Description`,TransitionGroup,`Top/Bottom`,`Top Interface Point`,`Bottom Interface Point`,BaseNumber,PageNumber,ThumbnailDirection FROM main" cursor.execute(query) for (cat,skillnum,value,bonus,transbonus,name,description,transgroup,topbottom,topinterface,bottominterface,basenumber,pagenumber,thumbnaildirection) in cursor: if transbonus == None: transbonus = '' if transgroup == None: transgroup = '' if topinterface == None: topinterface = '' if bottominterface == None: bottominterface = '' if basenumber == None: basenumber = '' if value == None: value = -1 if bonus == None: bonus = -1 ab = AcroBalance(event='XP',category=cat,skill_number=skillnum,value=value,bonus=bonus,transition_bonus=transbonus,skill_name=name,skill_description=description,transition_group=transgroup,top_bottom=topbottom,top_interface_point=topinterface,bottom_interface_point=bottominterface, \ base_number=basenumber,page_number=pagenumber,thumbnail_direction=thumbnaildirection) ab.save() response += " | acro balance pairs created: " + str(AcroBalance.objects.all().count()) if 'acrobalancetrio' in type or type=='acroall': AcroBalance.objects.filter(event='TR').delete() #balance trios query="Select Event,Category,`Skill Number`,Value,Value2,Value3,Value4,Bonus,`Transition Bonus`,`Skill Name`,`Skill Description`,Orientation,Layer,BaseBoxNumber,TransitionGroup,`Top/Bottom`,`Top Interface Point`,`Bottom Interface Point`,`Bottom Interface Point 2`,SpecialBaseNumber,BaseNumber,PageNumber,ThumbnailDirection,StartNumber FROM maintrio" cursor.execute(query) for (event,cat,skillnum,value,value2,value3,value4,bonus,transbonus,name,description,orientation,layer,baseboxnumber,transgroup,topbottom,topinterface,bottominterface,bottominterface2,specialbasenumber,basenumber,pagenumber,thumbnaildirection,startnumber) in cursor: if transbonus == None: transbonus = '' if transgroup == None: transgroup = '' if topinterface == None: topinterface = '' if description == None: description = '' if bottominterface == None: bottominterface = '' if basenumber == None: basenumber = '' if startnumber == None: startnumber = '' if orientation == None: orientation = '' if cat == None: cat = '' if layer == None: layer = '' if specialbasenumber == None: specialbasenumber = '' if bottominterface2 == None: bottominterface2 = '' if value == None: value = -1 if value2 == None: value2 = -1 if value3 == None: value3 = -1 if value4 == None: value4 = -1 if bonus == None: bonus = -1 ab = AcroBalance(event='TR',category=cat,skill_number=skillnum,value=value,value2=value2,value3=value3,value4=value4,bonus=bonus,transition_bonus=transbonus,skill_name=name,skill_description=description,transition_group=transgroup,top_bottom=topbottom,top_interface_point=topinterface,bottom_interface_point=bottominterface,bottom_interface_point2=bottominterface2, \ base_number=basenumber,page_number=pagenumber,thumbnail_direction=thumbnaildirection,orientation=orientation,layer=layer,special_base_number=specialbasenumber,start_number=startnumber,base_box_number=baseboxnumber) ab.save() response += " | acro balance trios created: " + str(AcroBalance.objects.all().count()) if 'acrobalancegroup' in type or type=='acroall': AcroBalance.objects.filter(event='GR').delete() #balance group query="Select Event,Category,`Skill Number`,Value,Value2,Value3,Value4,Bonus,`Transition Bonus`,`Skill Name`,`Skill Description`,Orientation,Layer,BaseBoxNumber,TransitionGroup,`Top/Bottom`,`Top Interface Point`,`Bottom Interface Point`,`Bottom Interface Point 2`,SpecialBaseNumber,BaseNumber,PageNumber,ThumbnailDirection,StartNumber FROM maingroup" cursor.execute(query) for (event,cat,skillnum,value,value2,value3,value4,bonus,transbonus,name,description,orientation,layer,baseboxnumber,transgroup,topbottom,topinterface,bottominterface,bottominterface2,specialbasenumber,basenumber,pagenumber,thumbnaildirection,startnumber) in cursor: if transbonus == None: transbonus = '' if transgroup == None: transgroup = '' if topinterface == None: topinterface = '' if description == None: description = '' if bottominterface == None: bottominterface = '' if basenumber == None: basenumber = '' if startnumber == None: startnumber = '' if orientation == None: orientation = '' if cat == None: cat = '' if layer == None: layer = '' if specialbasenumber == None: specialbasenumber = '' if bottominterface2 == None: bottominterface2 = '' if value == None or value == '': value = -1 if value2 == None or value2 == '': value2 = -1 if value3 == None or value3 == '': value3 = -1 if value4 == None or value4 == '': value4 = -1 if bonus == None or bonus == '': bonus = -1 ab = AcroBalance(event='GR',category=cat,skill_number=skillnum,value=value,value2=value2,value3=value3,value4=value4,bonus=bonus,transition_bonus=transbonus,skill_name=name,skill_description=description,transition_group=transgroup,top_bottom=topbottom,top_interface_point=topinterface,bottom_interface_point=bottominterface,bottom_interface_point2=bottominterface2, \ base_number=basenumber,page_number=pagenumber,thumbnail_direction=thumbnaildirection,orientation=orientation,layer=layer,special_base_number=specialbasenumber,start_number=startnumber,base_box_number=baseboxnumber) ab.save() response += " | acro balance groups created: " + str(AcroBalance.objects.all().count()) if 'acroinvalid' in type or type=='acroall': AcroInvalid.objects.all().delete() #balance query="Select Base,Top,InvalidFor FROM acrobalanceinvalid" cursor.execute(query) for (base,top,invalidfor) in cursor: if base == 0: base = None else: base = AcroBalance.objects.filter(skill_number=base,event='XP').first() if base == None: continue #goto next one as this is a bad record if top == 0: top = None else: top = AcroBalance.objects.filter(skill_number=top,event='XP').first() if top == None: continue #goto next one as this is a bad record ai = AcroInvalid(base=base,top=top,invalid_for=invalidfor) ai.save() response += " | acro invalid created: " + str(AcroInvalid.objects.all().count()) #balance group query="Select Base,Top,InvalidFor FROM acrobalanceinvalidgroup" cursor.execute(query) for (base,top,invalidfor) in cursor: if base == 0: base = None else: base = AcroBalance.objects.filter(skill_number=base,event='GR').first() if base == None: continue #goto next one as this is a bad record if top == 0: top = None else: top = AcroBalance.objects.filter(skill_number=top,event='GR').first() if top == None: continue #goto next one as this is a bad record ai = AcroInvalid(base=base,top=top,invalid_for=invalidfor) ai.save() response += " | acro invalid group created: " + str(AcroInvalid.objects.all().count()) if 'acrobalancetransition' in type or type=='acroall': AcroBalanceTransition.objects.all().delete() #pairs query="Select firstbalance,secondbalance,movementvalue,`table number`,baseturn180,baseturn360,baseturn180hs,baseturn360hs FROM pairtransitionvalues" cursor.execute(query) for (firstbalance,secondbalance,movementvalue,table_number,baseturn180,baseturn360,baseturn180hs,baseturn360hs) in cursor: if ',' in movementvalue: movementvaluehs = movementvalue.split(',')[1] movementvalue = movementvalue.split(',')[0] else: movementvaluehs = 0 at = AcroBalanceTransition(event='XP',first_balance=firstbalance,second_balance=secondbalance,movement_value=movementvalue,movement_value_hs_fs=movementvaluehs,table_number=table_number,base_turn_180=baseturn180,base_turn_180_hs=baseturn180hs,base_turn_360=baseturn360,base_turn_360_hs=baseturn360hs) at.save() response += " | acro balance pairs transition created: " + str(AcroBalanceTransition.objects.all().count()) #trio query="Select firstbalance,secondbalance,movementvalue,movementvalue2,movementvalue3,movementvalue4,`table number`,baseturn180,baseturn360,baseturn180hs,baseturn360hs FROM triotransitionvalues" cursor.execute(query) for (firstbalance,secondbalance,movementvalue,movementvalue2,movementvalue3,movementvalue4,table_number,baseturn180,baseturn360,baseturn180hs,baseturn360hs) in cursor: if ',' in movementvalue: movementvaluehs = movementvalue.split(',')[1] movementvalue = movementvalue.split(',')[0] else: movementvaluehs = 0 at = AcroBalanceTransition(event='TR',first_balance=firstbalance,second_balance=secondbalance,movement_value=movementvalue,movement_value_hs_fs=movementvaluehs,movement_value2=movementvalue2,movement_value3=movementvalue3,movement_value4=movementvalue4,table_number=table_number,base_turn_180=baseturn180,base_turn_180_hs=baseturn180hs,base_turn_360=baseturn360,base_turn_360_hs=baseturn360hs) at.save() response += " | acro balance trios transition created: " + str(AcroBalanceTransition.objects.all().count()) #groups query="Select firstbalance,secondbalance,movementvalue,movementvalue2,movementvalue3,movementvalue4,`table number`,baseturn180,baseturn360,baseturn180hs,baseturn360hs FROM grouptransitionvalues" cursor.execute(query) for (firstbalance,secondbalance,movementvalue,movementvalue2,movementvalue3,movementvalue4,table_number,baseturn180,baseturn360,baseturn180hs,baseturn360hs) in cursor: if ',' in movementvalue: movementvaluehs = movementvalue.split(',')[1] movementvalue = movementvalue.split(',')[0] else: movementvaluehs = 0 at = AcroBalanceTransition(event='GR',first_balance=firstbalance,second_balance=secondbalance,movement_value=movementvalue,movement_value_hs_fs=movementvaluehs,movement_value2=movementvalue2,movement_value3=movementvalue3,movement_value4=movementvalue4,table_number=table_number,base_turn_180=baseturn180,base_turn_180_hs=baseturn180hs,base_turn_360=baseturn360,base_turn_360_hs=baseturn360hs) at.save() response += " | acro balance groups transition created: " + str(AcroBalanceTransition.objects.all().count()) if 'acromountspairs' in type or type=='acroall': AcroMount.objects.filter(event='XP').delete() #mount pairs query="Select Mount,Base,Top,MountValue,PageNumber FROM acromounts where MountValue is not null" cursor.execute(query) for (mount,base,top,mountvalue,pagenumber) in cursor: if 'MFS' in mount: cat=1 else: cat=2 base = AcroBalance.objects.filter(skill_name=base,event='XP').first() top = AcroBalance.objects.filter(skill_name=top,event='XP').first() am = AcroMount(event='XP',category=cat,mount=mount,base=base,top=top,value=mountvalue,page_number=pagenumber) am.save() response += " | acro mount pairs created: " + str(AcroMount.objects.all().count()) if 'acromountsgroup' in type or type=='acroall': AcroMount.objects.filter(event='GR').delete() #mount groups query="Select Mount,StartNumber,MountValue,PageNumber FROM acromountsgroup where MountValue is not null" cursor.execute(query) for (mount,startnumber,mountvalue,pagenumber) in cursor: am = AcroMount(event='GR',category=startnumber,mount=mount,value=mountvalue,page_number=pagenumber) am.save() response += " | acro mount groups created: " + str(AcroMount.objects.all().count()) if 'acromountstrio' in type or type=='acroall': AcroMount.objects.filter(event='TR').delete() #mount trios query="Select Mount,StartNumber,MountValue,PageNumber FROM acromountstrio where MountValue is not null" cursor.execute(query) for (mount,startnumber,mountvalue,pagenumber) in cursor: am = AcroMount(event='TR',category=startnumber,mount=mount,value=mountvalue,page_number=pagenumber) am.save() response += " | acro mount trios created: " + str(AcroMount.objects.all().count()) return JsonResponse({'result':response})