dm.zope.schema zope.schema জন্য এক্সটেনশন রয়েছে.
মডিউল
যাচাই
একটি সহচর ইন্টারফেস স্কিমা অংশ জন্য zope.interface.verify করতে.
এটা ফাংশন verify_schema রয়েছে (iface, OBJ, কনটেক্সট = কেউ না, check_declaration = সত্য) ইন্টারফেস iface যে OBJ সন্তুষ্ট স্কিমা অংশ পরীক্ষা করা হয়. স্কিমা ক্ষেত্র তারা যাচাই করা যাবে আগে একটি প্রেক্ষাপটে আবদ্ধ পেতে হবে. প্রসঙ্গ OBJ এই প্রসঙ্গ এবং ডিফল্ট নির্ধারণ করা হয়. OBJ iface privide থেকে ঘোষণা করে যে চেক check_declaration.
স্কিমা
মূল SchemaConfigured mixin বর্গ. এটা SchemaConfigured প্রাপ্ত বর্গ দ্বারা বাস্তবায়িত ইন্টারফেস স্কিমা অংশ অনুযায়ী কনফিগারেশন সমর্থন করে. আপনি যা থেকে স্কিমা প্রাপ্ত করা হয় ইন্টারফেস নিয়ন্ত্রণ করতে চান, আপনি বর্গ অ্যাট্রিবিউট SC_SCHEMAS ব্যবহার করতে পারেন: তার মান নাই (বাস্তবায়িত ইন্টারফেস থেকে স্বয়ংক্রিয়ভাবে স্কিমা আহরণ করা), একটি ইন্টারফেস ইন্টারফেস বা একটি Tuple হতে হবে. (তাদের বেস বর্গ OFS.SimpleItem.SimpleItem যার ক্ষেত্র আপনি সম্ভবত আপনার স্কিমা করতে চাই না ইন্টারফেস একটি বিশাল সংখ্যা কার্যকরী হিসেবে) স্কিমা নির্ধারণ ব্যবহৃত ইন্টারফেস উপর স্পষ্ট নিয়ন্ত্রণ গ্রহণ Zope 2 স্কিমা কনফিগার কন্টেন্ট ক্লাস এর জন্য বিশেষভাবে গুরুত্বপূর্ণ.
mixin বর্গ SchemaConfiguredEvolution (ZODB) ক্রমাগত বস্তু জন্য স্কিমা বিবর্তন জন্য সমর্থন উপলব্ধ করা হয়. তার __setstate__ আপনি আপনার স্কিমা নতুন ক্ষেত্র যোগ এবং এখনও যারা এক্সটেনশন আগে তৈরি করা হয়েছে, এমনকি যখন নিজ নিজ বস্তুর উপর সব সংশ্লিষ্ট বৈশিষ্ট্যাবলী খুঁজে পেতে পারেন যেমন যে বস্তুর বৈশিষ্ট্যাবলী অনুপস্থিত যোগ করা. দ্রষ্টব্য: কার্যকর হতে SchemaConfiguredEvolution জন্য, যাতে এটা প্রথম দিকে (persistent.Persistent আগে) পদ্ধতি রেজল্যুশন অর্ডার (ম্রো) মধ্যে আসতে হবে. একটি পৃথক বর্গ এবং তার বৈশিষ্ট্য SchemaConfigured নিজেই (ম্রো দেরী SchemaConfigured আছে ভাল কারণ থাকতে পারে) অন্তর্ভুক্ত করা হয় না কেন. SchemaConfiguredEvolution ব্যবহার একটি বিকল্প হিসাবে, আপনি নতুন ক্ষেত্রের জন্য বর্গ স্তরের উপর নির্ধারিত ডিফল্ট মান ব্যবহার করতে পারেন.
মাঝে মাঝে, ফাংশন schemaitems এবং schemadict দরকারী হতে পারে. তারা যথাক্রমে একটি আইডি তালিকা, ক্ষেত্র জোড়া একটি অভিধান, যেমন একটি ইন্টারফেস বা ইন্টারফেস স্পেসিফিকেশন স্কিমা অংশ নিষ্কাশন.
ক্ষেত্র অবজেক্ট zope.schema.Object জন্য একটি প্রতিস্থাপন. আধুনিক অকারণে কঠিন প্রভাবিত ক্ষেত্র সনাক্তকরণ করে তোলে, যা বৈধতা ত্রুটি ক্ষেত্র তথ্য (https://bugs.launchpad.net/zope.schema/+bug/620324) অভাব আছে. মাঝে মাঝে, এক একটি বৈধ বস্তু স্পষ্টভাবে ইন্টারফেস প্রদান ঘোষণা করে যে চেক দমন করতে চায়. অবজেক্ট এই (সত্য ডিফল্ট) নিয়ন্ত্রণ করতে অতিরিক্ত সম্পত্তি check_declaration আছে.
সম্পত্তি ব্যবস্থাপক
এই মডিউলের একটি স্কিমা ভিত্তি করে OFS.PropertyManager.PropertyManager উপশ্রেণী কার্যকরী. _properties বৈশিষ্ট্য বর্ণনা বর্গ বা তার দৃষ্টান্ত রক্ষণাবেক্ষণ কিন্তু দেওয়া (যথাক্রমে বাস্তবায়িত) স্কীমাস থেকে প্রাপ্ত না হয় বৈশিষ্ট্যাবলী. মুহূর্ত জন্য, বৈশিষ্ট্য (অন্য স্কিমা প্রদান করে ছাড়া) একটি দৃষ্টান্ত ভিত্তি করে স্তরে বাড়ানো যাবে না.
zope.schema টেক্সট প্রতিনিধিত্ব ইউনিকোড ব্যবহার করে. নীতি সমর্থন ইউনিকোড বৈশিষ্ট্যের পারেন PropertyManager. একটি বাগ / দুর্বলতা, সম্পত্তি ব্যবস্থাপনা পাতা শুধুমাত্র, management_page_charset সংজ্ঞায়িত করা হয় না যখন সঠিকভাবে তাদের পরিচালনা বা মান UTF-8, আছে কারণে তবে, (বড় হাতের বানান মনে রাখবেন!). Management_page_charset.upper () UTF-8 থেকে ভিন্ন একটি মান উৎপাদ, যদি না আমরা ডিফল্ট ইউনিকোড বৈশিষ্ট্য ব্যবহার করুন. আমরা management_page_charset জন্য হাতের বানান উপর Zope এর মূঢ় গোঁ প্রায় কাজ করার জন্য একটি mixin বর্গ WorkaroundSpelling_management_page_charset প্রদান.
মুহূর্ত জন্য, নিম্নলিখিত ক্ষেত্রের ধরনের সমর্থিত হবে: শিরোনাম, TextLine, বাইট, BytesLine`, bool, int, TextLine বা BytesLine একটি মান টাইপ সঙ্গে ভাসা এবং তালিকা. অন্যান্য ধরনের NotImplementedError বাড়াতে হবে.
মডিউল dm.zope.generate লিভারেজ প্রয়োগ করা হয়েছে. একটি বিকল্প "zope.formlib" এবং তথাকথিত যোগ ফরম ব্যবহারের উপর ভিত্তি করে প্রজন্মের সুবিধা বাস্তবায়ন হয়েছে. অভিজ্ঞতার উপর ভিত্তি করে, আমি এই বিকল্প সুইচ করতে পারেন.
ফর্ম
মডিউল ডিফল্ট সম্পাদনা (SchemaConfiguredEditForm) এবং dm.zope.schema.schema.SchemaConfigured জন্য প্রদর্শন (SchemaConfiguredDisplayForm) ফর্ম সংজ্ঞায়িত করে.
এটা zope.formlib উপর নির্ভর করে.
উইজেট
Timedelta ক্ষেত্রের জন্য প্রদর্শন এবং সম্পাদনা উইজেট প্রদান করে, পাসওয়ার্ড ক্ষেত্রের জন্য, একটি শালীন প্রদর্শন উইজেট (স্পষ্ট ডিফল্ট প্রদর্শন পাসওয়ার্ড) এবং আপনি ফর্ম সম্পাদনা যখনই পাসওয়ার্ড মূল্য প্রদান করতে বাধ্য করা হয় না যে পাসওয়ার্ড একটি ইনপুট উইজেট.
এটা পুরোনো Zope সংস্করণ এবং নতুন বেশী zope.formlib উপর zope.app.form উপর নির্ভর করে.
Z2
এই সাবপ্যাকেজ স্কিমা সম্পর্কিত সম্মিলন এবং Zope 2 কার্যকারিতা. নতুন Zope সংস্করণ, এটা five.formlib উপর নির্ভর করে.
ফর্ম
মডিউল Zope 2 ব্যবহারের জন্য dm.zope.schema.schema.SchemaConfigured জন্য ডিফল্ট সম্পাদনা (SchemaConfiguredEditForm) এবং প্রদর্শন (SchemaConfiguredDisplayForm) ফর্ম সংজ্ঞায়িত করে.
এটা zope.formlib উপর নির্ভর করে.
রচয়িতা
এই মডিউলের dm.zope.schema.schema.SchemaConfigured ভিত্তি করে ক্লাস জন্য একটি অ্যাড ফর্ম বর্গ SchemaConfiguredAddForm এবং (Zope 2 দ্বারা "রচয়িতা" বলা হয়) একটি অ্যাড ফর্ম প্রজন্মের জন্য একটি কারখানা add_form_factory রয়েছে. উত্পন্ন যোগ ফর্ম সাধারণত registerClass করতে কন্সট্রাকটর প্যারামিটার অংশ হিসাবে ব্যবহার করা হয়.
add_form_factory পরামিতি আছে:
& Nbsp; নাম ডিফল্ট বর্ণনা
& Nbsp; জন্য ফর্ম উৎপন্ন বর্গ class_
& Nbsp; শিরোনাম শিরোনাম আকারে দেখানো class_ উদাহরণস্বরূপ তৈরি করুন
& Nbsp; বর্ণনা বর্গ _.__ আকারে দেখানো ডকুমেন্টেশন doc__
& Nbsp; SchemaConfiguredAddForm ফর্ম বর্গ form_class ব্যবহার করা হবে
add_form_factory dm.zope.schema.schema.SchemaConfigured বর্গ class_ এর প্রয়োগ স্কীমাস দ্বারা সংজ্ঞায়িত ক্ষেত্র সঙ্গে একটি zope.formlib ফর্ম তৈরি করে.
এই মডিউলের dm.zope.generate.constructor অনুরূপ. আধুনিক PropertyManager ভিত্তি করে ক্লাস সমর্থন করে যখন যাইহোক, এটা SchemaConfigured ভিত্তি করে ক্লাস জন্য কাজ করে.
টেমপ্লেট
দেখতে এবং Zope মান ZMI ইন্টারফেসের মধ্যে 2 স্কিমা কনফিগার বিষয়বস্তু বস্তু সম্পাদনা করতে পারবেন ভিউ পাতা টেমপ্লেট form_template প্রদান করে.
উদাহরণ
সেটআপ: এটা দুই স্কীমাস S1 এবং S2, আমি এবং একটি বর্গ সি স্কীমাস এবং ইন্টারফেস বাস্তবায়ন SchemaConfigured থেকে আহরিত একটি ইন্টারফেস সংজ্ঞায়িত করে.
>>> Zope.interface আমদানি ইন্টারফেস, কার্যকরী, providedBy থেকে
>>> Zope.schema আমদানি আন্তর্জাতিক থেকে
>>>
>>> Dm.zope.schema.schema আমদানি থেকে SchemaConfigured
>>> Dm.zope.schema.verify আমদানি verify_schema থেকে
>>>
>>> বর্গ S1 (ইন্টারফেস): I1 = আন্তর্জাতিক (ডিফল্ট = 0)
...
>>> বর্গ S2, (ইন্টারফেস): I2 = আন্তর্জাতিক (ডিফল্ট = 1)
...
>>> বর্গ আমি (ইন্টারফেস):
... Def পদ্ধতি (): পাস
...
>>> বর্গ সি (SchemaConfigured):
... কার্যকরী (S1, S2, আমি)
... Def পদ্ধতি (স্ব): পাস
...
সি দৃষ্টান্ত স্কিমা ক্ষেত্র সংশ্লিষ্ট গুণাবলী আছে. কোন যুক্তি রচয়িতা জন্য দেওয়া হয়, তারা মান হিসাবে ক্ষেত্র ডিফল্ট পেতে. তবে শর্ত (শব্দ!) আর্গুমেন্ট ডিফল্ট মান অগ্রাহ্য করা.
>>> গ = সি ()
>>> C.i1
0
>>> C.i2
1
>>> গ = সি (I1 = 5)
>>> C.i1
5
রচয়িতা দ্রুত বানান ত্রুটি সনাক্ত করার জন্য স্কিমার সংজ্ঞায়িত না শব্দ আর্গুমেন্ট প্রত্যাখ্যান করে. যাইহোক, এই __init__ পদ্ধতি বর্গ অনুক্রমের মধ্যে সুপার ব্যবহার ব্যাহত. হতে পারে, ভবিষ্যতে সংস্করণের এই চেক নিয়ন্ত্রণ করার জন্য একটি উপায় প্রদান করবে.
>>> গ = সি (X = 5)
ট্রেসব্যাক (সবচেয়ে সাম্প্রতিক কল শেষ):
& Nbsp; ...
TypeError: অ স্কিমা শব্দ যুক্তি: এক্স
ক্ষেত্রের মান উপযুক্ত হয়, তাহলে, সি দৃষ্টান্ত (verify_schema দ্বারা যাচাই হিসাবে) স্কীমাস প্রদান. অন্যথা, verify_schema একটি ব্যতিক্রম বাড়াতে হবে. এই যেমন এছাড়াও verify_schema এর প্রাথমিক ব্যবহার প্রমান.
>>> Verify_schema (S1, গ)
>>> C.i1 = কেউ
>>> Verify_schema (S1, গ)
ট্রেসব্যাক (সবচেয়ে সাম্প্রতিক কল শেষ):
& Nbsp; ...
zope.schema.interfaces.WrongContainedType: [('I1,' RequiredMissing ())]
আমরা আমাদের অবজেক্টের জন্য একটি সম্পাদনা (বা প্রদর্শন) ফর্ম তৈরি করতে পারেন. ফরম ক্ষেত্র স্বয়ংক্রিয়ভাবে আমাদের স্কিমা ক্ষেত্রের জন্য তৈরি করা হয়. ফর্ম ক্লাস আপনি কাস্টম ক্ষেত্র এবং / অথবা উইজেট প্রদান মান অগ্রাহ্য করা যাবে একটি customize_fields পদ্ধতি আছে.
অনুরূপ কার্যকারিতা Z2 সাবপ্যাকেজ মধ্যে Zope 2 জন্য উপলব্ধ.
>>> Zope.publisher.browser আমদানি TestRequest থেকে
>>> Dm.zope.schema.form আমদানি SchemaConfiguredEditForm থেকে
>>>
>>> ফর্ম = SchemaConfiguredEditForm (সি, TestRequest ())
>>> তালিকা ([form.form_fields মধ্যে চ জন্য .__ name__ চ])
['I1', 'I2']
এই রিলিজে নতুন কি:
- ফর্ম সমর্থন
- Zope 2 রচয়িতা সমর্থন
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না