Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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 Loading... | |
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 Loading... | |
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 |
LEFT | RIGHT |