Esempio n. 1
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
    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]))
Esempio n. 5
0
    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)