def push_agent_data(request): if request.method == POST: success = True message = '' agent = request.data.get('agent', None) address = request.data.get('address', None) lic = request.data.get('licence', None) region = request.data.get('region', None) employee = None rm = None rsm = None ram = None bm = None dm = None adm = None dept = None branch = None try: region = Region.objects.get(code=region['code']) except Region.DoesNotExist: if region.get('code', False) and region.get('name', False): region = Region.objects.create(code=region['code'], name=region['name']) pass if region: try: branch = Branch.objects.get(code__in=['HQ', 'RO']) except Branch.DoesNotExist: pass try: rm = Employee.objects.get( commission_code__icontains=agent['rm_code'] ) if agent['rm_code'] else None except Employee.DoesNotExist: pass try: rsm = Employee.objects.get( commission_code__icontains=agent['rsm_code'] ) if agent['rsm_code'] else None except Employee.DoesNotExist: pass try: ram = Employee.objects.get( commission_code__icontains=agent['ram_code'] ) if agent['ram_code'] else None except Employee.DoesNotExist: pass try: bm = Employee.objects.get( commission_code__icontains=agent['bm_code'] ) if agent['bm_code'] else None except Employee.DoesNotExist: pass try: dm = Employee.objects.get( commission_code__icontains=agent['dm_code'] ) if agent['dm_code'] else None except Employee.DoesNotExist: pass try: adm = Employee.objects.get( commission_code__icontains=agent['adm_code'] ) if agent['adm_code'] else None except Employee.DoesNotExist: pass try: with transaction.atomic(): employees = Employee.objects.filter( commission_code=agent['code']) if employees.count() == 1: employee = employees.first() elif employees.count() > 1: success = False message = 'Duplicate employees exist under this code [%s] - fix your shit' % agent[ 'code'] elif employees.count() < 1: employee = Employee() employee.commission_code = agent['code'] employee.first_name = agent['name'] employee.last_name = agent['surname'] employee.id_number = agent['id_number'] roles = agent['role'] employee.email = agent['email'] employee.region = region employee.save() except IntegrityError as e: success = False message = 'Employee could not be saved on elopsys. Detail: %s' % e.message print 'Agents updated' return JsonResponse({ 'success': success, 'message': message }, status=200, content_type='application/json')