def loginconfirm(): personToken = request.args.get('token') if personToken is None: return redirect('/') req = requests.get('https://apitest.laji.fi/v0/person/' + personToken + '?access_token=' + AUTH_TOKEN).json() userId = req['id'] name = req['fullName'] email = req['emailAddress'] user = Account.query.filter_by(userId=userId).first() if not user: user = Account(userId=userId, fullName=name, email=email) db.session().add(user) db.session().commit() login_user(user) session.permanent = True session['token'] = personToken return redirect('/')
def update_edited_day(day_new, day_old): day_old.is_deleted = 1 addDay(day_new) set_new_day_id(day_old.id, day_new.id) set_catch_day_id(day_old.id, day_new.id) db.session().commit() return {"id": day_new.id}
def add_shorthand(req): shorthand = Shorthand(shorthandblock=req['block'], observationperiod_id=req['observationperiod_id']) db.session().add(shorthand) db.session().commit() shorthand_id = Shorthand.query.filter_by( shorthandblock=req['block'], observationperiod_id=req['observationperiod_id']).first().id return {'id': shorthand_id}
def edit_shorthand(shorthand_id, new_block): shorthand_old = Shorthand.query.get(shorthand_id) shorthand_new = Shorthand( shorthandblock=new_block, observationperiod_id=shorthand_old.observationperiod_id) shorthand_old.is_deleted = 1 deleteObservation(shorthand_id) db.session().add(shorthand_new) db.session().commit() id = str(shorthand_new.id) return id
def setUserObservatory(): req = request.get_json() u = current_user.get_id() if not u: return jsonify('no user') user = Account.query.filter_by(id=u).first() user.observatory = req['observatory'] db.session().commit() ret = [] ret.append({ 'id': user.userId, 'name': user.fullName, 'email': user.email, 'observatory': user.observatory }) return jsonify(ret)
def create_catch(row, day_id): catch = Catch( observatoryday_id=day_id, catchType = row['pyydys'], location = row['pyyntialue'], netCode = row['verkkokoodit'], amount = row['lukumaara'], length = row['verkonPituus'], openedAt = row['alku'], closedAt = row['loppu'], dayRowNumber = row['key']) old_catch = Catch.query.filter_by(observatoryday_id = day_id, dayRowNumber = catch.dayRowNumber, is_deleted = 0).first() if not old_catch: db.session().add(catch) db.session().commit() elif (old_catch.observatoryday_id != catch.observatoryday_id or old_catch.catchType != catch.catchType or old_catch.location != catch.location or old_catch.netCode != catch.netCode or int(old_catch.amount) != int(catch.amount) or int(old_catch.length) != int(catch.length) or old_catch.openedAt != catch.openedAt or old_catch.closedAt != catch.closedAt): old_catch.is_deleted = 1 db.session().add(catch) db.session.commit()
def addObservationperiod(day_id, location, observationType, startTime, endTime): obsday = getDay(day_id) obsId = obsday.observatory_id locId = getLocationId(location, obsId) createType(observationType, obsId) obsp = Observationperiod( start_time=datetime.strptime(startTime, '%H:%M'), end_time=datetime.strptime(endTime, '%H:%M'), type_id=getTypeIdByName(observationType), location_id=locId, observatoryday_id=day_id ) #Tähän pitää lisätä pikakirjoitus sitten, kun se on frontissa tehty. Olio pitää luoda ennen tätä kohtaa (shorthand_id=req['shorthand_id']) db.session().add(obsp) db.session().commit() obspId = getObsPerId(obsp.start_time, obsp.end_time, obsp.type_id, obsp.location_id, obsp.observatoryday_id) return {'id': obspId}
def testloginconfirm(): personToken = request.args.get('token') if personToken != "MzJkNTVkMjAtZTFjZS00NzEzLTlkM2MtMmRjZGI1ODYyNGUw": return redirect('/') userId = 'asdf' name = 'Lintu Asema' email = '*****@*****.**' user = Account.query.filter_by(userId=userId).first() if not user: user = Account(userId=userId, fullName=name, email=email) db.session().add(user) db.session().commit() login_user(user) session.permanent = True session['token'] = personToken return redirect('/')
def addDay(obsday): d = Observatoryday.query.filter_by(day=obsday.day, observatory_id=obsday.observatory_id, is_deleted=0).first() if not d and obsday.observatory_id is not None and obsday.day is not None and obsday.observers is not None: db.session().add(obsday) db.session().commit() elif obsday.observatory_id is not None and obsday.day is not None and obsday.observers is not None: if obsday.observatory_id != d.observatory_id or obsday.day != d.day or obsday.observers != d.observers or obsday.comment != d.comment or obsday.selectedactions != d.selectedactions: d.is_deleted = 1 db.session().add(obsday) db.session.commit() set_new_day_id(d.id, obsday.id) set_catch_day_id(d.id, obsday.id)
def save_edited_observationperiods(): req=request.get_json() observation_periods = req["periods"] observations = req["observations"] dayId =req["dayId"] day = getDay(dayId) obsId = day.observatory_id #Save observation periods for i, obsperiod in enumerate(observation_periods): locId = getLocationId(obsperiod['location'], obsId) obsp = Observationperiod( start_time=datetime.strptime(obsperiod['startTime'], '%H:%M'), end_time=datetime.strptime(obsperiod['endTime'], '%H:%M'), type_id=getTypeIdByName(obsperiod['observationType']), location_id=locId, observatoryday_id=dayId) db.session().add(obsp) obspId = getObsPerId(obsp.start_time, obsp.end_time, obsp.type_id, obsp.location_id, obsp.observatoryday_id) # Save original shorthand block of observation period shorthand = Shorthand(shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId) db.session().add(shorthand) shorthand_id = Shorthand.query.filter_by( shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId, is_deleted=0).first().id #Save observation related to this period for observation in observations: #observation = { periodOrderNum: i, subObservations: [] } if observation['periodOrderNum'] == str(i): for subObservation in observation['subObservations']: birdCount = subObservation['adultUnknownCount'] + subObservation['adultFemaleCount']\ + subObservation['adultMaleCount'] + subObservation['juvenileUnknownCount'] + subObservation['juvenileFemaleCount']\ + subObservation['juvenileMaleCount'] + subObservation['subadultUnknownCount'] + subObservation['subadultFemaleCount']\ + subObservation['subadultMaleCount'] + subObservation['unknownUnknownCount'] + subObservation['unknownFemaleCount']\ + subObservation['unknownMaleCount'] sub_observation = Observation(species=subObservation['species'], adultUnknownCount=subObservation['adultUnknownCount'], adultFemaleCount=subObservation['adultFemaleCount'], adultMaleCount=subObservation['adultMaleCount'], juvenileUnknownCount=subObservation['juvenileUnknownCount'], juvenileFemaleCount=subObservation['juvenileFemaleCount'], juvenileMaleCount=subObservation['juvenileMaleCount'], subadultUnknownCount=subObservation['subadultUnknownCount'], subadultFemaleCount=subObservation['subadultFemaleCount'], subadultMaleCount=subObservation['subadultMaleCount'], unknownUnknownCount=subObservation['unknownUnknownCount'], unknownFemaleCount=subObservation['unknownFemaleCount'], unknownMaleCount=subObservation['unknownMaleCount'], total_count = birdCount, direction=subObservation['direction'], bypassSide=subObservation['bypassSide'], notes=subObservation['notes'], observationperiod_id=obspId, shorthand_id=shorthand_id, account_id=req['userID']) db.session().add(sub_observation) db.session().commit() return jsonify(req)
def createLocation(name, id): location = Location.query.filter_by(name=name, observatory_id=id).first() if not location: location = Location(name=name, observatory_id=id) db.session().add(location) db.session().commit()
def setObservationId(observationperiod_id_old, observationperiod_id_new): observations = Observation.query.filter_by( observationperiod_id=observationperiod_id_old).all() for x in observations: x.observationperiod_id = observationperiod_id_new db.session().commit()
def createType(name, id): t = Type.query.filter_by(name=name, observatory_id=id).first() if not t: t = Type(name=name, observatory_id=id) db.session().add(t) db.session().commit()
def add_everything(): # ARRIVING DATA: # { # day, comment, observers, observatory, selectedactions, userID, # catches, [{},{},{}] # observationPeriods, [{},{},{}] # observations [{},{},{}] # }; req = request.get_json() # Save observatoryDay observatory_id = getObservatoryId(req['observatory']) day = datetime.strptime(req['day'], '%d.%m.%Y') new_obsday = Observatoryday(day=day, comment=req['comment'], observers=req['observers'], selectedactions=req['selectedactions'], observatory_id=observatory_id) addDay(new_obsday) # get dayID of just created day and and then the actual day as Flask/db object dayId = getDayId(new_obsday.day, new_obsday.observatory_id) day = getDay(dayId) obsId = day.observatory_id # Save catches if len(req['catches']) > 0: catches = req['catches'] catches_with_dayId = catches catches_with_dayId.insert(0, dayId) create_catches(catches_with_dayId) #Save observation periods for i, obsperiod in enumerate(req['observationPeriods']): locId = getLocationId(obsperiod['location'], obsId) obsp = Observationperiod( start_time=datetime.strptime(obsperiod['startTime'], '%H:%M'), end_time=datetime.strptime(obsperiod['endTime'], '%H:%M'), type_id=getTypeIdByName(obsperiod['observationType']), location_id=locId, observatoryday_id=dayId) db.session().add(obsp) # observation period ID obspId = getObsPerId(obsp.start_time, obsp.end_time, obsp.type_id, obsp.location_id, obsp.observatoryday_id) # Save original shorthand block of observation period shorthand = Shorthand(shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId) db.session().add(shorthand) shorthand_id = Shorthand.query.filter_by( shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId, is_deleted=0).first().id #Save observation related to this period for observation in req['observations']: #observation = { periodOrderNum: i, subObservations: [] } if observation['periodOrderNum'] == str(i): for subObservation in observation['subObservations']: birdCount = subObservation['adultUnknownCount'] + subObservation['adultFemaleCount']\ + subObservation['adultMaleCount'] + subObservation['juvenileUnknownCount'] + subObservation['juvenileFemaleCount']\ + subObservation['juvenileMaleCount'] + subObservation['subadultUnknownCount'] + subObservation['subadultFemaleCount']\ + subObservation['subadultMaleCount'] + subObservation['unknownUnknownCount'] + subObservation['unknownFemaleCount']\ + subObservation['unknownMaleCount'] sub_observation = Observation(species=subObservation['species'], adultUnknownCount=subObservation['adultUnknownCount'], adultFemaleCount=subObservation['adultFemaleCount'], adultMaleCount=subObservation['adultMaleCount'], juvenileUnknownCount=subObservation['juvenileUnknownCount'], juvenileFemaleCount=subObservation['juvenileFemaleCount'], juvenileMaleCount=subObservation['juvenileMaleCount'], subadultUnknownCount=subObservation['subadultUnknownCount'], subadultFemaleCount=subObservation['subadultFemaleCount'], subadultMaleCount=subObservation['subadultMaleCount'], unknownUnknownCount=subObservation['unknownUnknownCount'], unknownFemaleCount=subObservation['unknownFemaleCount'], unknownMaleCount=subObservation['unknownMaleCount'], total_count = birdCount, direction=subObservation['direction'], bypassSide=subObservation['bypassSide'], notes=subObservation['notes'], observationperiod_id=obspId, shorthand_id=shorthand_id, account_id=req['userID']) db.session().add(sub_observation) db.session().commit() return jsonify(req)
def add_everything(): # SAAPUVA DATA: # { # day, comment, observers, observatory, selectedactions, userID, # catches, [{},{},{}] # observationPeriods, [{},{},{}] # observations [{},{},{}] # }; # Ensimmäinen rivi kaikki stringejä # catches: Lista pyydysobjekteja, TARVITSEE dayIDn ennen tallentamista # Observationperiods: Lista havaintojakso-objekteja, TARVITSEE dayID:n ennen tallentamista # observationPeriod = { # location, # startTime, # endTime, # observationType, # shorthandBlock, # }; # observations: lista objekteja, joista jokainen sisältää orig. pikakirjoitusrivin # ja listan osahavainto-objekteja: # [{ periodOrderNum: i, subObservations: [] }, ] # shorthand TARVITSEE observationperiod-ID:n # subObservation TARVITSEE obsperiod-IDn ja shorthandID:n # Observations objektin tietueen 'periodOrderNum, pitäisi vastata observationsPeriods-listan indekseihin, # eli jos periodOrderNum on 1, liittyy se observationPeriods-listan indeksissä 1 olevaan havaintojaksoon. # Tätä tietoa tarvitaan oikean jakson id:n liittämisessä havaintoon #print('***\nData arriving in add-everything') req = request.get_json() # Save observatoryDay observatory_id = getObservatoryId(req['observatory']) print('observatory_id', observatory_id) day = datetime.strptime(req['day'], '%d.%m.%Y') new_obsday = Observatoryday(day=day, comment=req['comment'], observers=req['observers'], selectedactions=req['selectedactions'], observatory_id=observatory_id) addDay(new_obsday) # get dayID of just created day and and then the actual day as Flask/db object dayId = getDayId(new_obsday.day, new_obsday.observatory_id) day = getDay(dayId) obsId = day.observatory_id # Save catches if len(req['catches']) > 0: catches = req['catches'] #print('catches type', type(catches)) print('dayId', type(dayId)) catches_with_dayId = catches catches_with_dayId.insert(0, dayId) #print('catches', catches_with_dayId) create_catches(catches_with_dayId) #Save observation periods for i, obsperiod in enumerate(req['observationPeriods']): locId = getLocationId(obsperiod['location'], obsId) obsp = Observationperiod( start_time=datetime.strptime(obsperiod['startTime'], '%H:%M'), end_time=datetime.strptime(obsperiod['endTime'], '%H:%M'), type_id=getTypeIdByName(obsperiod['observationType']), location_id=locId, observatoryday_id=dayId) db.session().add(obsp) # observation period ID # tämän voisi suorittaa tyylikkäämmin parametrina pelkkä obsp obspId = getObsPerId(obsp.start_time, obsp.end_time, obsp.type_id, obsp.location_id, obsp.observatoryday_id) # Save original shorthand block of observation period shorthand = Shorthand(shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId) db.session().add(shorthand) # Toimisi shorthand_id = shorthand.id tms, jolloin ei tarvittaisi seuraava erillistä queryä MUTTA vaatii db.committin shorthand_id = Shorthand.query.filter_by( shorthandblock=obsperiod['shorthandBlock'], observationperiod_id=obspId, is_deleted=0).first().id #Save observation related to this period for observation in req[ 'observations']: #observation = { periodOrderNum: i, subObservations: [] } print(observation['periodOrderNum']) if observation['periodOrderNum'] == str(i): for subObservation in observation['subObservations']: # subObservation = { # species: "", # adultUnknownCount: 0, # adultFemaleCount: 0, # adultMaleCount: 0, # juvenileUnknownCount: 0, # juvenileFemaleCount: 0, # juvenileMaleCount: 0, # subadultUnknownCount: 0, # subadultFemaleCount: 0, # subadultMaleCount: 0, # unknownUnknownCount: 0, # unknownFemaleCount: 0, # unknownMaleCount: 0, # direction: "", # bypassSide: "", # notes: "", # observationperiod_id: "" # }; birdCount = subObservation['adultUnknownCount'] + subObservation['adultFemaleCount']\ + subObservation['adultMaleCount'] + subObservation['juvenileUnknownCount'] + subObservation['juvenileFemaleCount']\ + subObservation['juvenileMaleCount'] + subObservation['subadultUnknownCount'] + subObservation['subadultFemaleCount']\ + subObservation['subadultMaleCount'] + subObservation['unknownUnknownCount'] + subObservation['unknownFemaleCount']\ + subObservation['unknownMaleCount'] sub_observation = Observation( species=subObservation['species'], adultUnknownCount=subObservation['adultUnknownCount'], adultFemaleCount=subObservation['adultFemaleCount'], adultMaleCount=subObservation['adultMaleCount'], juvenileUnknownCount=subObservation[ 'juvenileUnknownCount'], juvenileFemaleCount=subObservation[ 'juvenileFemaleCount'], juvenileMaleCount=subObservation['juvenileMaleCount'], subadultUnknownCount=subObservation[ 'subadultUnknownCount'], subadultFemaleCount=subObservation[ 'subadultFemaleCount'], subadultMaleCount=subObservation['subadultMaleCount'], unknownUnknownCount=subObservation[ 'unknownUnknownCount'], unknownFemaleCount=subObservation[ 'unknownFemaleCount'], unknownMaleCount=subObservation['unknownMaleCount'], total_count=birdCount, direction=subObservation['direction'], bypassSide=subObservation['bypassSide'], notes=subObservation['notes'], observationperiod_id=obspId, shorthand_id=shorthand_id, account_id=req['userID']) db.session().add(sub_observation) db.session().commit() print('End of add_everything***\n') return jsonify(req)
def createObservatory(name, actions): obs = Observatory.query.filter_by(name=name).first() if not obs: obs = Observatory(name=name, actions=actions) db.session().add(obs) db.session().commit()
def addObservation(observation): db.session().add(observation) db.session().commit()
def set_new_day_id(observatoryday_id_old, observatoryday_id_new): obsp = Observationperiod.query.filter_by( observatoryday_id=observatoryday_id_old).all() for obs in obsp: obs.observatoryday_id = observatoryday_id_new db.session().commit()
def set_catch_day_id(id_old, id_new): catches = Catch.query.filter_by(observatoryday_id = id_old, is_deleted = 0).all() for catch in catches: catch.observatoryday_id = id_new db.session().commit()