コード例 #1
0
def _get_release(release):
    with dbo.begin() as trans:
        release_row = releases_service.get_release(release, trans)
        if release_row:
            return {"data": release_row["blob"], "data_version": release_row["data_versions"]["."]}
        else:
            releases = dbo.releases.getReleases(name=release, limit=1, transaction=trans)
            return releases[0] if releases else None
コード例 #2
0
def get_release_single_locale(release, platform, locale, with_csrf_header=False):
    with dbo.begin() as trans:
        release_row = releases_service.get_release(release, trans)
        if release_row:
            locale_data = get_by_path(release_row["blob"], ("platforms", platform, "locales", locale))
            data_version = get_by_path(release_row["data_versions"], ("platforms", platform, "locales", locale))
        else:
            try:
                locale_data = dbo.releases.getLocale(release, platform, locale, transaction=trans)
            except KeyError as e:
                return problem(404, "Not Found", json.dumps(e.args))
            data_version = dbo.releases.getReleases(name=release, transaction=trans)[0]["data_version"]
        headers = {"X-Data-Version": data_version}
        if with_csrf_header:
            headers.update(get_csrf_headers())
        return Response(response=json.dumps(locale_data), mimetype="application/json", headers=headers)
コード例 #3
0
ファイル: base.py プロジェクト: trankmichael/balrog
 def decorated(*args, **kwargs):
     trans = dbo.begin()
     # Transactions are automatically rolled back by the context manager if
     # _post raises an Exception, but we need to make sure they are also
     # rolled back if the View returns any sort of error.
     try:
         ret = request_handler(*args, transaction=trans, **kwargs)
         if ret.status_code >= 400:
             trans.rollback()
         else:
             trans.commit()
         return ret
     except:
         trans.rollback()
         raise
     finally:
         trans.close()
コード例 #4
0
ファイル: base.py プロジェクト: njirap/balrog
 def decorated(*args, **kwargs):
     trans = dbo.begin()
     # Transactions are automatically rolled back by the context manager if
     # _post raises an Exception, but we need to make sure they are also
     # rolled back if the View returns any sort of error.
     try:
         ret = request_handler(*args, transaction=trans, **kwargs)
         if ret.status_code >= 400:
             trans.rollback()
         else:
             trans.commit()
         return ret
     except:
         trans.rollback()
         raise
     finally:
         trans.close()
コード例 #5
0
def release_list(request):
    kwargs = {}
    if request.args.get("product"):
        kwargs["product"] = request.args.get("product")
    if request.args.get("name_prefix"):
        kwargs["name_prefix"] = request.args.get("name_prefix")
    if request.args.get("names_only"):
        kwargs["nameOnly"] = True
    with dbo.begin() as trans:
        ret = dbo.releases.getReleaseInfo(**kwargs, transaction=trans)
        for r in releases_service.get_releases(trans)["releases"]:
            if kwargs.get("product") and r["product"] != kwargs["product"]:
                continue
            if kwargs.get("name_prefix") and not r["name"].startswith(kwargs["name_prefix"]):
                continue

            ret.append(r)

        return ret
コード例 #6
0
ファイル: base.py プロジェクト: philipp-classen/balrog
def setup_request():
    if request.full_path.startswith("/v2"):
        from auslib.global_state import dbo

        request.transaction = dbo.begin()

        if request.method in ("POST", "PUT", "DELETE"):
            username = verified_userinfo(request, app.config["AUTH_DOMAIN"], app.config["AUTH_AUDIENCE"])["email"]
            if not username:
                log.warning("Login Required")
                return problem(401, "Unauthenticated", "Login Required")
            # Machine to machine accounts are identified by uninformative clientIds
            # In order to keep Balrog permissions more readable, we map them to
            # more useful usernames, which are stored in the app config.
            if "@" not in username:
                username = app.config["M2M_ACCOUNT_MAPPING"].get(username, username)
            # Even if the user has provided a valid access token, we don't want to assume
            # that person should be able to access Balrog (in case auth0 is not configured
            # to be restrictive enough.
            elif not dbo.isKnownUser(username):
                log.warning("Authorization Required")
                return problem(403, "Forbidden", "Authorization Required")

            request.username = username
コード例 #7
0
 def wrapper(*args, **kwargs):
     with dbo.begin() as transaction:
         return f(*args, transaction=transaction, **kwargs)
コード例 #8
0
ファイル: base.py プロジェクト: mozmark/balrog
 def delete(self, *args, **kwargs):
     self.log.debug("processing DELETE request to %s" % request.path)
     with dbo.begin() as trans:
         return self._delete(*args, transaction=trans, **kwargs)
コード例 #9
0
ファイル: base.py プロジェクト: mozmark/balrog
 def put(self, *args, **kwargs):
     self.log.debug("processing PUT request to %s" % request.path)
     with dbo.begin() as trans:
         return self._put(*args, transaction=trans, **kwargs)
コード例 #10
0
ファイル: base.py プロジェクト: andreja-cliqz/balrog
 def delete(self, *args, **kwargs):
     self.log.debug("processing DELETE request to %s" % request.path)
     with dbo.begin() as trans:
         return self._delete(*args, transaction=trans, **kwargs)
コード例 #11
0
ファイル: base.py プロジェクト: andreja-cliqz/balrog
 def put(self, *args, **kwargs):
     self.log.debug("processing PUT request to %s" % request.path)
     with dbo.begin() as trans:
         return self._put(*args, transaction=trans, **kwargs)
コード例 #12
0
ファイル: client.py プロジェクト: mozbhearsum/balrog
 def wrapper(*args, **kwargs):
     with dbo.begin() as transaction:
         return f(*args, transaction=transaction, **kwargs)