source: products/quintagroup.plonegooglesitemaps/branches/sitemap_date/quintagroup/plonegooglesitemaps/content/newsextender.py @ 3506

Last change on this file since 3506 was 3506, checked in by potar, 12 years ago

fixed pep8

  • Property svn:eol-style set to native
File size: 3.2 KB
RevLine 
[2402]1from zope.component import adapts
2from zope.interface import implements
3from archetypes.schemaextender.field import ExtensionField
4from archetypes.schemaextender.interfaces import ISchemaExtender
5
6from Products.Archetypes.public import SelectionWidget
[2420]7from Products.Archetypes.public import StringWidget
[2402]8from Products.Archetypes.public import MultiSelectionWidget
9from Products.Archetypes.public import LinesField
10from Products.Archetypes.public import StringField
11from Products.Archetypes.public import DisplayList
12
[2746]13from quintagroup.plonegooglesitemaps.interfaces import INewsSitemapProvider
14
[3152]15
[2402]16class ExtendableStringField(ExtensionField, StringField):
17    """An extendable string field."""
18
[3152]19
[2402]20class ExtendableLinesField(ExtensionField, LinesField):
21    """An extendable string field."""
22
[2420]23access_lst = ["Subscription", "Registration"]
[3506]24genres_lst = ["PressRelease", "Satire", "Blog", "OpEd", "Opinion",
[3152]25              "UserGenerated"]
[2402]26
[3152]27
[2402]28class NewsExtender(object):
[2746]29    adapts(INewsSitemapProvider)
[2402]30    implements(ISchemaExtender)
31
32    fields = [
[3506]33        ExtendableStringField(
34            "gsm_access",
[2402]35            accessor="gsm_access",
[3506]36            vocabulary=DisplayList(zip(["", ] + access_lst,
[3152]37                                   ["Open access", ] + access_lst)),
[2411]38            default="",
[2402]39            schemata="GoogleSitemap",
[3152]40            widget=SelectionWidget(
[2402]41                label="Access",
[3506]42                description="Specifies whether an article is available to "
43                    "all readers (in case of the emtpy field, or only to "
[3152]44                    "those with a free or paid membership to your site.",
[2402]45                format="radio"),
46        ),
[3506]47        ExtendableLinesField(
48            "gsm_genres",
[2402]49            accessor="gsm_genres",
50            vocabulary=DisplayList(zip(genres_lst, genres_lst)),
51            schemata="GoogleSitemap",
[2411]52            default=(),
[3152]53            widget=MultiSelectionWidget(
[2402]54                label="Genres",
[3506]55                description="Select one or more properties for an article, "
56                            "namely, whether it is a press release, "
57                            "a blog post, an opinion, an op-ed piece, "
58                            "user-generated content, or satire.",
[2402]59                format="checkbox"),
60        ),
[3506]61        ExtendableStringField(
62            "gsm_stock",
[2420]63            accessor="gsm_stock",
64            default="",
65            schemata="GoogleSitemap",
[3152]66            widget=StringWidget(
[2420]67                label="Stock Tickers",
[3506]68                description="A comma-separated list of up to 5 stock tickers "
69                    "of the companies, mutual funds, or other financial "
70                    "entities that are the main subject of the article. "
71                    "Relevant primarily for business articles. Each ticker "
72                    "must be prefixed by the name of its stock exchange, "
73                    "and must match its entry in Google Finance. "
74                    "For example, \"NASDAQ:AMAT\" (but not \"NASD:AMAT\"), "
[3152]75                    "or \"BOM:500325\" (but not \"BOM:RIL\").",
[2420]76                size=70),
77        ),
[2402]78    ]
79
80    def __init__(self, context):
81        self.context = context
82
83    def getFields(self):
84        return self.fields
Note: See TracBrowser for help on using the repository browser.