Пример #1
0
def oauth_get_code(request):

    client_id = request.registry.settings["client_id"]
    client_secret = request.registry.settings["client_secret"]
    response = oauth_authorize(request)
    secret = None
    if DBSession.query(Secret).all().count > 0:
        secret = DBSession.query(Secret).first()
    else:
        secret = Secret()
    # do stuff to secret to set info
    secret.access_token = response.get('access_token')
    DBSession.add(secret)
    DBSession.commit()

    log.info(secret.public_key)
    data = {
        "title": "SpaceHub",
        "key": secret.public_key,
    }
    params = {
        "access_token": secret.access_token
    }

    # add public key to user's acc.
    response = requests.post(GITHUB_API_URL + "/user/keys", params=params,data=json.dumps(data))
    log.info(response.text)
    raise HTTPTemporaryRedirect(location="/app/index.html#/repos")
Пример #2
0
def edit_user(request):
    """
        Edit an existing user
        privs: logged in, or admin
        {"username": "******", "changes": {"username": "******", "password": "******", "email": "changed"}}
    """
    cur_user = request.validated['ValidUser']
    target_username = request.validated['username']
    target_users = DBSession.query(User).filter(User.name==target_username)
    if target_users.count() > 1:
        target_user = target_users.first()
        if target_user.name == cur_user.name or cur_user.admin:
            changes = request.validated['changes']
            if "username" in changes:
                if not DBSession.query(User).filter(User.name==changes['username']).count() > 1:
                    target_user.name = changes['username']
            if "password" in changes:
                target_user.password = hashlib.sha512(changes['password']).hexdigest()
            if "email" in changes:
                if not DBSession.query(User).filter(User.email==changes['email']).count() > 1:
                    target_user.email = changes['email']
            DBSession.add(target_user)
            DBSession.commit()
            return {"success": True}
    raise _401()
Пример #3
0
def post_watched_page(request):
    """
        Add a new watched page
        Need check to make sure user owns repo
    """
    tr = TrackedLink.from_dict(request.validated)
    DBSession.add(tr)
    DBSession.commit()
    return tr.to_dict()
Пример #4
0
def post_watched_page(request):
    """
        Add a new watched page
        Need check to make sure user owns repo
    """
    tr = TrackedLink.from_dict(request.validated)
    DBSession.add(tr)
    DBSession.commit()
    return tr.to_dict()
Пример #5
0
def create_user(request):
    """
        Create a new User
        This is expected a username, password, and email
        privs: None
    """
    new_user = User(
        name=request.validated['username'],
        password=hashlib.sha512(request.validated['password']).hexdigest(),
        email=request.validated['email']
    )
    if DBSession.query(User).filter(User.name==new_user.name).count() > 0:
        raise _401()
    DBSession.add(new_user)
    DBSession.commit()
    return {"success": True}
Пример #6
0
def create_key(request):
    """
        Create a new api key for a user
        privs: logged in, admin
        {"username": "******"}
    """
    cur_user = request.validated['ValidUser']
    target_query = DBSession.query(User).filter(
        User.name==request.validated['username'])
    if target_query.count() > 0:
        target = target_query.first()
        if target.name == cur_user or cur_user.admin:
            key = gen_apikey()
            newAPIKey = APIKey(apikey=key,owner_id=target.id)
            DBSession.add(newAPIKey)
            DBSession.commit()
            return {"success": True}
    raise _401()
Пример #7
0
def create_key(request):
    """
        Create a new api key for a user
        privs: logged in, admin
        {"username": "******"}
    """
    cur_user = request.validated['ValidUser']
    target_query = DBSession.query(User).filter(
        User.name == request.validated['username'])
    if target_query.count() > 0:
        target = target_query.first()
        if target.name == cur_user or cur_user.admin:
            key = gen_apikey()
            newAPIKey = APIKey(apikey=key, owner_id=target.id)
            DBSession.add(newAPIKey)
            DBSession.commit()
            return {"success": True}
    raise _401()
Пример #8
0
def sync_tarballs(DBSession):
    logger.info(("Syncing Tarball links"))

    links = DBSession.query(TrackedLink).all()
    for link in links:
        repo = DBSession.query(Repo).filter(Repo.id==link.repo_id).first()
        try:
            repo.clone()
        except Exception as e:
            logger.info("Exception found: " + str(e.args))
            return
        extracted_dir = link.retrieve()
        cp('-R', sh.glob('{0}/*'.format(extracted_dir)), repo.dirname)
        repo.commit_a("Automated tarball sync: {0}".format(link.modified.strftime("%D %H:%M")))
        repo.push()
        repo.last_updated = datetime.now()
        DBSession.add(repo)
        DBSession.commit()
        logger.info("Synced {0} -> {1}".format(link.name, repo.name))
Пример #9
0
def sync_tarballs(DBSession):
    logger.info(("Syncing Tarball links"))

    links = DBSession.query(TrackedLink).all()
    for link in links:
        repo = DBSession.query(Repo).filter(Repo.id == link.repo_id).first()
        try:
            repo.clone()
        except Exception as e:
            logger.info("Exception found: " + str(e.args))
            return
        extracted_dir = link.retrieve()
        cp('-R', sh.glob('{0}/*'.format(extracted_dir)), repo.dirname)
        repo.commit_a("Automated tarball sync: {0}".format(
            link.modified.strftime("%D %H:%M")))
        repo.push()
        repo.last_updated = datetime.now()
        DBSession.add(repo)
        DBSession.commit()
        logger.info("Synced {0} -> {1}".format(link.name, repo.name))
Пример #10
0
def post_repo(request):
    """
        To create a new repository
    """
    cur_user = request.validated['ValidUser']
    data = request.validated
    data.update({'owner_id': cur_user.id})
    r = Repo.from_dict(data)
    if not DBSession.query(Repo).filter(Repo.name==r.name).count() > 0:
        DBSession.add(r)
        DBSession.commit()
        if data['source_type'] == 'tar':
            t = TrackedLink.from_dict({
                "repoid": r.id,
                "name": r.name,
                "link_text": data.get('link_text'),
                "url": r.source_url,
            })
            t.repo = r
            DBSession.add(t)
            DBSession.commit()
        return r.to_dict()
    raise _401()
Пример #11
0
def update_repo(request):
    repo = DBSession.query(Repo).filter(Repo.id==request.matchdict['rid']).first()
    repo.updict(request.json)
    DBSession.add(repo)
    DBSession.commit()
    return DBSession.query(Repo).filter(Repo.id==request.matchdict['rid']).first().to_dict()