Ejemplo n.º 1
0
                    log.debug("SingleLocaleView.put: database version for %s is %s, updating it to %s", rel, releaseObj['version'], version)
                    def updateVersion():
                        old_data_version = db.releases.getReleases(name=rel, transaction=transaction)[0]['data_version']
                        db.releases.updateRelease(name=rel, version=version, changed_by=changed_by, old_data_version=old_data_version, transaction=transaction)
                        releaseObj['version'] = version
                    retry(updateVersion, sleeptime=5, retry_exceptions=(SQLAlchemyError,))
                # If it does exist, and this is this is the first release (aka, the one in the URL),
                # see if the locale exists, for purposes of setting the correct Response code.
                if rel == release:
                    try:
                        db.releases.getLocale(rel, platform, locale, transaction=transaction)
                        new = False
                    except:
                        pass
            # If the release doesn't exist, create it.
            else:
                releaseBlob = ReleaseBlobV1(name=rel, schema_version=CURRENT_SCHEMA_VERSION)
                retry(db.releases.addRelease, sleeptime=5, retry_exceptions=(SQLAlchemyError,),
                      kwargs=dict(name=rel, product=product, version=version, blob=releaseBlob, changed_by=changed_by, transaction=transaction))
            # We need to wrap this in order to make it retry-able.
            def updateLocale():
                old_data_version = db.releases.getReleases(name=rel, transaction=transaction)[0]['data_version']
                db.releases.addLocaleToRelease(rel, platform, locale, localeBlob, old_data_version, changed_by, transaction)
            retry(updateLocale, sleeptime=5, retry_exceptions=(SQLAlchemyError,))
        if new:
            return Response(status=201)
        else:
            return Response(status=200)

app.add_url_rule('/releases/<release>/builds/<platform>/<locale>', view_func=SingleLocaleView.as_view('single_locale'))
Ejemplo n.º 2
0
            return Response(status=404)
        try:
            data_version = int(request.args['data_version'])
            db.permissions.revokePermission(changed_by, username, permission, data_version)
            return Response(status=200)
        except ValueError, e:
            return Response(status=400, response=e.message)
        except Exception, e:
            return Response(status=500, response=e.message)

class PermissionsPageView(MethodView):
    """/permissions.html"""
    def get(self):
        users = db.permissions.getAllUsers()
        return render_template('permissions.html', users=users)

class UserPermissionsPageView(MethodView):
    """/user_permissions.html"""
    def get(self):
        username = request.args.get('username')
        permissions = db.permissions.getUserPermissions(username)
        if not username:
            return Response(status=404)
        return render_template('user_permissions.html', username=username, permissions=permissions)

app.add_url_rule('/users', view_func=UsersView.as_view('users'))
app.add_url_rule('/users/<username>/permissions', view_func=PermissionsView.as_view('permissions'))
app.add_url_rule('/users/<username>/permissions/<path:permission>', view_func=SpecificPermissionView.as_view('specific_permission'))
app.add_url_rule('/permissions.html', view_func=PermissionsPageView.as_view('permissions.html'))
app.add_url_rule('/user_permissions.html', view_func=UserPermissionsPageView.as_view('user_permissions.html'))