OpenBlock(Django的本地新闻)的核心模型和视图
项目描述
ebpub
Django应用,提供超本地新闻。
此软件包是OpenBlock的一部分。最初为EveryBlock.com开发。
问题可以通过问题跟踪器报告。
讨论在ebcode谷歌群组或freenode上的#openblock频道。
除另有说明外,本软件包根据GNU通用公共许可证第3版许可。
安装
请不要只是尝试easy_install或pip install ebpub。它有许多特定的依赖项,这些依赖项不能/不应通过setup.py捕获。
请参阅http://openblockproject.org/docs/install/index.html中的完整文档,其中包含pip需求文件和准备您系统的说明。
OpenBlock
OpenBlock是一个Web应用程序和RESTful服务,允许用户浏览和搜索他们的本地区域以查找“超本地新闻”——查看最近在直接地理区域内发生的事情。
有关安装说明和其他文档,请参阅http://openblockproject.org/docs/(或docs/目录中的.rst文件)。
如有帮助,您可以尝试加入ebcode组: http://groups.google.com/group/ebcode 或在irc.freenode.net的#openblock IRC频道中寻找我们。
关于项目
OpenBlock始于2009年6月Everyblock.com发布的开源代码。最初由Adrian Holovaty和Everyblock团队创建,现在作为开源(GPL)项目由OpenPlans在 http://openblockproject.org 开发。
Everyblock的初始创建和OpenBlock的持续开发得到了Knight Foundation(http://www.knightfoundation.org/)的资助。
OpenBlock 1.2.0(发布于2012年5月23日)
升级说明
像往常一样,安装所有依赖项,例如如果您正在升级源代码检查
pip install -r ebpub/requirements.txt pip install -e ebpub pip install -r ebdata/requirements.txt pip install -e ebdata pip install -r obadmin/requirements.txt pip install -e obadmin pip install -r obdemo/requirements.txt pip install -e obdemo
像往常一样,同步和迁移数据库
django-admin.py syncdb django-admin.py migrate
在本版本中,对Block模型和导入脚本进行了一些更改,这些更改结合起来可以在您重新加载块数据时提供更好的搜索结果和地理编码。要这样做
运行迁移,如上所述
关闭您的抓取器
备份数据库
使用–reset选项重新导入块(这很重要!),通过管理界面或命令行……请参阅 http://openblockproject.org/docs/install/geodata.html#streets-blocks
请务必按照文档所述重新生成街道、BlockIntersections和Intersections。
浏览您的网站……除了一些街道的名称(如“99”或“87”)现在会有一个更易识别的完整名称,例如“州道99”或“州际公路87”外,一切应该正常工作。
再次启动您的抓取器。
在此过程中,网站应保持运行,尽管在处理过程中,某些页面可能会短暂出现错误,并且高速公路的URL将更改以包含前缀。
向下不兼容性
删除了外键EmailAlert.block和SavedPlace.block;现在它们有几何形状,可以用来找到最近的块。这使得在需要时重新加载您的块数据更安全。运行迁移将处理现有的警报和已保存的位置,但如果您改变主意,则不能安全降级;请始终备份数据库!(问题编号#257)
删除了神秘的字段Schema.grab_bag、Schema.grab_bag_headline和Schema.intro。(问题编号#232)
删除了安全_id_sort_reversed模板标记;请使用循环的逆选项,例如。{% for item in itemlist|safe_id_sort reversed %}
将友好日期模板过滤器从ebpub.db.templatetags.eb移动到ebpub.db.templatetags.dateutils,这似乎是它的位置。
将recaptcha模板标记从ebpub.neighbornews.templatetags移动到ebpub.db.templatetags.recaptcha_tags。现在使用它的模板将需要执行{% load recaptcha_tags %}。
将一个不为人知的模板标记{% get_locations_for_item %}从ebpub.widgets.templatetags移动到ebpub.db.templatetags.recaptcha_tags。现在使用它的模板将需要执行{% load eb %}。
将许多模板标记函数重命名为与标记名称匹配,例如“do_filter_url()”现在是“filter_url()”。这使得API文档更容易阅读;它不会影响模板,只会影响直接导入这些函数的代码 - 而且可能没有这样的代码。
在Schema过滤器页面上添加了“在地图上查看所选项目”链接和复选框,以允许在“大地图”上查看明确选择的项。
更改了schema_filter视图使用的URL,因此某些书签可能会损坏。(问题编号# 266)
删除了EB_MEDIA_ROOT和EB_MEDIA_URL设置;现在使用django的正常MEDIA_ROOT和MEDIA_URL。
删除了< span class="docutils literal">ImproperCity异常,该异常仅用于防止在无法称为“城市”的地方(如县的非合并部分)使用块。
删除了未使用的 NewsItem.block 字段,是 #93 工作项的一部分。
删除了 ebdata/retrieval/scrapers/new_newsitem_list_detail.py,该文件在任何地方都没有使用。
删除了 ebpub/streets/blockimport/tiger/import_blocks2010.py。现在,2010 年人口普查文件由主 import_blocks.py 脚本支持。
从 Widgets 上下文中删除了 item.intersecting;它从未得到适当的文档记录。相反,请使用新的 get_locations_for_item 模板标记。
由于现在我们到处都在使用 openblockrichmap.js,因此已删除旧的地图 JavaScript。
1.2 版本的新功能
现在您可以安全地重新导入区块数据。实际上,这强烈推荐,由于对 #264 和 #278 的修复,您将获得更好的地理编码结果。使用“--reset”选项进行“import_blocks_tiger”。
添加了 ebpub.utils.geodjango:interpolate() 函数,该函数找到在弦上的点,该点从第一个点给出的距离(或分数)处。由于否则将需要数据库调用,因此添加了对 Shapely 的依赖。
向 Streets 模型添加了“prefix”,用于美国人口普查 TIGER 数据中的“State Hwy”等事物;如果没有它,我们会遇到地理编码失败、UI 中的混淆/模糊的街道名称等问题。关闭 #264。
在管理 UI 中的位置导入现在在后台运行。
管理 UI 现在提供链接以查看实时站点上的各种事物(新闻条目、位置、区块、街道、位置类型)。
NewsItem 现在允许保存空 description;某些事物可能只有标题可用。
由于 olwidget 升级,支持多种类型的 Yahoo 地图。
ebpub.geocoder.base.full_geocode() 现在有一个 convert_to_block 参数,从 ebdata.retrieval 中提取出来。如果为 True,则尝试通过四舍五入到最近的区块来消除街道上的坏区块的歧义,例如将“299 Wabash St”转换为“Wabash St. 的 200 块”。在例如人口普查数据不完全符合现实的情况下,这可能有助于地理编码。
模式现在有一个 edit_window 字段,表示用户在创建内容后允许编辑其内容的时间(以小时为单位)。由 neighbornews 表单使用。
REST API:允许通过多种类型(模式)进行搜索。
添加了从电子表格中导入新闻条目的管理 UI(目前仅处理 CSV 和旧式 Excel 表格;不支持 .xslx)(工作项 #126)
在 ebdata/scrapers/general/spreadsheet/retrieval.py 中添加了一个通用的电子表格抓取器(目前仅处理 CSV 和旧式 Excel 表格;不支持 .xslx)(工作项 #274)
ebdata.scrapers.general.georss 地址提取回退现在查找所有看起来像文本的标签。
搜索表单现在也搜索地点。
Neighbornews 模式现在有可绘制 categories。
通过创建名为 db/schema_filter/<schema>.html 的模板,可以按模式覆盖 schema_filter 视图的模板。
Nieghbornews 模式现在有 schema_filter 视图的特定模板。
在 ebpub.db.Lookup 模型上添加了 featured 标志,允许管理员将一些 Lookup 值指定为“特殊”,用于例如导航。(#268)
添加了一个 get_featured_lookups_by_schema 模板标记,将特定模式的“特殊”Lookup 值列表放入上下文中。(#268)
添加了一个 Lookup.objects.get_featured_lookup_for_item(newsitem, attribute_key) 方法,用于查找新闻项对于给定属性具有哪些“特色”Lookup。
添加了一个 lookup_values_for_attribute 模板标记,将 db.attribute 字段的所有值作为 JSON 列表输出。
将 schema_filter 设置为模式的默认视图,工作项 #272
添加了允许用户将新闻条目标记为垃圾邮件或不适当的管理应用 ebpub.moderation,以及相应的管理 UI;有关更多信息,请参阅 moderation。
为每个模式添加了 Schema.allow_flagging 布尔值以切换审核标记。默认情况下,在 ebpub.neighbornews 模式下允许。
现在支持在新闻条目中使用用户上传的图片,并已启用 ebpub.neighbornews 用户贡献的内容模式。
添加了新的 userlinks.html 模板,以便您可以覆盖页面右上角的链接。
添加了 get_locations_for_item 模板标签,更多信息请见 ../main/widgets。
现在与 Postgresql 9.1 兼容,工单 #262
多亏了 Frank Hebbert,地图控件更美观了,工单 #225
添加了高级钩子,用于根据任意请求数据过滤模式;通过分配 settings.SCHEMA_MANAGER_HOOK = 'some_module:some_function' 实现此功能,其中 some_module.some_function 接受参数 (request, manager) 并返回一个 models.Manager 实例,其查询集将返回允许的模式。
将 Vary 标头添加到 REST API 响应中,以提高正确的 HTTP 缓存能力。
在“neighbornews”添加/编辑表单上自动完成类别。
在用户贡献的(“neighbornews”)添加/编辑表单上可选 ReCaptcha。
用户贡献的内容(“neighbornews”)现在有编辑和删除表单。
大多数日期字段和日期时间字段现在有合理的默认值,但仍可覆盖。
注销现在将您重定向到您正在查看的页面。
在 Profile 模型中添加了“properties” JSON 字段,以提供更灵活的每个用户元数据。
用户管理 UI 现在显示 Profiles 和 API 密钥。
“粘性小部件”即小部件中的“固定”新闻条目:您可以使用管理 UI 使某些新闻条目永久可见或在您设置的过期日期之前可见。
settings.NEIGHBORNEWS_USE_CAPTCHA 现在可以是一个指向函数的字符串路径。
添加了新的 NewsItem.objects.by_request() 方法,用于基于例如用户权限进行过滤。
添加了新的 get_schema_manager(request) 方法,用于基于当前请求进行过滤,同时还有一个可扩展的钩子。
至少将地理编码器缓存结果放入管理界面,以便您可以选择手动删除。参考 #163
管理界面选项可保存模式副本作为新模式。
修复了错误
管理员用户不再有文件上传大小的限制。
处理导入不同于 4326 的投影的地点。感谢 Karen Tracey。参考 #214。
我们现在使用来自美国人口普查 TIGER 数据的街区的主要街道名称,而不是我们看到的最后一个名称,这可能是别名。问题 #278
位置导入(包括命令行和管理界面)现在在重新导入相同的位置时不再崩溃。
将 RSS 源 URL 修复为使用 settings.EB_DOMAIN 而不是站点框架获取根 URL,以与 OpenBlock 的其余部分保持一致。
在输入时正确规范化街道名称(工单 #166)
parsing.normalize() 和 text.slugify() 现在在接收非字符串输入时不再崩溃。
显示在 schema_filter 视图上但不在其地图上的 allow_charting=False 的模式现在也会在地图上显示。修复了 schema_filter_geojson,因此它们现在也会在地图上显示。
修复了大地图页面上根据位置和日期过滤的问题。
修复 #281,大地图页面上显示错误模式。
db.Location 和 streets.PlaceType 的地图图标 URL 现在可以相对于 STATIC_URL 是相对路径。
修复 #282,位置详细信息页面上缺少条目。
修复了当属性引用一个不存在的 Lookup 时出现的 KeyError。
修复了在 FilterChain.add(key, lookup) 上出现错误的问题,当 key 不是 SchemaField 时。
现在应该可以在 URL 前缀上运行 OpenBlock;已删除所有硬编码的 URL。工单 #90。
修复“保存地点”按钮上缺失的 AJAX 超时,感谢 Tim Shedor。工单 #269
修复 NewsItem.objects.by_attribute() 中与多对多查找相关的错误:寻找 [3,47] 时,找到以 3 开头或以 47 结尾的任何数字。
使 manage.sh 脚本可执行。
修复了当我们有 Block 实例但其 block range 不匹配 block range 正则表达式时的罕见错误。已知示例:密苏里州哥伦比亚的 1600-7-1600-9 Hanover Blvd.
允许在通过 Lookups 过滤时选择多个值。工单 # 267。
使用查询参数而不是奇怪的 URI 进行 schema_filter 视图,工单 # 266。
从 schema_filter 页面上移除虚假的面包屑;工单 #270
按 Block 过滤 NewsItems 不再导致 500 错误。
block_import_tiger 现在可以在同一文件上安全地重新运行,它不会再创建重复的 blocks。
修复了将抓取器记录到控制台的双重记录。
/streets/ 列表在您没有设置 DEFAULT_LOCTYPE_SLUG 时不会崩溃。
当 request.user 是 LazyUser 实例时,解决获取配置文件的方法。
去除了更多硬编码的 URL。
当使用过旧的 python 版本时,我们的 setup.py 脚本现在会提供更详细的信息,而不是因为 with 语句导致的 SyntaxError。
自定义登录视图在访问管理站点时现在可以正常工作,并且与 django.contrib.auth 兼容(使用相同的 cookies)。工单 #174
注销表单由于模板名称错误而损坏。已修复。
修复了用户不存在时的 500 错误。
如果没有匹配的新闻条目,不会在构造 richmaps URL 时引发错误。
在“选择一个 block”页面上按街道分组 blocks,工单 # 263
在名为“Wilson Park”等街道上存储后缀;修复了一些地理编码失败。
修复了 newsitem.geojson 上的 500 错误,工单 #38
文档
太多不能一一列举,但这里有一些
所有(?) ebpub、ebdata、obadmin、obdemo 包的 Python API 文档。工单 #159。
关于如何通过抓取器或管理界面导入电子表格的更好文档。
阐明电子邮件警报的行为。
关于“核心” NewsItem 字段更好的文档。
记录 ebpub.db.bin 脚本。工单 #96。
关于 NewsItems 的评论和标记的文档。工单 #252
关于模板覆盖的更好文档,请参阅 custom-look-feel。
记录 ebpub.streets.Places,请参阅 places。工单 #253
为 ebpub.neighbornews 提供基本文档,请参阅 user_content。工单 #211
记录如何获取 2010 年人口普查文件而不是 2009 年的。
添加了 settings_default.py 中所有设置的文档。
关于 Schemas、SchemaFields、Attributes 以及它们之间关系的更好文档。
修复了示例 crontab,感谢 Tim Shedor
其他
将 georss 抓取器的点解析代码提取到 ebdata.retrieval.utils 中的 get_point() 函数。
通用 rss 抓取器现在是 obdemo.scrapers.add_news 的基础,它做了同样的事情。
通用 rss 抓取器现在是 ListDetailScraper 和 RssListDetailScraper 的子类。工单 #242
升级 jquery-ui 到 1.8.17。
升级 jquery 到 1.7.1。
将 NewsItemListDetailScraper 的一些功能移动到 BaseScraper 中,使其更广泛可用。
弃用 log_exception(),因为日志模块实际上已经做了这件事
将 full_geocode() 移动到 ebpub.geocoder.base;它在一个晦涩的地方
默认情况下,每个用户一个 API 密钥。3 有点荒谬。
项目详情
ebpub-1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 222d55af33cc7130dce63ee0e85c36b7c8aa1890cad5e4e6cb38c5d44060e8ea |
|
MD5 | 198927493b5db807fb4ac092f6b411eb |
|
BLAKE2b-256 | 7b4aea353641a76eb7ac39d6898582bbf8177e837ce84ff2ca0ec75e5ee1235c |