コード例 #1
0
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
コード例 #2
0
    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()