zope.principalannotation

نرم افزار تصویر:
zope.principalannotation
جزئیات نرم افزار:
نسخه: 4.0.0 Alpha 2
ها تاریخ: 14 Apr 15
توسعه دهنده: Zope Corporation and Contributors
پروانه: رایگان
محبوبیت: 5

Rating: 5.0/5 (Total Votes: 1)

.

zope.principalannotation یک ماژول پایتون است که پیاده سازی حاشیه نویسی برای مدیران zope.security و nbsp است؛ برای آن را روشن، اصل در اینجا شی فراهم می کند که رابط zope.security.interfaces.IPrincipal و حاشیه نویسی شی ارائه zope است. annotation.interfaces.IAnnotations.
مشکل این است که اصول پویا، اشیاء غیر مداوم ایجاد در پرواز برای هر شرکت امنیتی (درخواست و یا چیزی) است، بنابراین تکنیک های حاشیه نویسی رایج، مانند AttributeAnnotations می تواند به آنها اعمال نمی شود.
این بسته فراهم می کند ذخیره سازی مداوم از حاشیه نویسی اصلی، ذخیره سازی حاشیه نویسی توسط ID اصلی و همچنین به عنوان یک آداپتور از IPrincipal به IAnnotations.
PrincipalAnnotationUtility
هسته این بسته کلاس PrincipalAnnotationUtility که در فروشگاه ها حاشیه نویسی برای مدیران و اجازه می دهد تا آنها را به راحتی است.
آن را فراهم می رابط IPrincipalAnnotationUtility:
>>> از zope.principalannotation.interfaces وارد IPrincipalAnnotationUtility
>>> از zope.principalannotation.utility واردات PrincipalAnnotationUtility
>>> از zope.interface.verify verifyObject واردات
>>> زمانی = PrincipalAnnotationUtility ()
>>> verifyObject (IPrincipalAnnotationUtility، زمانی)
درست
آن را فراهم می سه روش: getAnnotations، getAnnotationsById و hasAnnotations. بیایید اصلی تست ایجاد و اتمام این روش:
>>> از zope.security.testing اصلی واردات
>>> nadako = اصلی ('nadako')
>>> nadako.id
'nadako'
ما می توانیم بررسی در صورتی اصلی ما است هر حاشیه نویسی. البته، آن را در حال حاضر هیچ ندارد:
>>> util.hasAnnotations (nadako)
غلط
ما می توانیم IAnnotations اعتراض با استفاده از شی اصلی خود:
>>> util.getAnnotations (nadako)

و یا با استفاده از شناسه های اصلی:
>>> util.getAnnotationsById (nadako.id)

بیایید IAnnotations برای اصلی ما شی و بازی با آن:
>>> annots = util.getAnnotations (nadako)
>>> از zope.interface.verify verifyObject واردات
>>> از IAnnotations zope.annotation.interfaces واردات
>>> verifyObject (IAnnotations، annots)
درست
بیایید بررسی قرارداد IAnnotation:
>>> بولی (annots)
غلط
>>> annots ['not.here']
Traceback (بیشتر تماس های اخیر آخرین):
...
KeyError: 'not.here'
>>> annots.get ('not.here') هیچ است
درست
>>> annots.get ('not.here'، 42)
42
توجه داشته باشید، که شی IAnnotations می شود در برنامه تنها زمانی که ما یک کلید برای آن تنظیم ذخیره می شود. این بهینه سازی ساده است که اجازه می دهد تا ما را به ذخیره هر گونه اطلاعات زمانی که همه ما است که به سادگی برای چک کردن حضور حاشیه نویسی نمی باشد. روش hasAnnotations پس از ذخیره سازی یک کلید در حاشیه نویسی درست خواهد بود:
>>> util.hasAnnotations (nadako)
غلط
>>> annots = 'برخی از اطلاعات' ['its.here']
>>> util.hasAnnotations (nadako)
درست
ما همچنین می توانیم کلید های موجود را پاک:
>>> دل annots ['its.here']
اما ما می توانیم کلیدی این است که (نه بیشتر) existant را حذف کنید:
>>> دل annots ['its.here']
Traceback (بیشتر تماس های اخیر آخرین):
...
KeyError: 'its.here'
آب و برق حاشیه نویسی چندگانه
تصور کنید که برنامه شما دارای یک شی سایت ریشه با رجیستری جزء آن (مدیر سایت با نام مستعار) و آن شی شی زیر سایت با رجیستری جزء خود را، و رجیستری جزء دارد رجیستری جزء ریشه را به عنوان پایه آن است.
در آن صورت، ما می خواهیم IAnnotations اعتراض به در دسترس برای بازیابی حاشیه نویسی از آب و برق در سطح بالاتر است.
بیایید ثبت نام ابزار ما در سایت ریشه و ایجاد یک زیر سایت با IPrincipalAnnotationUtility خود را:
>>> ریشه ['زمانی'] = زمانی
>>> rootsm = root.getSiteManager ()
>>> rootsm.registerUtility (زمانی، IPrincipalAnnotationUtility)
>>> از zope.site.folder پوشه واردات
>>> از zope.site.site LocalSiteManager واردات
>>> ساب = پوشه ()
>>> ریشه ['ساب'] = ساب سایت
>>> subsm = LocalSiteManager (ساب)
>>> subsm .__ bases__ = (rootsm،)
>>> subsite.setSiteManager (subsm)
>>> util2 = PrincipalAnnotationUtility ()
>>> ساب ['util2'] = util2
>>> subsm.registerUtility (util2، IPrincipalAnnotationUtility)
در حال حاضر، اجازه دهید یک کلید در IAnnotations، ارائه شده توسط ابزار ریشه ایجاد:
>>> annots = util.getAnnotations (nadako)
>>> annots ['root.number'] = 42
ابزار ساب سایت باید حاشیه نویسی با موفقیت دریافت:
>>> annots2 = util2.getAnnotations (nadako)
>>> بولی (annots2)
درست
>>> annots2 ['root.number']
42
اگر ما کلید هر دو در حاشیه نویسی سطح بالاتر و آنهایی که در سطح پایین تر، سطح پایین تر خواهد اولویت داشته باشد، اما در سطح بالاتر حذف نخواهد شد و یا لغو:
>>> annots ['another.number'] = 1
>>> annots2 ['another.number'] = 42
>>> annots ['another.number']
1
>>> annots2 ['another.number']
42
اگر ما کلید از سطح پایین تر را حذف کنید، آن را از یک ابزار سطح بالاتر حذف نمی شود:
>>> دل annots2 ['another.number']
>>> annots ['another.number']
1
>>> annots2 ['another.number']
1
IPrincipal -> آداپتور IAnnotations
البته، از ویژگی های خوب این است که ما به سادگی می تواند انطباق شی اصلی ما به IAnnotations و دریافت آن حاشیه نویسی با استفاده از روش استاندارد مستند در بسته zope.annotation.
و nbsp؛ >>> annots = IAnnotations (nadako)
و nbsp؛ >>> annots
و nbsp؛
و nbsp؛ >>> annots ['root.number']
و nbsp؛ 42
به طور پیش فرض، آداپتور IAnnotation با استفاده از ابزار سایت فعلی:
>>> IAnnotations (nadako) util.getAnnotations است (nadako)
درست
>>> از zope.site.hooks واردات setSite
>>> setSite (ساب)
>>> IAnnotations (nadako) util2.getAnnotations است (nadako)
درست
Howerver، ما می توانیم یک فایل باینری چند آداپتور به IAnnotations مشخص برخی از شی زمینه که از آن برای دریافت ابزار حاشیه نویسی استفاده کنید:
>>> از zope.component getMultiAdapter واردات
>>> annots = getMultiAdapter ((nadako، ریشه)، IAnnotations)
util.getAnnotations >>> annots است (nadako)
درست
>>> annots = getMultiAdapter ((nadako، ساب)، IAnnotations)
util2.getAnnotations >>> annots است (nadako)
درست است

چه جدید در این نسخه است:

در طبقه گنجینه را اصلاح کرد.

جدید در نسخه 3.6.1 است:

به ثابت یک شکست آزمون در تو در تو راه اندازی مدیر سایت محلی است.
وابستگی به حذف در zope.container.

مورد نیاز:

پایتون

نرم افزار های دیگر از توسعه دهنده Zope Corporation and Contributors

zope.file
zope.file

14 Apr 15

zope.security
zope.security

12 May 15

نظرات به zope.principalannotation

نظر یافت نشد
اضافه کردن نظر
روشن کردن تصاویر!