Ejemplo n.º 1
0
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('/')
Ejemplo n.º 2
0
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}
Ejemplo n.º 3
0
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}
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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}
Ejemplo n.º 8
0
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('/')
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
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()
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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()
Ejemplo n.º 17
0
def addObservation(observation):
    db.session().add(observation)
    db.session().commit()
Ejemplo n.º 18
0
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()
Ejemplo n.º 19
0
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()