Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(376)

Delta Between Two Patch Sets: MoinMoin/storage/middleware/validation.py

Issue 11248043: Subscription validator (Closed)
Left Patch Set: Remove trailing comma from tuples Created 11 years, 9 months ago
Right Patch Set: Back to (el1, el2, ) style Created 11 years, 9 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « MoinMoin/storage/middleware/_tests/test_validation.py ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 # Copyright: 2011,2012 MoinMoin:ThomasWaldmann 1 # Copyright: 2011,2012 MoinMoin:ThomasWaldmann
2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details. 2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
3 3
4 """ 4 """
5 MoinMoin - validation for storage meta / data 5 MoinMoin - validation for storage meta / data
6 6
7 validation modes: 7 validation modes:
8 8
9 trusted == False: for metadata coming from user input (like from web form) - 9 trusted == False: for metadata coming from user input (like from web form) -
10 in this mode some values will be forced (e.g. mtime, 10 in this mode some values will be forced (e.g. mtime,
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 def subscription_validator(element, state): 322 def subscription_validator(element, state):
323 """ 323 """
324 a subscription 324 a subscription
325 """ 325 """
326 try: 326 try:
327 keyword, value = element.value.split(":", 1) 327 keyword, value = element.value.split(":", 1)
328 except ValueError: 328 except ValueError:
329 element.add_error("Subscription must contain colon delimiters.") 329 element.add_error("Subscription must contain colon delimiters.")
330 return False 330 return False
331 331
332 if keyword in (keys.ITEMID,): 332 if keyword in (keys.ITEMID, ):
Thomas.J.Waldmann 2013/07/16 16:19:26 pep8 wants a blank after the comma
333 value_element = String(value) 333 value_element = String(value)
334 value_is_valid = uuid_validator(value_element, state) 334 valid = uuid_validator(value_element, state)
waldi 2013/07/16 16:07:45 I said: do that in a separate change.
ana.balica 2013/07/16 18:11:22 What does mean then a separate change? New code re
335 elif keyword in (keys.NAME, keys.TAGS, keys.NAMERE, keys.NAMEPREFIX): 335 elif keyword in (keys.NAME, keys.TAGS, keys.NAMERE, keys.NAMEPREFIX, ):
Thomas.J.Waldmann 2013/07/16 16:19:26 here I'ld also like the trailing comma (and the bl
ana.balica 2013/07/16 18:03:58 Earlier I was suggested to change this https://cod
336 try: 336 try:
337 namespace, value = value.split(":", 1) 337 namespace, value = value.split(":", 1)
338 except ValueError: 338 except ValueError:
339 element.add_error("Subscription must contain 2 colon delimiters.") 339 element.add_error("Subscription must contain 2 colon delimiters.")
340 return False 340 return False
341 namespace_element = String(namespace) 341 namespace_element = String(namespace)
342 if not namespace_validator(namespace_element, state): 342 if not namespace_validator(namespace_element, state):
343 element.add_error("Not a valid namespace value.") 343 element.add_error("Not a valid namespace value.")
344 return False 344 return False
345 else: 345 else:
346 element.add_error( 346 element.add_error(
347 "Subscription must start with one of the keywords: " 347 "Subscription must start with one of the keywords: "
348 "'itemid', 'name', 'tags', 'namere' or 'nameprefix'.") 348 "'itemid', 'name', 'tags', 'namere' or 'nameprefix'.")
349 return False 349 return False
350 350
351 value_element = String(value) 351 value_element = String(value)
352 if keyword == keys.TAGS: 352 if keyword == keys.TAGS:
353 value_is_valid = tag_validator(value_element, state) 353 valid = tag_validator(value_element, state)
Thomas.J.Waldmann 2013/07/16 16:19:26 maybe just "valid" instead "value_is_valid" is als
354 elif keyword == keys.NAME: 354 elif keyword == keys.NAME:
355 value_is_valid = name_validator(value_element, state) 355 valid = name_validator(value_element, state)
356 elif keyword in (keys.NAMERE, keys.NAMEPREFIX): 356 elif keyword in (keys.NAMERE, keys.NAMEPREFIX):
357 value_is_valid = True 357 valid = True
358 if not value_is_valid: 358 if not valid:
359 element.add_error("The value is not valid.") 359 element.add_error("The value is not valid.")
360 return False 360 return valid
361 return True
Thomas.J.Waldmann 2013/07/16 16:19:26 merge these 2 lines as "return valid" ?
362 361
363 362
364 common_meta = ( 363 common_meta = (
365 String.named(keys.ITEMID).validated_by(itemid_validator), 364 String.named(keys.ITEMID).validated_by(itemid_validator),
366 String.named(keys.REVID).validated_by(revid_validator), 365 String.named(keys.REVID).validated_by(revid_validator),
367 String.named(keys.PARENTID).validated_by(uuid_validator).using(optional=True ), 366 String.named(keys.PARENTID).validated_by(uuid_validator).using(optional=True ),
368 String.named(keys.WIKINAME).using(strip=False).validated_by(wikiname_validat or), 367 String.named(keys.WIKINAME).using(strip=False).validated_by(wikiname_validat or),
369 String.named(keys.NAMESPACE).using(strip=False).validated_by(namespace_valid ator), 368 String.named(keys.NAMESPACE).using(strip=False).validated_by(namespace_valid ator),
370 List.named(keys.NAME).of(String.using(strip=False).validated_by(name_validat or)).using(optional=True), 369 List.named(keys.NAME).of(String.using(strip=False).validated_by(name_validat or)).using(optional=True),
371 List.named(keys.NAME_OLD).of(String.using(strip=False).validated_by(name_val idator)).using(optional=True), 370 List.named(keys.NAME_OLD).of(String.using(strip=False).validated_by(name_val idator)).using(optional=True),
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 coding = ct.parameters['charset'].lower() 431 coding = ct.parameters['charset'].lower()
433 if coding not in ['ascii', 'utf-8', ]: 432 if coding not in ['ascii', 'utf-8', ]:
434 return True # checking 8bit encodings this way is pointless, decoding n ever raises 433 return True # checking 8bit encodings this way is pointless, decoding n ever raises
435 text_bytes = data.read() 434 text_bytes = data.read()
436 data.seek(0) # rewind, so it can be read again 435 data.seek(0) # rewind, so it can be read again
437 try: 436 try:
438 text_bytes.decode(coding) 437 text_bytes.decode(coding)
439 return True 438 return True
440 except UnicodeDecodeError: 439 except UnicodeDecodeError:
441 return False 440 return False
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b