dm.zope.schema

צילום מסך תוכנה:
dm.zope.schema
פרטי תוכנה:
גרסה: 2.0
טען תאריך: 14 Apr 15
מפתחים: Dieter Maurer
רשיון: ללא תשלום
פופולריות: 3

Rating: nan/5 (Total Votes: 0)

dm.zope.schema מכיל הרחבות לzope.schema.
מודולי
ודא
לוויה zope.interface.verify לחלק הסכימה של ממשקים.
הוא מכיל verify_schema הפונקציה (iface, obj, הקשר = אין, check_declaration = True) אשר מוודאת כי ממלאות obj חלק הסכימה של iface ממשק. שדות סכימה צריכים לקבל חייבים הקשר לפני שהם יכולים להיות מאומתים. הקשר מציין הקשר זה וברירות מחדל לobj. check_declaration בדיקות שobj מצהיר לprivide iface.
סכימה
התוכן העיקרי הוא המעמד Mixin SchemaConfigured. הוא תומך בתצורה לפי חלק הסכימה של הממשקים המיושמים על ידי המחלקה הנגזרת SchemaConfigured. אם אתה רוצה לשלוט ממנו ממשקי הסכימה נגזרת, אתה יכול להשתמש בתכונת מעמד SC_SCHEMAS: הערך שלה צריך להיות ללא (נובע סכימה באופן אוטומטי מהממשקים מיושמים), ממשק יחיד או tuple של ממשקים. השתלטות מפורשת על הממשקים המשמשים לקביעת הסכימה חשובה במיוחד עבור מחלקות תוכן מוגדרות 2 סכימת Zope (כOFS.SimpleItem.SimpleItem מחלקת הבסיס שלהם מיישם מספר עצום של ממשקים ששדות סביר להניח שאתה לא רוצה בסכימה שלך).
SchemaConfiguredEvolution כיתת Mixin מספק תמיכה להתפתחות סכימה ל( ZODB) אובייקטים מתמשכים. __setstate__ מוסיף חסר תכונות לאובייקט כזה שאתה יכול להוסיף שדות חדשים לסכימה שלך ועדיין למצוא את כל התכונות המתאימות באובייקטים המתאימים גם כאשר אלה נוצרו לפני ההארכה. הערה: על מנת שSchemaConfiguredEvolution להיות יעיל, זה חייב לבוא מוקדם בצו הרזולוציה שיטה (MRO) (לפני persistent.Persistent). זו הסיבה שהוא הוא מחלקה נפרדת והתכונה שלה לא נכללה בSchemaConfigured עצמו (ייתכן שיש סיבות טובות שSchemaConfigured מאוחר בMRO). כחלופה לשימוש בSchemaConfiguredEvolution, אתה יכול להשתמש בערכי ברירת מחדל שהוגדרו ברמת כיתה לתחומים חדשים.
מדי פעם, schemaitems הפונקציות וschemadict עשוי להיות שימושיים. הם לחלץ את חלק הסכימה של מפרט ממשק או ממשק כרשימה של id, זוגות שדה או מילון, בהתאמה.
אובייקט השדה מהווה תחליף לzope.schema.Object. האחרון חסר מידע משטח בשגיאות אימות (https://bugs.launchpad.net/zope.schema/+bug/620324) מה שהופך את זיהוי של השדות המושפעים קשים שלא לצורך. מדי פעם, אחד לא רוצה לדכא את הסימון שאובייקט תוקף באופן מפורש מצהיר לספק הממשק. יש אובייקט check_declaration רכוש נוסף כדי לשלוט בזה (כברירת מחדל לנכון).
propertymanager
מודול זה מיישם תת OFS.PropertyManager.PropertyManager סכימה מבוססת. _properties תכונה של המתארת ​​את התכונות לא נשמר בכיתה או מקרים שלה, אבל נגזר מהסכמות שסופקו (מיושמות בהתאמה). לרגע, לא ניתן להרחיב על מאפייני רמה מבוססת למשל (שלא על ידי מתן סכימה אחרת).
zope.schema משתמש ביוניקוד כדי לייצג טקסט. יכול בנכסי Unicode תמיכת עיקרון PropertyManager. עם זאת, בשל באג / חולשה, דף ניהול נכסים מטפל בהם בצורה נכונה רק, כאשר management_page_charset אינו מוגדר או שיש ערך UTF-8 (שים לב למקרה הכתיב העליון!). אנו משתמשים בתכונות יוניקוד כברירת מחדל, אלא אם כן management_page_charset.upper () מניב ערך שונה מ- UTF-8. כמו כן אנו מספקים WorkaroundSpelling_management_page_charset כיתת Mixin כדי לעקוף ההתעקשות המטופשת של Zope במקרה כתיב העליון לmanagement_page_charset.
לרגע, סוגי השדות הבאים נתמכים: טקסט, TextLine, Bytes, BytesLine`, בול, Int, לצוף ורשימה עם סוג ערך של TextLine או BytesLine. סוגים אחרים יעלו NotImplementedError.
מודול יושם למנף dm.zope.generate. אלטרנטיבה הייתה היישום של מתקני הייצור המבוססים על "zope.formlib" ושימוש בצורות תוספת מה שנקרא. בהתאם לניסיון, אני יכול לעבור לחלופה זו.
טופס
מודול מגדיר לערוך ברירת מחדל (SchemaConfiguredEditForm) וצורות תצוגה (SchemaConfiguredDisplayForm) לdm.zope.schema.schema.SchemaConfigured.
זה תלוי בzope.formlib.
יישומון
מספק יישומונים תצוגה ולערוך עבור שדות Timedelta, יישומון הגון תצוגה לשדות סיסמא (סיסמאות מציגה ברירת מחדל בטקסט רגיל) ויישומון קלט לסיסמא שאין לך כוח כדי לספק את ערך הסיסמה בכל פעם שאתה עורך את הטופס.
זה תלוי בzope.app.form בגרסאות ישנות יותר Zope ועל zope.formlib בחדש יותר.
Z2
subpackage זה משלב סכימה הקשורים וZope 2 פונקציונלי. בגרסאות חדשות יותר Zope, זה תלוי בfive.formlib.
טופס
מודול מגדיר לערוך ברירת מחדל (SchemaConfiguredEditForm) וצורות תצוגה (SchemaConfiguredDisplayForm) לdm.zope.schema.schema.SchemaConfigured לשימוש בZope 2.
זה תלוי בzope.formlib.
בנאי
מודול זה מכיל SchemaConfiguredAddForm צורת תוספת כיתה וadd_form_factory מפעל לייצור צורת תוספת (המכונה "בנאי" על ידי Zope 2) לשיעורים הבוסס dm.zope.schema.schema.SchemaConfigured. טופס תוספת שנוצר משמש בדרך כלל כחלק מפרמטר הבנאים לregisterClass.
יש add_form_factory פרמטרים:
& Nbsp; תיאור שם ברירת מחדל
& Nbsp; class_ הכיתה כדי ליצור את הצורה ל
& Nbsp; כותרת יצירת מופע של class_ הכותרת מוצגת בצורה
& Nbsp; בכיתה תיאור _.__ doc__ התיעוד מוצג בצורה
& Nbsp; form_class כיתת צורת SchemaConfiguredAddForm לשמש
add_form_factory יוצר צורת zope.formlib עם שדות שהוגדרו על ידי הסכמות מיושמות של class_ כיתת dm.zope.schema.schema.SchemaConfigured.
מודול זה הוא דומה לdm.zope.generate.constructor. עם זאת, זה עובד לשיעורים הבוסס SchemaConfigured בזמן האחרון תומך בשיעורים הבוסס PropertyManager.
תבנית
מספק form_template תבנית דף התצוגה תוכל להציג ולערוך את Zope 2 אובייקטי תוכן סכימה מוגדרת בממשק ZMI הסטנדרטי.
דוגמאות
הגדרה: הוא מגדיר שתי סכימות S1 ו- S2, ממשק אני וC מעמד הנובעים מיישום SchemaConfigured הסכמות והממשק.
>>> מממשק zope.interface יבוא, מכשירים, providedBy
>>> מInt יבוא zope.schema
>>>
>>> מיבוא dm.zope.schema.schema SchemaConfigured
>>> מverify_schema יבוא dm.zope.schema.verify
>>>
>>> הכיתה S1 (Interface): i1 = Int (ברירת מחדל = 0)
...
>>> הכיתה S2 (Interface): i2 = Int (ברירת מחדל = 1)
...
>>> אני בכיתה (Interface):
... Def () שיטה: לעבור
...
>>> C כיתה (SchemaConfigured):
... מכשירים (S1, S2, I)
... Def שיטה (עצמי): לעבור
...
יש מקרי C תכונות המתאימות לשדות הסכימה. אם נותנים לשום טענות לבנאי, הם מקבלים את ברירת המחדל של השדה כערך. סיפקנו טיעונים (מילת המפתח!) דורסים את ברירות המחדל.
>>> C = C ()
>>> C.i1
0
>>> C.i2
1
>>> = ג C (i1 = 5)
>>> C.i1
5
הבנאי לא קבל את הטיעונים של מילות מפתח שאינו מוגדרים בסכמה כדי לאתר במהירות שגיאות כתיב. עם זאת, זה מקשה על השימוש בסופר בהיררכיה המעמדית לשיטת __init__. אולי, גרסאות עתידיות תספק אמצעי לשלוט סימון זו.
>>> C = C (x = 5)
Traceback (השיחה האחרונה שעברה):
& Nbsp; ...
TypeError: טיעון מילות מפתח סכימת עישון: x
אם ערכי השדות מתאימים, מקרי C לספק סכמות (כפי שאומת על ידי verify_schema). אחרת, verify_schema יעלה יוצא מן הכלל. דוגמא זו ממחישה גם את השימוש היסודי של verify_schema.
>>> Verify_schema (S1, ג)
>>> C.i1 = אין
>>> Verify_schema (S1, ג)
Traceback (השיחה האחרונה שעברה):
& Nbsp; ...
zope.schema.interfaces.WrongContainedType: [('i1', RequiredMissing ())]
אנחנו יכולים ליצור לערוך (או תצוגה) טופס לחפצים שלנו. שדות טופס נוצרים באופן אוטומטי לשדות הסכימה שלנו. יש לי כיתות צורת שיטת customize_fields אתה יכול לעקוף לספק שדות מותאמים אישית ו / או ווידג'טים.
פונקציונלי דומה זמין עבור Zope 2 בsubpackage Z2.
>>> מTestRequest יבוא zope.publisher.browser
>>> מSchemaConfiguredEditForm יבוא dm.zope.schema.form
>>>
>>> צורה = SchemaConfiguredEditForm (ג, TestRequest ())
>>> רשימה ([f .__ name__ לf בform.form_fields])
['I1', 'i2']

מה חדש בהודעה זו:

  • תמיכת צורה
  • תמיכת בנאי 2 Zope

דרישות :

  • Python

תוכנות אחרות של יזם Dieter Maurer

dm.zdoc
dm.zdoc

14 Apr 15

תגובות ל dm.zope.schema

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!