def filterActivityData(dayOfActivityData): #filter walkingArray = [] runningArray = [] stationaryArray = [] carArray = [] unknownArray = [] lastobj = Activity(duration=0,type=1) sumDuration = 0 for actobj in dayOfActivityData: if actobj.type == 1: if lastobj.type == 1: if len(walkingArray) > 0: sumDuration = actobj.duration + walkingArray[len(walkingArray)-1] else: sumDuration = actobj.duration walkingArray.append(sumDuration) elif actobj.type == 2: if lastobj.type == 2: if len(runningArray) > 0: sumDuration = actobj.duration + runningArray[len(runningArray)-1] else: sumDuration = actobj.duration runningArray.append(sumDuration) elif actobj.type == 3: if lastobj.type == 3: if len(stationaryArray) > 0: sumDuration = actobj.duration + stationaryArray[len(stationaryArray)-1] else: sumDuration = actobj.duration stationaryArray.append(sumDuration) elif actobj.type == 4: if lastobj.type == 4: if len(carArray) > 0: sumDuration = actobj.duration + carArray[len(carArray)-1] else: sumDuration = actobj.duration carArray.append(sumDuration) else: if lastobj.type == 5: if len(unknownArray) > 0: sumDuration = actobj.duration + unknownArray[len(unknownArray)-1] else: sumDuration = actobj.duration unknownArray.append(sumDuration) lastobj = actobj lastobj.duration = actobj.duration lastobj.type = actobj.type filteredData = {"walking":walkingArray,"running":runningArray,"stationary":stationaryArray,"car":carArray,"unknown":unknownArray} return filteredData
def save(self, box: Box, activity: ap.BaseActivity) -> None: """Save an Activity in database""" current_app.logger.info(f"asked to save an activity {activity!r}") # Save remote Actor ap_actor = activity.get_actor() domain = urlparse(ap_actor.id) current_app.logger.debug(f"actor.id=={ap_actor.__dict__}") current_app.logger.debug(f"actor domain {domain.netloc} and " f"name {ap_actor.preferredUsername}") actor = Actor.query.filter(Actor.domain == domain.netloc, Actor.name == ap_actor.preferredUsername).first() # FIXME TODO: check if it still works with unknown remote actor if not actor: current_app.logger.debug("cannot find actor") actor = Actor.query.filter(Actor.url == ap_actor.id).first() if not actor: current_app.logger.debug(f"actor {ap_actor.id} not found") actor, user = create_remote_actor(ap_actor) db.session.add(user) db.session.add(actor) current_app.logger.debug("created one in DB") else: current_app.logger.debug(f"got local one {actor.url}") else: current_app.logger.debug(f"got remote one {actor.url}") # Save Activity act = Activity() act.payload = activity.to_dict() act.url = activity.id act.type = activity.type act.box = box.value # Activity is local only if the url starts like BASE_URL base_url = current_app.config["BASE_URL"] act.local = activity.id.startswith(base_url) act.actor_id = actor.id db.session.add(act) db.session.commit()