用于烧瓶项目的壁虎自定义小部件

Flask-Geckoboard的Python项目详细描述


一个由网络分析、CRM、支持、基础设施、项目管理和销售部门提供指标的实时状态板。等等,它可以连接到几乎任何数量
数据源。这个flask_u插件提供视图装饰器来帮助创建自定义小部件。_壁虎:http://www.geckoboard.com/
。_烧瓶:http://flask.pocoo.org/



只需将"烧瓶壁虎"包放在python路径上的某个地方即可。




在烧瓶配置中设置"geckoboard_api_key"。


如果不设置api密钥,任何人都可以通过访问小部件url来查看数据。





encryption
==

geckoboard encryption允许在数据发送到geckoboard的
服务器之前对数据进行加密。输入加载壁虎
时用于加密数据的密码后,数据将在浏览器中解密。


若要使用加密,请先在烧瓶配置中设置"壁虎密码"。

使用decorator参数为每个小部件启用加密::

from flask import flask
from flask壁虎import geckoboard

geckoboard=geckoboard(app)

@app.route('/user count')
@geckoboard.number(encrypted=true)
def user_count(请求):
return user.objects.count()



creating custom widgets
=====


可用的自定义widgets在geckoboard支持
部分的"geckoboard api"下进行了描述。从flask
项目的角度来看,自定义小部件只是一个视图。flask geckoboard
应用程序提供了视图装饰器,它们为不同的小部件提供了正确的响应


首先创建一个视图,使用
flask geckoboard decorator::

from date time导入日期、时间,日期时间

从烧瓶进口烧瓶
从烧瓶进口壁虎

geckoboard=壁虎(app)

@app.route('/comment count')
@geckoboard.number
def comment\u count():
午夜=date time.combine(date.today(),time.min)
返回comment.objects.filter(submit_u date_u gte=midnight).count()



您可以在decorator
定义中传递它们:

@app.route('/gecko/comment/count absolute')
@geckoboard.number(absolute='true')
def comment\u count(request):
midnight=datetime.combine(date.today(),time.min)
返回comment.objects.filter(提交日期=午夜)。count()



在geckoboard中创建自定义小部件时,请输入以下信息:


encryption
enable if the field is encrypted(请参阅上面的说明)。

url data feed
view url。在上面的示例中,这可能类似于
``http://hostname/geckoboard/comment-account/``.

``geckoboard-api-key``设置的内容,如果您设置了它的话。


widget-type
*custom*

要么是*xml*要么是*json*。如果未指定格式,则装饰器将
自动检测并输出正确的格式,如果未启用此功能,则装饰器将默认为xml(默认情况下,格式不会附加
壁虎不再是一个参数)


请求类型
要么是*获取*要么是*发布*。视图装饰器接受这两者。



次要stat*小部件。

可选的
*previous*参数是测量数量的前一个值,
可选的参数*prefix*是geckoboard小部件中使用的前缀。
如果只有一个参数,则不需要将其返回元组。
例如,要呈现显示用户和与上周的差异:


from datetime import datetime,timedelta

@geckoboard.number
def user\u count(请求):
last\u week=datetime.now()-timedelta(weeks=1)
users=user.objects
last\u week\u users=users.filter(加入日期=last\u week)
return(users.count(),上一周用户数。count())

@geckoboard.number
def users_count_带前缀(请求):
last_week=datetime.now()-timedelta(weeks=1)
users=user.objects
last_week=users.filter(加入日期=last_week)
return(users.count(),last_week_users.count(),'$')



``rag``
----


呈现一个*rag column&numbers*或*rag numbers*小部件。

修饰视图必须返回一个包含三个元组的元组*(值,
[文本])。*value*参数是以红色、琥珀色
和绿色(按顺序)显示的数字。可选的*文本*参数将
显示在仪表板中相应值的旁边。

timedelta

@geckoboard.rag
def comments(请求):
开始时间=date time.now()-timedelta(小时=24)
注释=comment.objects.filter(提交日期=开始时间)
总计数=comments.count()
已批准计数=comments.filter(
flags\u flag=commentflag.mediator\u approval.count()
deleted\u count=comment.objects.filter(
flags\u flag=commentflag.mediator\u deletion.count()
pending\u count=total\u count-approved\u count-deleted\u count
返回(
(删除计数,"删除评论"),
(挂起计数,"挂起评论"),
(批准计数,"批准评论"),




``text`
----


呈现一个*文本*小部件。

修饰视图必须返回一个元组列表*(消息,[类型])*.
消息*参数是将在小部件中显示的字符串。
类型*参数是可选的,告诉geckoboard如何注释消息。对于信息性消息,使用"text-info";对于警告,使用"text-warn";对于纯文本,使用"text-none"(默认值)。如果只有一条普通消息,您只需返回它,而不必将其包含在列表和元组中。


例如,要呈现一个小部件,显示最新的壁虎twitter
更新,使用mike verdone的'twitter library':


import twitter

@geckoboard.text
def twitter状态(请求):
twitter=twitter.api()
updates=twitter.getusertimeline('geckoboard')
return[(u.text,文本无)用于更新中的u]

…_` Twitter库:http://pypi.python.org/pypi/twitter*. 可选的*color*参数是一个字符串"`'rrggbb[tt]``
表示红色、绿色、蓝色和可选的透明度。

例如,要呈现一个小部件,显示普通用户、员工用户和超级用户的数量:

@geckoboard.pie\u chart
def用户类型(请求):
users=user.objects.filter(is_active=true)
total_count=users.count()
superuser_count=users.filter(is_superuser=true).count()
staff_count=users.filter(is_staff=true,
is_superuser=false).count()
normal_count=total_count=superuser_count-staff_count
返回[
(normal_count,"normal users","ff8800"),
(staff_count,"staff","00ff88"),
(超级用户计数,"超级用户","8800ff"),
]



``折线图`
----

呈现一个*折线图*小部件。


修饰视图必须返回一个元组*(值,x轴,y轴,
[颜色])。*values*参数是一个数据点列表。
*x轴*参数是一个标签字符串或字符串列表,将
放置在x轴上。*y轴*参数对
y轴的作用类似。如果有多个轴标签,则它们沿轴均匀放置。可选的*color*参数是一个字符串
``rrggbb[tt]``表示红色、绿色、蓝色和可选的
透明度。

timedelta

@geckoboard.line\u chart
def comment\u trend(request):
since=date.today()-timedelta(days=29)
days=dict(since+timedelta(days=d),0)
29))
注释=注释.objects.filter(submit_u date_u gte=since)
注释中的注释:
天[comment.submit_u date.date()]+=1
返回(
天.values(),
[天[i]范围(0,29,7)],
"注释",




``geck-o-meter`
————————————————————————————————————————————————————————————————————————————————————————————————————————*value*
参数表示当前值。*min*和*max*参数
分别表示最小值和最大值。它们要么是
值,要么是元组*(值,文本)*。如果使用,*text*参数将
显示在最小值或最大值旁边。

timedelta

@geckoboard.geck_o_meter
def login_count(请求):
since=datetime.now()-timedelta(hours=24)
users=user.objects.filter(is_active=true)
total_count=users.count()
logged_count=users.filter(last_u login_u gt=since).count()
返回(登录计数,0,总计数)



``漏斗`
----


呈现一个*漏斗*小部件。

修饰视图必须返回一个字典,其中至少有一个*项*
键。呈现一个漏斗,显示已验证用户的细分
与匿名用户的细分::

@geckoboard.funnel
def user_细分(请求):
all_users=user.objects
active_users=all_users.filter(is_active=true)
staff_users=所有用户.filter(is_staff=true)
super_users=all_users.filter(is_superuser=true)
返回{
"items":[
(all_users.count(),'all users'),
(active_users.count(),'active users'),
(staff_users.count(),'staff users'),
(super_users.count(),'super users'),
],
"type":"standard"(标准),"default"(默认),"reverse"(反转)更改颜色的方向。
"percentage":"show"(显示),"default"(默认),"hide"(隐藏)隐藏百分比值。
"sort"(排序):false,"default",` true"对值进行排序
降序。
}

``bullet``
——


呈现一个*bullet*小部件。

修饰视图必须返回一个字典,其中至少包含键*label*、
*轴*点*、*当前*和*比较*。要呈现壁虎自己的示例,请访问http://support.geckoboard.com/entries/274940自定义图表小部件类型定义:

@geckoboard.bullet
def geckoboard-bullet示例(请求):
return={
"label":"Revenue 2011 YTD",
"轴点":[0,200,400,600,800,1000],
"当前":500,
"比较":600,
"子标签":"千美元",
"红色":[0,400],
"琥珀色":[401,700],
"绿色":[701,1000],
"投影":[100900],
"自动缩放":false,
}

…_`壁虎API`:http://geckoboard.zendesk.com/forums/207979壁虎API



==



>版本0.2.1
----
*在Bullet Widget中选择"比较"字段。

>版本0.2.0
----
*在Bullet Widget中修复错误。
*允许Bullet Widget返回多个Bullet Widget。


0.1.0版
----
*第一个版本,与Django-Geckoboard分开。


_ django-analytic:http://pypi.python.org/pypi/django-geckoboard

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ArrayList Java中的搜索字符串   另一个web应用程序的java访问会话   另一个应用程序中的活动和服务之间的java通信   java根据Json字符串类型将Json字符串转换为对象   eclipse如何解决java中的错误异常。lang.NoSuchMethodError:'java。字符串javax。摆动JOptionPane。showInputDialog(java.lang.String)'   线程“main”java中的安卓异常。lang.NoClassDefFoundError:org/codehaus/jackson/JsonParseException   java如何在安卓 emulator上显示Mat图像?使用NDK   Java在本地读取测试源文件,但在服务器上读取失败   java dowhile循环用于计算输入数字中的数字。故障排除代码   JAva初学者在编写获取成本的方法时遇到困难   java是shell游戏。我如何让物体移动,特别是在特定的曲线上,但顺序是随机的?   java如何区分两个同名的JButton   java为什么我在Spring Boot中需要一个接口?   java将文件路径插入数据库将删除\   使用InterfaceType初始化java对象   java如何部署一个分为Angular、Spring Boot和MySQL的项目?   java如何使用Symja解决不等式?