コード例 #1
0
ファイル: privacy.py プロジェクト: crowjonah/tapiriik
def privacy(request):

    OPTIN = "<span class=\"optin policy\">Opt-in</span>"
    NO = "<span class=\"no policy\">No</span>"
    YES = "<span class=\"yes policy\">Yes</span>"
    CACHED = "<span class=\"cached policy\">Cached</span>"
    SEEBELOW = "See below"

    services = dict([[x.ID, {"DisplayName": x.DisplayName, "ID": x.ID}] for x in Service.List() if x.ID not in WITHDRAWN_SERVICES])

    services["garminconnect"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["strava"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["sporttracks"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["dropbox"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":CACHED})
    services["runkeeper"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["rwgps"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["trainingpeaks"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["endomondo"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["motivato"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})

    for svc_id in SOFT_LAUNCH_SERVICES:
        if svc_id in services:
            del services[svc_id]

    def user_services_sort(service):
        if not request.user:
            return 0
        if User.IsServiceConnected(request.user, service["ID"]):
            return 0
        else:
            return 1

    services_list = sorted(services.values(), key=user_services_sort)
    return render(request, "privacy.html", {"services": services_list})
コード例 #2
0
ファイル: privacy.py プロジェクト: ctrlbreak/tapiriik
def privacy(request):

    OPTIN = "<span class=\"optin policy\">Opt-in</span>"
    NO = "<span class=\"no policy\">No</span>"
    YES = "<span class=\"yes policy\">Yes</span>"
    CACHED = "<span class=\"cached policy\">Cached</span>"
    SEEBELOW = "See below"

    services = dict([[x.ID, {
        "DisplayName": x.DisplayName,
        "ID": x.ID
    }] for x in Service.List()])

    services["garminconnect"].update({
        "email": OPTIN,
        "password": OPTIN,
        "tokens": NO,
        "metadata": YES,
        "data": NO
    })
    services["strava"].update({
        "email": NO,
        "password": NO,
        "tokens": YES,
        "metadata": YES,
        "data": NO
    })
    services["sporttracks"].update({
        "email": OPTIN,
        "password": OPTIN,
        "tokens": NO,
        "metadata": YES,
        "data": NO
    })
    services["endomondo"].update({
        "email": NO,
        "password": NO,
        "tokens": YES,
        "metadata": YES,
        "data": NO
    })
    services["dropbox"].update({
        "email": NO,
        "password": NO,
        "tokens": YES,
        "metadata": YES,
        "data": CACHED
    })
    services["runkeeper"].update({
        "email": NO,
        "password": NO,
        "tokens": YES,
        "metadata": YES,
        "data": NO
    })

    services_list = [x for key, x in services.items()]
    return render(request, "privacy.html", {"services": services_list})
コード例 #3
0
def js_bridge(req):
    serviceInfo = {}

    for svc in Service.List():
        if svc.ID in WITHDRAWN_SERVICES:
            continue
        if req.user is not None:
            svcRec = User.GetConnectionRecord(
                req.user,
                svc.ID)  # maybe make the auth handler do this only once?
        else:
            svcRec = None
        info = {
            "DisplayName": svc.DisplayName,
            "DisplayAbbreviation": svc.DisplayAbbreviation,
            "AuthenticationType": svc.AuthenticationType,
            "UsesExtendedAuth": svc.RequiresExtendedAuthorizationDetails,
            "AuthorizationURL": svc.UserAuthorizationURL,
            "NoFrame": svc.AuthenticationNoFrame,
            "ReceivesActivities": svc.ReceivesActivities,
            "Configurable": svc.Configurable,
            "RequiresConfiguration": False  # by default
        }
        if svcRec:
            if svc.Configurable:
                if svc.ID == "dropbox":  # dirty hack alert, but better than dumping the auth details in their entirety
                    info["AccessLevel"] = "full" if svcRec.Authorization[
                        "Full"] else "normal"
                    info["RequiresConfiguration"] = svc.RequiresConfiguration(
                        svcRec)
            info["Config"] = svcRec.GetConfiguration()
            info["HasExtendedAuth"] = svcRec.HasExtendedAuthorizationDetails()
            info[
                "PersistedExtendedAuth"] = svcRec.HasExtendedAuthorizationDetails(
                    persisted_only=True)
            info["ExternalID"] = svcRec.ExternalID
        info["BlockFlowTo"] = []
        info["Connected"] = svcRec is not None
        serviceInfo[svc.ID] = info
    if req.user is not None:
        flowExc = User.GetFlowExceptions(req.user)
        for exc in flowExc:
            if exc["Source"]["Service"] not in serviceInfo or exc["Target"][
                    "Service"] not in serviceInfo:
                continue  # Withdrawn services
            if "ExternalID" in serviceInfo[exc["Source"][
                    "Service"]] and exc["Source"]["ExternalID"] != serviceInfo[
                        exc["Source"]["Service"]]["ExternalID"]:
                continue  # this is an old exception for a different connection
            if "ExternalID" in serviceInfo[exc["Target"][
                    "Service"]] and exc["Target"]["ExternalID"] != serviceInfo[
                        exc["Target"]["Service"]]["ExternalID"]:
                continue  # same as above
            serviceInfo[exc["Source"]["Service"]]["BlockFlowTo"].append(
                exc["Target"]["Service"])
    return {"js_bridge_serviceinfo": json.dumps(serviceInfo)}
コード例 #4
0
def schedule_trigger_poll():
	schedule_data = list(db.trigger_poll_scheduling.find())
	print("Scheduler run at %s" % datetime.now())
	for svc in Service.List():
		if svc.PartialSyncTriggerRequiresPolling:
			print("Checking %s's %d poll indexes" % (svc.ID, svc.PartialSyncTriggerPollMultiple))
			for idx in range(svc.PartialSyncTriggerPollMultiple):
				svc_schedule = [x for x in schedule_data if x["Service"] == svc.ID and x["Index"] == idx]
				if not svc_schedule:
					svc_schedule = {"Service": svc.ID, "Index": idx, "LastScheduled": datetime.min}
				else:
					svc_schedule = svc_schedule[0]

				if datetime.utcnow() - svc_schedule["LastScheduled"] > svc.PartialSyncTriggerPollInterval:
					svc_schedule["LastScheduled"] = datetime.utcnow()
					trigger_poll.apply_async(args=[svc.ID, idx], expires=svc.PartialSyncTriggerPollInterval.total_seconds(), time_limit=svc.PartialSyncTriggerPollInterval.total_seconds())
					db.trigger_poll_scheduling.update({"Service": svc.ID, "Index": idx}, svc_schedule, upsert=True)
コード例 #5
0
def privacy(request):

    OPTIN = "<span class=\"optin policy\">Opt-in</span>"
    NO = "<span class=\"no policy\">No</span>"
    YES = "<span class=\"yes policy\">Yes</span>"
    CACHED = "<span class=\"cached policy\">Cached</span>"
    SEEBELOW = "See below"

    services = dict([[x.ID, {"DisplayName": x.DisplayName, "ID": x.ID}] for x in Service.List()])

    services["garminconnect"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["garminconnect2"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":CACHED})
    services["strava"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["sporttracks"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["dropbox"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["runkeeper"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["rwgps"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["trainingpeaks"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["endomondo"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["motivato"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["nikeplus"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["velohero"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["runsense"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["trainerroad"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})
    services["smashrun"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["beginnertriathlete"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data": NO})
    services["trainasone"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["pulsstory"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["setio"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["singletracker"].update({"email": NO, "password": NO, "tokens": YES, "metadata": YES, "data":NO})
    services["aerobia"].update({"email": OPTIN, "password": OPTIN, "tokens": NO, "metadata": YES, "data":NO})

    for svc_id in itertools.chain(WITHDRAWN_SERVICES, SOFT_LAUNCH_SERVICES):
        if svc_id in services:
            del services[svc_id]

    services_list = sorted(services.values(), key=lambda service: service["ID"])
    return render(request, "privacy.html", {"services": services_list})
コード例 #6
0
def providers(req):
    return {"service_providers": Service.List()}
コード例 #7
0
ファイル: services.py プロジェクト: neilboyd/tapiriik
def exceptSvc(value):
    connections = [y["Service"] for y in value]
    return [x for x in Service.List() if x.ID not in connections]
コード例 #8
0
from tapiriik.services import Service
from tapiriik.services.ratelimiting import RateLimit

for svc in Service.List():
    RateLimit.Refresh(svc.ID, svc.GlobalRateLimits)