跳转到主要内容

Django的GitHub风格贡献图

项目描述

GitHub Contributions Django

PyPI version

为Django创建GitHub贡献图!

img/events.png img/events_blue.png img/events.png

此存储库提供可用于生成GitHub贡献图的Django应用程序。在example文件夹中提供了一个示例应用程序,您可以在此与之交互。

快速入门

安装contributions django

pip install contributions-django

将其添加到您的INSTALLED_APPS

    INSTALLED_APPS = (
        ...
        'contributions_django',
        ...
    )

要在视图中生成图形,导入generate_contributors_graph。给函数提供一个日期列表,并可选地提供一个标题来生成视图的上下文

# -*- coding: utf-8 -*-

from .models import Event

from django_contributions.graphs import generate_contributors_graph
from django.shortcuts import render

def events_view(request):
    """Generate a papers graph using all Events dates
    """
    # Get a single list of timestamps for the view
    dates = Event.objects.values_list('date', flat=True)
    context = generate_contributors_graph(dates, title="Contributions")
    return render(request, "events/index.html", context)

然后,在您的模板中,在您想要显示图形的地方包含此代码片段

{% include "contributions_django/graph.html" %}

请注意,默认情况下,模板包括bootstrap样式(CSS)和font awesome图标。如果您的模板中已包含这些,并希望删除它们,请参阅下一节,自定义。

自定义

如果您想要自定义图形中的任何颜色或文本,您可以在设置中的CONTRIBUTIONS_DJANGO部分中这样做 - 默认值如下所示。

CONTRIBUTIONS_DJANGO = {

    # Gradients (0 or weak to stronger)
    'GRADIENT0': "#eee",
    'GRADIENT1': "#d6e685",
    'GRADIENT2': "#8cc665",
    'GRADIENT3': "#44a340",
    'GRADIENT4': "#1e6823",

    # The name to appear in tooltips (e.g., 12 contributions)
    'ITEM_NAME': 'contributions',

    # Include bootstrap style for outer part of template
    # set this to false if you already have it on your page
    'INCLUDE_BOOTSTRAP': True,
    'INCLUDE_FONTAWESOME': True,

    # The icon to show next to title. Set to None to remove.
    'ICON_CLASSES': "fa fa-calendar",

    # Instead of boxes, use circles.
    'CIRCLES': True


}

形状

如果将CIRCLES设置为true,则单元格可以是圆形

img/events_circles.png

颜色

对于渐变,您可以在类似这个的颜色生成网站找到颜色板并自定义1到4的渐变。您可能不想自定义GRADIENT0,因为那是灰色(空)颜色。

绿色

默认(类似于GitHub)是一组绿色

img/events.png

蓝色

以下是蓝色的设置

# Gradients (0 or weak to stronger)
'GRADIENT0': "#eee", # this is empty gray, likely don't want to change this
'GRADIENT1': "#90E0EF",
'GRADIENT2': "#00B4D8",
'GRADIENT3': "#0077B6",
'GRADIENT4': "#03045E", # this should be the darkest

img/events_blue.png

粉色

还有粉色呢!

# Gradients (0 or weak to stronger) - below is green
'GRADIENT0': "#eee", # this is empty gray, likely don't want to change this
'GRADIENT1': "#fbc3bc",
'GRADIENT2': "#f7a399",
'GRADIENT3': "#f38375",
'GRADIENT4': "#ef6351", # this should be the darkest

img/events_pink.png

请提交一个拉取请求,添加您最喜欢的调色板的示例!

模板

如果您想自定义整个模板,可以创建默认模板的副本默认模板,并将其包含在您的视图中。

{% include "example/mygraph.html" %}

日期

重要的是,使用Django推荐不要使用无意识日期时间。实际上,如果您尝试将无意识日期时间保存到模型字段中,将会出现错误。这意味着contributions_django必须能够灵活地接受无意识或意识时间。以下是生成有意识时间戳的方法

from datetime import timedelta
from django.utils import timezone
import pytz

# get today and one year earlier
today = timezone.now()
last_year = today - timedelta(days=365)

# Create an event with a timezone aware timestamp
Event.objects.create(date=last_year, name="My Event")

以下是无意识时间戳

from datetime import datetime
timestamp = datetime.now()

无论您选择哪种方式,贡献图只关心日期,所以它使用无论是有意识还是无意识的timestamp.date()

示例应用

您可以使用位于tests下的示例(非常简单)应用进行交互式开发和测试。位于根目录下的manage.py,因此很容易更新您的安装并交互式地与测试接口进行交互。首先在根目录下创建一个虚拟环境,并安装依赖项,主要是以开发模式安装您的应用

python -m venv env
source env/bin/activate
cd example
pip install -r requirements.txt

然后进行迁移 - 这将创建一个基本的Event模型

$  python manage.py makemigrations main
Migrations for 'main':
  example/apps/main/migrations/0001_initial.py
    - Create model Event

并进行迁移

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, main, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying main.0001_initial... OK
  Applying sessions.0001_initial... OK

请注意,示例应用创建Event模型的目的仅仅是为了用日期填充一些内容。您可以使用contributions_django进行任何提供日期列表的可视化。在此阶段,如果您运行服务器并浏览到索引,您将看到空图表,因为我们还没有创建任何事件

python manage.py runserver

img/empty_events.png

接下来,让我们运行管理命令来创建大量随机事件 - 1000个介于今天和去年之间的,具体来说。这是通过示例管理命令这里完成的

$ python manage.py create_events
Creating 1000 events:

Creating Event joyous-lemon-3372 at 2020-07-12 00:56:15.675397+00:00
Creating Event misunderstood-leg-5849 at 2019-09-23 23:23:01.675397+00:00
Creating Event rainbow-leg-6361 at 2020-07-16 19:03:03.675397+00:00
Creating Event cowy-eagle-2288 at 2020-02-19 21:55:53.675397+00:00
...

您应该能够运行应用程序并看到已填充的事件!

python manage.py runserver

img/events.png

开发

我建议您遵循相同的步骤设置示例应用

python -m venv env
pip install -r requirements.txt
source env/bin/activate

然后您可以在contributions_django下更改代码,并使用示例应用测试实时结果。

非常感谢

项目详情


下载文件

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

源分发

contributions-django-0.0.11.tar.gz (15.3 kB 查看哈希值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面