Пример #1
0
 def handle(self, *args, **options):
     
     user = User.objects.get(username=options.get('user'))
     pk=options.get('proj')
     if pk:
         locaties = ProjectLocatie.objects.filter(pk=pk)
     else:
         locaties = ProjectLocatie.objects.all()
         
     _all = options.get('all')
     days = None if _all else DAYSBACK
     for locatie in locaties:
         cartodb = locatie.cartodb
         for akvo in locatie.akvoflow_set.all():
             api = FlowAPI(instance=akvo.instance, key=akvo.key, secret=akvo.secret)
             try:
                 logger.info('Meetpuntgegevens ophalen voor {}'.format(locatie))
                 m1,w1 = importAkvoRegistration(api, akvo, projectlocatie=locatie,user=user,days=days)
                 logger.info('Waarnemingen ophalen voor {}'.format(locatie))
                 m2,w2=importAkvoMonitoring(api, akvo, days)
                 mp = m1|m2
                 wn = w1|w2
                 if mp:
                     logger.info('Grafieken aanpassen')
                     util.updateSeries(mp, user)
                     #logger.info('Cartodb actualiseren')
                     #util.exportCartodb(cartodb, mp)
                 akvo.last_update = timezone.now()
                 akvo.save()        
             except Exception as e:
                 logger.exception('Probleem met verwerken nieuwe EC metingen: %s',e)
             finally:
                 pass
Пример #2
0
    def handle(self, *args, **options):
        
        akvo = AkvoFlow.objects.get(pk=options.get('akvo'))
        api = FlowAPI(instance=akvo.instance, key=akvo.key, secret=akvo.secret)
        cartodb = CartoDb.objects.get(pk=options.get('cartodb'))
    
        project = ProjectLocatie.objects.get(pk=options.get('proj'))
        user = User.objects.get(username=options.get('user'))

        days = None if options.get('all') else 7
        
        try:
            logger.debug('Meetpuntgegevens ophalen')
            m1,w1 = importAkvoRegistration(api, akvo, projectlocatie=project,user=user,days=days)
            logger.debug('Waarnemingen ophalen')
            m2,w2=importAkvoMonitoring(api, akvo, days)
            mp = m1|m2
            wn = w1|w2
            if mp:
                logger.debug('Grafieken aanpassen')
                util.updateSeries(mp, user)
                #logger.debug('Cartodb actualiseren')
                util.exportCartodb(cartodb, mp, 'allemetingen')
            
            akvo.last_update = timezone.now()
            akvo.save()        
        except Exception as e:
            logger.exception('Probleem met verwerken nieuwe EC metingen: %s',e)
        finally:
            pass
Пример #3
0
    def handle(self, *args, **options):
        fname = options.get('file', None)
        if not fname:
            print 'filenaam ontbreekt'
            return
        project = ProjectLocatie.objects.get(pk=1) # Texel
        user = User.objects.get(pk=1) # admin

        meetpunten = set()
        with open(fname) as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                waarnemer_id = row['wnid']
                submitter = row['waarnemer']
                sample_id= row['locatie']
                lon = float(row['lon'])
                lat = float(row['lat'])
                oms = row['omschrijving']
                diep = row['boven/onder']
                ec = float(row['EC'])

                if diep == 'b': # boven
                    diep = 'Ondiep'
                elif diep in ('d', 'o'): # onder of diep
                    diep = 'Diep'
                date = parser.parse(row['datetime'])

                location = Point(lon,lat,srid=4326)
                location.transform(28992)
                name = 'MP%s.%s' % (waarnemer_id, sample_id)
                try:
                    waarnemer = Waarnemer.objects.get(pk=waarnemer_id)
                    waarnemer.akvoname = submitter.lower()
                    waarnemer.save()
                    meetpunt = waarnemer.meetpunt_set.get(name=name)
                    meetpunt.identifier = uuid.uuid4()
                    meetpunt.location = location
                    meetpunt.description = oms
                    meetpunt.save()
                except Waarnemer.DoesNotExist:
                    logging.error('Waarnemer niet gevonden: %d' % waarnemer_id)
                    continue
                except Meetpunt.DoesNotExist:
                    meetpunt=waarnemer.meetpunt_set.create(name=name,projectlocatie=project,location=location,description=oms)
                    logger.info('Meetpunt {mp} aangemaakt.'.format(mp=meetpunt))
                    
                waarnemingen = meetpunt.waarneming_set.filter(naam='EC_'+diep,datum=date)
                if waarnemingen.exists():
                    logger.warn('EC waarnemingen worden vervangen voor {locatie}, datum={date}'.format(locatie=meetpunt.name,date=date)) 
                    waarnemingen.delete()
                meetpunt.waarneming_set.create(naam='EC_'+diep if diep else 'EC', waarnemer=waarnemer, datum=date, device='acacia', waarde=ec, opmerking='', eenheid='uS/cm' )
                logger.debug('EC_{diep}, {date}, EC={ec}'.format(diep=diep, date=date, ec=ec))

                meetpunten.add(meetpunt)
                
        updateSeries(meetpunten, user)                
        
        #cartodb = CartoDb.objects.get(name='Texel Meet')
        #cartodb.runsql('DELETE FROM waarnemingen')
        #updateCartodb(cartodb, meetpunten)        
Пример #4
0
def update_cdb_waarnemers(modeladmin, request, queryset):
    mps = []
    for w in queryset:
        mps.extend(w.meetpunt_set.all())
    util.updateSeries(mps, request.user)
    util.updateCartodb(CartoDb.objects.get(pk=1), mps)
Пример #5
0
def update_cdb_meetpunten(modeladmin, request, queryset):
    util.updateSeries(queryset, request.user)
    util.updateCartodb(CartoDb.objects.get(pk=1), queryset)
Пример #6
0
def update_series(modeladmin, request, queryset):
    util.updateSeries(queryset, request.user)