Esempio n. 1
0
def auth_disconnect_do(req, service):
    svc = Service.FromID(service)
    svcId = [
        x["ID"] for x in req.user["ConnectedServices"]
        if x["Service"] == svc.ID
    ]
    if len(svcId) == 0:
        return
    else:
        svcId = svcId[0]
    svcRec = Service.GetServiceRecordByID(svcId)
    Service.DeleteServiceRecord(svcRec)
    User.DisconnectService(svcRec)
    return True
Esempio n. 2
0
def auth_persist_extended_auth_ajax(req, service):
    svc = Service.FromID(service)
    svcId = [
        x["ID"] for x in req.user["ConnectedServices"]
        if x["Service"] == svc.ID
    ]
    if len(svcId) == 0:
        return HttpResponse(status=404)
    else:
        svcId = svcId[0]
    svcRec = Service.GetServiceRecordByID(svcId)
    if svcRec.HasExtendedAuthorizationDetails():
        Service.PersistExtendedAuthDetails(svcRec)
    return HttpResponse()
Esempio n. 3
0
def diag_user(req, user):
    try:
        userRec = db.users.find_one({"_id": ObjectId(user)})
    except:
        userRec = None
    if not userRec:
        searchOpts = [{"Payments.Txn": user}, {"Payments.Email": user}]
        try:
            searchOpts.append({"AncestorAccounts": ObjectId(user)})
            searchOpts.append({"ConnectedServices.ID": ObjectId(user)})
        except:
            pass  # Invalid format for ObjectId
        userRec = db.users.find_one({"$or": searchOpts})
        if not userRec:
            searchOpts = [{"ExternalID": user}]
            try:
                searchOpts.append({"ExternalID": int(user)})
            except:
                pass  # Not an int
            svcRec = db.connections.find_one({"$or": searchOpts})
            if svcRec:
                userRec = db.users.find_one(
                    {"ConnectedServices.ID": svcRec["_id"]})
        if userRec:
            return redirect("diagnostics_user", user=userRec["_id"])
    if not userRec:
        return render(req, "diag/error_user_not_found.html")
    delta = True  # Easier to set this to false in the one no-change case.
    if "sync" in req.POST:
        Sync.ScheduleImmediateSync(userRec, req.POST["sync"] == "Full")
    elif "unlock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$unset": {
                            "SynchronizationWorker": None
                        }})
    elif "lock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$set": {
                            "SynchronizationWorker": 1
                        }})
    elif "hostrestrict" in req.POST:
        host = req.POST["host"]
        if host:
            db.users.update({"_id": ObjectId(user)},
                            {"$set": {
                                "SynchronizationHostRestriction": host
                            }})
        else:
            db.users.update(
                {"_id": ObjectId(user)},
                {"$unset": {
                    "SynchronizationHostRestriction": None
                }})
    elif "substitute" in req.POST:
        req.session["substituteUserid"] = user
        return redirect("dashboard")
    elif "svc_setauth" in req.POST and len(req.POST["authdetails"]):
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$set": {
                "Authorization": json.loads(req.POST["authdetails"])
            }})
    elif "svc_unlink" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        try:
            Service.DeleteServiceRecord(svcRec)
        except:
            pass
        try:
            User.DisconnectService(svcRec)
        except:
            pass
    elif "svc_marksync" in req.POST:
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$addToSet": {
                "SynchronizedActivities": req.POST["uid"]
            }},
            multi=False)
    elif "svc_clearexc" in req.POST:
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "ExcludedActivities": 1
                              }})
    elif "svc_clearacts" in req.POST:
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "SynchronizedActivities": 1
                              }})
        Sync.SetNextSyncIsExhaustive(userRec, True)
    else:
        delta = False

    if delta:
        return redirect("diagnostics_user", user=user)
    return render(req, "diag/user.html", {"user": userRec})
Esempio n. 4
0
def diag_user(req, user):
    try:
        userRec = db.users.find_one({"_id": ObjectId(user)})
    except:
        userRec = None
    if not userRec:
        searchOpts = [{"Payments.Txn": user}, {"Payments.Email": user}]
        try:
            searchOpts.append({"AncestorAccounts": ObjectId(user)})
            searchOpts.append({"ConnectedServices.ID": ObjectId(user)})
        except:
            pass  # Invalid format for ObjectId
        userRec = db.users.find_one({"$or": searchOpts})
        if not userRec:
            searchOpts = [{"ExternalID": user}]
            try:
                searchOpts.append({"ExternalID": int(user)})
            except:
                pass  # Not an int
            svcRec = db.connections.find_one({"$or": searchOpts})
            if svcRec:
                userRec = db.users.find_one(
                    {"ConnectedServices.ID": svcRec["_id"]})
        if userRec:
            return redirect("diagnostics_user", user=userRec["_id"])
    if not userRec:
        return render(req, "diag/error_user_not_found.html")
    delta = True  # Easier to set this to false in the one no-change case.
    if "sync" in req.POST:
        Sync.ScheduleImmediateSync(userRec, req.POST["sync"] == "Full")
    elif "unlock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$unset": {
                            "SynchronizationWorker": None
                        }})
    elif "lock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$set": {
                            "SynchronizationWorker": 1
                        }})
    elif "requeue" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$unset": {
                            "QueuedAt": None
                        }})
    elif "hostrestrict" in req.POST:
        host = req.POST["host"]
        if host:
            db.users.update({"_id": ObjectId(user)},
                            {"$set": {
                                "SynchronizationHostRestriction": host
                            }})
        else:
            db.users.update(
                {"_id": ObjectId(user)},
                {"$unset": {
                    "SynchronizationHostRestriction": None
                }})
    elif "substitute" in req.POST:
        req.session["substituteUserid"] = user
        return redirect("dashboard")
    elif "svc_setauth" in req.POST and len(req.POST["authdetails"]):
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$set": {
                "Authorization": json.loads(req.POST["authdetails"])
            }})
    elif "svc_setconfig" in req.POST and len(req.POST["config"]):
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$set": {
                "Config": json.loads(req.POST["config"])
            }})
    elif "svc_unlink" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        try:
            Service.DeleteServiceRecord(svcRec)
        except:
            pass
        try:
            User.DisconnectService(svcRec)
        except:
            pass
    elif "svc_marksync" in req.POST:
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$addToSet": {
                "SynchronizedActivities": req.POST["uid"]
            }},
            multi=False)
    elif "svc_clearexc" in req.POST:
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "ExcludedActivities": 1
                              }})
    elif "svc_clearacts" in req.POST:
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "SynchronizedActivities": 1
                              }})
        Sync.SetNextSyncIsExhaustive(userRec, True)
    elif "svc_toggle_poll_sub" in req.POST:
        from tapiriik.services import Service
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        svcRec.SetPartialSyncTriggerSubscriptionState(
            not svcRec.PartialSyncTriggerSubscribed)
    elif "svc_toggle_poll_trigger" in req.POST:
        from tapiriik.services import Service
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        db.connections.update({"_id": ObjectId(req.POST["id"])}, {
            "$set": {
                "TriggerPartialSync":
                not getattr(svcRec, "TriggerPartialSync", False)
            }
        })
    elif "svc_tryagain" in req.POST:
        from tapiriik.services import Service
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$pull": {
                                  "SyncErrors": {
                                      "Scope": "activity"
                                  }
                              }})
        act_recs = db.activity_records.find_one({"UserID": ObjectId(user)})
        for act in act_recs["Activities"]:
            if "FailureCounts" in act and svcRec.Service.ID in act[
                    "FailureCounts"]:
                del act["FailureCounts"][svcRec.Service.ID]
        db.activity_records.save(act_recs)
    else:
        delta = False

    if delta:
        return redirect("diagnostics_user", user=user)
    return render(req, "diag/user.html", {"diag_user": userRec})
Esempio n. 5
0
def diag_user(req, user):
    userRec = db.users.find_one({"_id": ObjectId(user)})
    if not userRec:
        userRec = db.users.find_one({"AncestorAccounts": ObjectId(user)})
        if userRec:
            return redirect("diagnostics_user", user=userRec["_id"])
    if not userRec:
        return render(req, "diag/error_user_not_found.html")
    delta = False
    if "sync" in req.POST:
        Sync.ScheduleImmediateSync(userRec, req.POST["sync"] == "Full")
        delta = True
    elif "unlock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$unset": {
                            "SynchronizationWorker": None
                        }})
        delta = True
    elif "lock" in req.POST:
        db.users.update({"_id": ObjectId(user)},
                        {"$set": {
                            "SynchronizationWorker": 1
                        }})
        delta = True
    elif "substitute" in req.POST:
        req.session["substituteUserid"] = user
        return redirect("dashboard")
    elif "svc_setauth" in req.POST and len(req.POST["authdetails"]):
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$set": {
                "Authorization": json.loads(req.POST["authdetails"])
            }})
        delta = True
    elif "svc_unlink" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        svcRec = Service.GetServiceRecordByID(req.POST["id"])
        try:
            Service.DeleteServiceRecord(svcRec)
        except:
            pass
        try:
            User.DisconnectService(svcRec)
        except:
            pass
        delta = True
    elif "svc_marksync" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        db.connections.update(
            {"_id": ObjectId(req.POST["id"])},
            {"$addToSet": {
                "SynchronizedActivities": req.POST["uid"]
            }},
            multi=False)
        delta = True
    elif "svc_clearexc" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "ExcludedActivities": 1
                              }})
        delta = True
    elif "svc_clearacts" in req.POST:
        from tapiriik.services import Service
        from tapiriik.auth import User
        db.connections.update({"_id": ObjectId(req.POST["id"])},
                              {"$unset": {
                                  "SynchronizedActivities": 1
                              }})
        Sync.SetNextSyncIsExhaustive(userRec, True)
        delta = True

    if delta:
        return redirect("diagnostics_user", user=user)
    return render(req, "diag/user.html", {"user": userRec})