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'))
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'))