def addNewPackage(month, typeid, vip=None, user=None): if type(user) == dict: user = User.objects.filter(uid=user['uid'])[0] vip = flushVip(vip) if vip: currentPackage = vip.headPackage if currentPackage.level == typeid: currentPackage.days = currentPackage.days + month*31 currentPackage.save() else: if currentPackage.level < typeid: newPackage = VIPPackage(start_date = None, days = month*31, level=typeid, nextPackage=None) newPackage.save() vip = addNewHeadPackage(vip, newPackage) else: fatherPackage = None while currentPackage.level > typeid: fatherPackage = currentPackage currentPackage = currentPackage.nextPackage if currentPackage.level == typeid: currentPackage.days = currentPackage.days + month * 31 currentPackage.save() else: newPackage = VIPPackage(start_date = None, days = month*31, level=typeid, nextPackage=currentPackage) newPackage.save() fatherPackage.nextPackage = newPackage fatherPackage.save() return vip else: vip = VIP() vip.save() newPackage = VIPPackage(start_date = timezone.now(), days = month*31, level=typeid) newPackage.save() vip.headPackage = newPackage vip.save() user.vip = vip user.save() return vip