跳转到主要内容

为内容提供不同访问级别的代码

项目描述

为Armstrong内部模型提供限制访问的机制。

用法

确保在您的环境中安装了armstrong.core.arm_content并将其添加到您的INSTALLED_APPS中。您还需要确保模型已通过armstrong syncdb安装到您的数据库中。有关更多信息,请参阅“限制内容”和“用户成员资格”部分。

限制内容

内容对象可以通过继承自 armstrong.core.arm_access.mixins.AccessMixin 类来限制访问权限到特定级别。这将允许关联 armstrong.core.arm_access.models.Assignment,该关联指定了在特定时间段内授予对该对象的访问权限的级别。

对于基本的付费墙场景,其中一些故事始终为高级别,而其他故事始终为公开级别,创建两个 armstrong.core.arm_access.models.Level。一个将是您的付费级别,其中 is_protected 设置为 True,而另一个将是您的公开级别,其中 is_protected 设置为 False。发布文章时,将其中一个级别分配给内容。

对于一段时间后变为公开的内容,与前述方法创建两个级别。将新内容分配给付费级别,并设置立即的 start_date,同时也要将其分配给公开级别,并设置一个 start_date,以您希望内容免费可用的日期。

要仅允许付费订阅者访问存档,您需要将内容添加到公开级别,并设置立即的 start_date 和您希望停止提供免费访问的日期的 end_date。然后您需要将内容添加到付费级别,并设置立即的 start_date 和无 end_date(默认为 datetime.datetime.max)。

用户会员资格

用户通过 armstrong.core.arm_access.models.AccessMembership 被授予访问级别。每个会员资格都有一个 start_dateend_date,它定义了会员资格有效的时段。每个会员资格还有一个 active 布尔字段,可以将其设置为 False 以使会员资格失效。可以使用 user.access_memberships.current() 查询用户的活跃会员资格。

付费墙

阻止用户访问特定内容的实际过程由 armstrong.core.arm_access.paywalls 包中的付费墙处理。目前提供的唯一付费墙是 armstrong.core.arm_access.paywalls.subscription.SubscriptionPaywall,该付费墙检查当前会员资格。SubscriptionPaywall 仅在返回 TemplateResponse 的视图中工作。

要在演示应用程序中使用 SubscriptionPaywall,您将使用以下代码

...

paywall = SubscriptionPaywall()
protected_detail = paywall.protect(object_detail)

...

url(r'^article/(?P<slug>[-\w]+)/', protected_detail, {
                    'queryset':Article.published.all().select_subclasses(),
                    'template_name':'article.html',
                    'slug_field':'slug',
                },
        name='article_detail'),

任何用户访问受保护的文章,但没有相应的访问级别会员资格时,都会引发 AccessDenied。SubscriptionPaywall 还接受一个额外的参数 permission_denied,它确定在失败时采取什么行动。该参数必须是一个接受一个参数(一个 TemplateResponse)并返回表示在访问拒绝时采取的行动的 Response 对象的可调用对象。例如

# to redirect to a new url entirely
from armstrong.core.arm_access.paywalls import redirect_on_deny
redirecting_paywall = SubscriptionPaywall(
        permission_denied=redirect_on_deny='/membership/signup')

# to render the request's context with a new template (to provide teaser
# content)
from armstrong.core.arm_access.paywalls import render_on_deny
rendering_paywall = SubscriptionPaywall(
        permission_denied=render_on_deny='/membership/upsell.html')

如果您只想为没有高级访问级别的用户渲染广告,则可以使用默认不渲染广告的模板和 render_on_deny 来使用 SubscriptionPaywall。

如果您只想允许匿名用户查看一定数量的完整文章,然后显示付费墙,则需要构建自定义的付费墙实现,但 SubscriptionPaywall 应该提供不错的模板。如果您实现它,它将是这个包中一个非常好的候选。

安装和配置

您可以使用 pip 安装 armstrong.core.arm_access 的最新版本。

pip install armstrong.core.arm_access

请确保将 armstrong.core.arm_access 添加到您的 INSTALLED_APPS。您可以根据需要添加。这是一个复制粘贴的解决方案

INSTALLED_APPS += ["armstrong.core.arm_access", ]

安装完成后,您必须运行 syncdbmigrate(如果您使用 South)。

贡献

  • 创造一些精彩的东西——改进代码,添加一些功能,随便什么(这是最难的部分)。

  • 分叉它

  • 创建一个主题分支来存放你的更改

  • 将所有提交都放到新的主题分支中

  • 提交一个拉取请求

项目状态

Armstrong是一个开源新闻平台,任何组织都可以免费使用。它是德克萨斯州论坛和Bay Citizen的合作成果,以及约翰·S·和詹姆斯·L·凯斯勒基金会提供的资助。

要关注开发,请务必加入Google Group

armstrong.core.arm_accessArmstrong项目的一部分。你很可能正在寻找这个。

许可证

版权所有2011年Bay Citizen和德克萨斯州论坛

在Apache许可证2.0版本(“许可证”)下授权;除非适用法律要求或书面同意,否则不得使用此文件,除非遵守许可证。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言,请参阅许可证。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

armstrong.core.arm_access-1.0.9.tar.gz (16.1 kB 查看散列)

上传时间

由以下组织支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastly内容分发网络GoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面