def create_account(request, account, accountID=None, updateAPI=True): accountAlreadyExists = False createAPIAccount = True if accountID: accountObj = Account.objects.get(id=accountID) accountAlreadyExists = True else: try: accountObj = Account.objects.get(email=account['email']) accountAlreadyExists = True except ObjectDoesNotExist: accountObj = Account() accountObj.first_name = account['first_name'] accountObj.last_name = account['last_name'] accountObj.gender = account['gender'] if account['birth_date'] not in ['', 'None', None]: dob = datetime.datetime.strptime(account['birth_date'], '%Y-%m-%d').date() else: dob = None accountObj.birth_date = dob accountObj.email = account['email'] accountObj.street_number = account['street_number'] accountObj.city = account['city'] accountObj.zipcode = account['zipcode'] accountObj.phone = account['phone'] accountObj.country = account['country'] accountObj.utm_campaign = account['utm_campaign'] accountObj.utm_source = account['utm_source'] accountObj.utm_medium = account['utm_medium'] accountObj.tr_language = account['tr_language'] accountObj.tr_input_method = account['tr_input_method'] accountObj.tr_ip_address = account['tr_ip_address'] accountObj.lead = account['lead'] if 'mailing_list' in account: accountObj.mailing_list = int(account['mailing_list']) else: accountObj.mailing_list = int(account['mailing_lists'][0]['resource_uri'].split('/')[3]) if 'tr_referral_name' in account: accountObj.tr_referral = account['tr_referral_name'] else: accountObj.tr_referral = account['tr_referral']['name'] accountObj.save() if updateAPI: if accountAlreadyExists: createAPIAccount = api_delete_account(accountObj.resource_uri) if createAPIAccount: api_create_successful, resource_uri = api_create_account(accountObj) if api_create_successful: accountObj.resource_uri = resource_uri accountObj.save() if accountAlreadyExists: message = 'Account successfully updated' else: message = 'Account successfully created' messages.success(request, message) else: messages.warning(request, 'Account successfully created but the API post failed')