本文整理汇总了Python中textutils.json_decode函数的典型用法代码示例。如果您正苦于以下问题:Python json_decode函数的具体用法?Python json_decode怎么用?Python json_decode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了json_decode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __call__
def __call__(self, req, db, user):
from operation.typechecker import TypeCheckerContext
if user.isAnonymous() and not self.__accept_anonymous_user:
return OperationFailureMustLogin()
if req.method == "POST": data = req.read()
else: data = req.getParameter("data")
if not data: raise OperationError("no input")
try: value = json_decode(data)
except ValueError as error: raise OperationError("invalid input: %s" % str(error))
try:
self.__checker(value, TypeCheckerContext(req, db, user))
return self.process(db, user, **value)
except OperationError as error:
return error
except OperationFailure as failure:
return failure
except dbutils.NoSuchUser as error:
return OperationFailure(code="nosuchuser",
title="Who is '%s'?" % error.name,
message="There is no user in Critic's database named that.")
except dbutils.NoSuchReview as error:
return OperationFailure(code="nosuchreview",
title="Invalid review ID",
message="The review ID r/%d is not valid." % error.id)
except dbutils.TransactionRollbackError:
return OperationFailure(code="transactionrollback",
title="Transaction rolled back",
message="Your database transaction rolled back, probably due to a deadlock. Please try again.")
except:
# Decode value again since the type checkers might have modified it.
value = json_decode(data)
error_message = ("User: %s\nReferrer: %s\nData: %s\n\n%s"
% (user.name,
req.getReferrer(),
json_encode(self.sanitize(value), indent=2),
traceback.format_exc()))
db.rollback()
import mailutils
import configuration
if not user.hasRole(db, "developer"):
mailutils.sendExceptionMessage(db, "wsgi[%s]" % req.path, error_message)
if configuration.debug.IS_DEVELOPMENT or user.hasRole(db, "developer"):
return OperationError(error_message)
else:
return OperationError("An unexpected error occurred. " +
"A message has been sent to the system administrator(s) " +
"with details about the problem.")
示例2: handle_input
def handle_input(self, data):
try:
result = json_decode(data)
except ValueError:
result = { "status": "error",
"error": ("invalid response:\n" +
background.utils.indent(data)) }
if result["status"] == "ok":
for item in result["info"]:
self.server.info(item)
if result["output"]:
self.__client.write(result["output"].strip() + "\n")
if result["accept"]:
self.__client.write("ok\n")
elif result["status"] == "reject":
self.server.warning(result["message"])
self.__client.write(result["message"].strip() + "\n")
else:
self.server.error(result["error"])
self.__client.write("""\
An exception was raised while processing the request. A message has
been sent to the system administrator(s).
""")
if configuration.debug.IS_DEVELOPMENT:
self.__client.write("\n" + result["error"].strip() + "\n")
self.__client.close()
示例3: process
def process(self, db, user, service_name):
if not user.hasRole(db, "administrator"):
raise OperationFailure(
code="notallowed", title="Not allowed!", message="Only a system administrator can restart services."
)
if service_name == "wsgi":
for pid in os.listdir(configuration.paths.WSGI_PIDFILE_DIR):
try:
os.kill(int(pid), signal.SIGINT)
except:
pass
return OperationResult()
else:
connection = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
connection.connect(configuration.services.SERVICEMANAGER["address"])
connection.send(textutils.json_encode({"command": "restart", "service": service_name}))
connection.shutdown(socket.SHUT_WR)
data = ""
while True:
received = connection.recv(4096)
if not received:
break
data += received
result = textutils.json_decode(data)
if result["status"] == "ok":
return OperationResult()
else:
raise OperationError, result["error"]
示例4: handle_input
def handle_input(self, value):
try: result = json_decode(value)
except ValueError:
self.server.error("invalid response:\n" + indent(value))
result = self.request.copy()
result["error"] = value
for client in self.clients: client.add_result(result)
self.server.request_finished(self, self.request, result)
示例5: perform_job
def perform_job():
import syntaxhighlight.generate
request = json_decode(sys.stdin.read())
request["highlighted"] = syntaxhighlight.generate.generateHighlight(
repository_path=request["repository_path"],
sha1=request["sha1"],
language=request["language"])
sys.stdout.write(json_encode(request))
示例6: handle_input
def handle_input(self, _file, data):
data = textutils.json_decode(data)
process = self.server.get_process(data["flavor"])
extension = ExtensionRunner.Extension(
self.server, self, process, data["timeout"])
extension.write(data["stdin"])
extension.close()
self.server.add_peer(extension)
示例7: handle_input
def handle_input(self, data):
try: data = json_decode(data)
except ValueError:
self.server.error("invalid response from wait-for-update child: %r" % data)
self.client.close()
if data["status"] == "output":
self.client.write(data["output"])
self.server.debug(" hook output written to client")
elif data["status"] == "no-output":
self.server.debug(" update produced no hook output")
else:
self.server.debug(" timeout")
self.client.close()
示例8: __call__
def __call__(self, req, db, user):
if user.isAnonymous() and not self.__accept_anonymous_user:
return OperationFailureMustLogin()
if req.method == "POST": data = req.read()
else: data = req.getParameter("data")
if not data: raise OperationError, "no input"
try: value = json_decode(data)
except ValueError, error: raise OperationError, "invalid input: %s" % str(error)
self.__checker(value)
try: return self.process(db, user, **value)
except OperationError: raise
except OperationFailure, failure: return failure
except dbutils.NoSuchUser, error:
return OperationFailure(code="nosuchuser",
title="Who is '%s'?" % error.name,
message="There is no user in Critic's database named that.")
示例9: requestChangesets
def requestChangesets(requests):
try:
connection = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
connection.connect(configuration.services.CHANGESET["address"])
connection.send(json_encode(requests))
connection.shutdown(socket.SHUT_WR)
data = ""
while True:
received = connection.recv(4096)
if not received: break
data += received
connection.close()
except socket.error as error:
raise ChangesetBackgroundServiceError(error[1])
try:
results = json_decode(data)
except ValueError:
raise ChangesetBackgroundServiceError(
"returned an invalid response: %r" % data)
if type(results) != list:
# If not a list, the result is probably an error message.
raise ChangesetBackgroundServiceError(str(results))
if len(results) != len(requests):
raise ChangesetBackgroundServiceError("didn't process all requests")
errors = []
for result in results:
if "error" in result:
errors.append(result["error"])
if errors:
raise ChangesetBackgroundServiceError(
"one or more requests failed:\n%s" % "\n".join(map(indent, errors)))
示例10: requestHighlights
def requestHighlights(repository, sha1s):
requests = [{ "repository_path": repository.path, "sha1": sha1, "path": path, "language": language }
for sha1, (path, language) in sha1s.items()
if not syntaxhighlight.isHighlighted(sha1, language)]
if not requests: return
try:
connection = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
connection.connect(configuration.services.HIGHLIGHT["address"])
connection.send(json_encode(requests))
connection.shutdown(socket.SHUT_WR)
data = ""
while True:
received = connection.recv(4096)
if not received: break
data += received
connection.close()
except socket.error as error:
raise HighlightBackgroundServiceError(error[1])
try:
results = json_decode(data)
except ValueError:
raise HighlightBackgroundServiceError(
"returned an invalid response (%r)" % data)
if type(results) != list:
# If not a list, the result is probably an error message.
raise HighlightBackgroundServiceError(str(results))
if len(results) != len(requests):
raise HighlightBackgroundServiceError("didn't process all requests")
示例11: perform_job
def perform_job():
soft_limit, hard_limit = getrlimit(RLIMIT_RSS)
rss_limit = configuration.services.CHANGESET["rss_limit"]
if soft_limit < rss_limit:
setrlimit(RLIMIT_RSS, (rss_limit, hard_limit))
from changeset.create import createChangeset
request = json_decode(sys.stdin.read())
try:
db = dbutils.Database()
createChangeset(db, request)
db.close()
sys.stdout.write(json_encode(request))
except:
print "Request:"
print json_encode(request, indent=2)
print
print_exc(file=sys.stdout)
示例12: str
except gitutils.GitReferenceError:
return "invalid commit id"
except Exception as exception:
return str(exception)
HANDLERS = { "propagate-comment": propagateComment }
try:
if len(sys.argv) > 1:
init()
for command in sys.argv[1:]:
pending_mails = None
if command == "generate-mails-for-batch":
data = json_decode(sys.stdin.readline())
batch_id = data["batch_id"]
was_accepted = data["was_accepted"]
is_accepted = data["is_accepted"]
pending_mails = reviewing.utils.generateMailsForBatch(db, batch_id, was_accepted, is_accepted)
elif command == "generate-mails-for-assignments-transaction":
data = json_decode(sys.stdin.readline())
transaction_id = data["transaction_id"]
pending_mails = reviewing.utils.generateMailsForAssignmentsTransaction(db, transaction_id)
elif command == "apply-filters":
data = json_decode(sys.stdin.readline())
filters = reviewing.filters.Filters()
user = dbutils.User.fromId(db, data["user_id"]) if "user_id" in data else None
if "review_id" in data:
review = dbutils.Review.fromId(db, data["review_id"])
filters.setFiles(db, review=review)
示例13: renderCreateReview
def renderCreateReview(req, db, user):
if user.isAnonymous(): raise page.utils.NeedLogin(req)
repository = req.getParameter("repository", filter=gitutils.Repository.FromParameter(db), default=None)
applyparentfilters = req.getParameter("applyparentfilters", "yes" if user.getPreference(db, 'review.applyUpstreamFilters') else "no") == "yes"
cursor = db.cursor()
if req.method == "POST":
data = json_decode(req.read())
summary = data.get("summary")
description = data.get("description")
review_branch_name = data.get("review_branch_name")
commit_ids = data.get("commit_ids")
commit_sha1s = data.get("commit_sha1s")
else:
summary = req.getParameter("summary", None)
description = req.getParameter("description", None)
review_branch_name = req.getParameter("reviewbranchname", None)
commit_ids = None
commit_sha1s = None
commits_arg = req.getParameter("commits", None)
remote = req.getParameter("remote", None)
upstream = req.getParameter("upstream", "master")
branch_name = req.getParameter("branch", None)
if commits_arg:
try: commit_ids = map(int, commits_arg.split(","))
except: commit_sha1s = [repository.revparse(ref) for ref in commits_arg.split(",")]
elif branch_name:
cursor.execute("""SELECT commit
FROM reachable
JOIN branches ON (branch=id)
WHERE repository=%s
AND name=%s""",
(repository.id, branch_name))
commit_ids = [commit_id for (commit_id,) in cursor]
if len(commit_ids) > configuration.limits.MAXIMUM_REVIEW_COMMITS:
raise page.utils.DisplayMessage(
"Too many commits!",
(("<p>The branch <code>%s</code> contains %d commits. Reviews can"
"be created from branches that contain at most %d commits.</p>"
"<p>This limit can be adjusted by modifying the system setting"
"<code>configuration.limits.MAXIMUM_REVIEW_COMMITS</code>.</p>")
% (htmlutils.htmlify(branch_name), len(commit_ids),
configuration.limits.MAXIMUM_REVIEW_COMMITS)),
html=True)
else:
return renderSelectSource(req, db, user)
req.content_type = "text/html; charset=utf-8"
if commit_ids:
commits = [gitutils.Commit.fromId(db, repository, commit_id) for commit_id in commit_ids]
elif commit_sha1s:
commits = [gitutils.Commit.fromSHA1(db, repository, commit_sha1) for commit_sha1 in commit_sha1s]
else:
commits = []
if not commit_ids:
commit_ids = [commit.getId(db) for commit in commits]
if not commit_sha1s:
commit_sha1s = [commit.sha1 for commit in commits]
if summary is None:
if len(commits) == 1:
summary = commits[0].summary()
else:
summary = ""
if review_branch_name:
invalid_branch_name = "false"
default_branch_name = review_branch_name
else:
invalid_branch_name = htmlutils.jsify(user.name + "/")
default_branch_name = user.name + "/"
match = re.search("(?:^|[Ff]ix(?:e[ds])?(?: +for)?(?: +bug)? +)([A-Z][A-Z0-9]+-[0-9]+)", summary)
if match:
invalid_branch_name = "false"
default_branch_name = htmlutils.htmlify(match.group(1))
changesets = []
changeset_utils.createChangesets(db, repository, commits)
for commit in commits:
changesets.extend(changeset_utils.createChangeset(db, None, repository, commit, do_highlight=False))
changeset_ids = [changeset.id for changeset in changesets]
all_reviewers, all_watchers = reviewing.utils.getReviewersAndWatchers(
db, repository, changesets=changesets, applyparentfilters=applyparentfilters)
document = htmlutils.Document(req)
html = document.html()
head = html.head()
document.addInternalScript(user.getJS(db))
#.........这里部分代码省略.........
示例14: render
delay += delay
else: raise
if not connected:
raise page.utils.DisplayMessage, "Service manager not responding!"
connection.send(textutils.json_encode({ "query": "status" }))
connection.shutdown(socket.SHUT_WR)
data = ""
while True:
received = connection.recv(4096)
if not received: break
data += received
result = textutils.json_decode(data)
if result["status"] == "error":
raise page.utils.DisplayMessage, result["error"]
paleyellow = page.utils.PaleYellowTable(body, "Services")
def render(target):
table = target.table("services", cellspacing=0, align="center")
headings = table.tr("headings")
headings.th("name").text("Name")
headings.th("module").text("Module")
headings.th("pid").text("PID")
headings.th("rss").text("RSS")
headings.th("cpu").text("CPU")
示例15: getrlimit
from dbutils import Database
if "--json-job" in sys.argv[1:]:
from resource import getrlimit, setrlimit, RLIMIT_RSS
from traceback import print_exc
soft_limit, hard_limit = getrlimit(RLIMIT_RSS)
rss_limit = configuration.services.CHANGESET["rss_limit"]
if soft_limit < rss_limit:
setrlimit(RLIMIT_RSS, (rss_limit, hard_limit))
from changeset.create import createChangeset
from textutils import json_decode, json_encode
request = json_decode(sys.stdin.read())
try:
db = Database()
createChangeset(db, request)
db.close()
sys.stdout.write(json_encode(request))
except:
print "Request:"
print json_encode(request, indent=2)
print
print_exc(file=sys.stdout)