def getJSON(request): """ Get JSON feed info from a feed that does not have basic authentication :param request: :return: """ if request.method == 'POST': # retrieve submitted Feed info from database read_obj = Read.objects.get(id = request.POST.get("read_id", None)) remote_user = request.POST.get("user_name", None) password = request.POST.get("password", None) silo_id = request.POST.get("silo_id", None) silo_name = request.POST.get("new_silo", None) result = importJSON(read_obj, request.user, remote_user, password, silo_id, silo_name) silo_id = str(result[2]) if result[0] == "error": messages.error(request, result[1]) else: messages.success(request, result[1]) return HttpResponseRedirect('/silo_detail/%s/' % silo_id) else: silos = Silo.objects.filter(owner=request.user) # display the form for user to choose a table or ener a new table name to import data into return render(request, 'read/file.html', { 'form_action': reverse_lazy("getJSON"), 'get_silo': silos })
def handle(self, *args, **options): frequency = options['frequency'] if frequency != "daily" and frequency != "weekly": return self.stdout.write("Frequency argument can either be 'daily' or 'weekly'") silos = Silo.objects.filter(unique_fields__isnull=False, reads__autopull_frequency=frequency).distinct() read_type = ReadType.objects.get(read_type="JSON") #self.stdout.write("silos: %s" % silos.count()) for silo in silos: reads = silo.reads.filter(type=read_type.pk) for read in reads: result = importJSON(read, silo.owner, None, None, silo.pk, None) print(result) if result[0] == "error" or result[0] == 40: logger.error("Silo_ID: %s %s" % (result[2], result[1])) send_mail("Tola-Tables Auto-Pull Failed", "table_id: %s, source_id: %s, %s %s" % (silo.pk, read.pk, result[2], result[1]), "*****@*****.**", [silo.owner.email], fail_silently=False)
def importDataFromReads(request, silo, reads): for read in reads: if read.type.read_type == "ONA": ona_token = ThirdPartyTokens.objects.get(user=silo.owner.pk, name="ONA") response = requests.get(read.read_url, headers={'Authorization': 'Token %s' % ona_token.token}) data = json.loads(response.content) res = saveDataToSilo(silo, data) elif read.type.read_type == "CSV": #messages.info(request, "When updating data in a table, its CSV source is ignored.") return (messages.INFO, "When updating data in a table, its CSV source is ignored.") elif read.type.read_type == "JSON": result = importJSON(read, request.user, None, None, silo.pk, None) #messages.add_message(request, result[0], result[1]) return (result[0], result[1]) elif read.type.read_type == "GSheet Import": msgs = import_from_gsheet_helper(request.user, silo.id, None, read.resource_id) return msgs
def handle(self, *args, **options): frequency = options['frequency'] if frequency != "daily" and frequency != "weekly": return self.stdout.write( "Frequency argument can either be 'daily' or 'weekly'") # silos = Silo.objects.filter(unique_fields__isnull=False, reads__autopull_frequency=frequency).distinct() silos = Silo.objects.filter(pk__in=[2777]) read_type = ReadType.objects.get(read_type="JSON") #self.stdout.write("silos: %s" % silos.count()) if silos.count() > 1: logger.error("Aborting push to gsheet, more than one Silo found.") else: for silo in silos: reads = silo.reads.filter(type=read_type.pk) for read in reads: result = importJSON(read, silo.owner, None, None, silo.pk, None) print(result) if result[0] == "error" or result[0] == 40: logger.error("Silo_ID: %s %s" % (result[2], result[1]))
def handle(self, *args, **options): frequency = options['frequency'] if frequency != "daily" and frequency != "weekly": return self.stdout.write( "Frequency argument can either be 'daily' or 'weekly'") silos = Silo.objects.filter( unique_fields__isnull=False, reads__autopull_frequency=frequency).distinct() read_type = ReadType.objects.get(read_type="JSON") #self.stdout.write("silos: %s" % silos.count()) for silo in silos: reads = silo.reads.filter(type=read_type.pk) for read in reads: result = importJSON(read, silo.owner, None, None, silo.pk, None) print(result) if result[0] == "error" or result[0] == 40: logger.error("Silo_ID: %s %s" % (result[2], result[1])) send_mail("Tola-Tables Auto-Pull Failed", "table_id: %s, source_id: %s, %s %s" % (silo.pk, read.pk, result[2], result[1]), settings.NOTIFICATION_SENDER, [silo.owner.email], fail_silently=False)