{ "info": { "author": "utsurius", "author_email": "przemek@upsecure.pl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "

\n \n Actionable messages\n \n

\n\n

\n \n \"license\"/\n \n \n \"github\"/\n \n \n \"pypi\"/\n \n

\n\n1. [Base informations](#base-informations)\n2. [Installation](#installation)\n3. [Requirements](#requirements)\n4. [Usage](#usage)\n5. [AdaptiveCard](#adaptivecard)\n * [Elements](#adaptivecard-elements)\n * [TextBlock](#adaptivecard-textblock)\n * [Image](#adaptivecard-image)\n * [MediaSource](#adaptivecard-mediasource)\n * [Media](#adaptivecard-media)\n * [TextRun](#adaptivecard-textrun)\n * [RichTextBlock](#adaptivecard-richtextblock)\n * [Inputs](#adaptivecard-inputs)\n * [TextInput](#adaptivecard-textinput)\n * [NumberInput](#adaptivecard-numberinput)\n * [DateInput](#adaptivecard-dateinput)\n * [TimeInput](#adaptivecard-timeinput)\n * [ToggleInput](#adaptivecard-toggleinput)\n * [InputChoice](#adaptivecard-inputchoice)\n * [ChoiceSetInput](#adaptivecard-choicesetinput)\n * [Actions](#adaptivecard-actions)\n * [OpenUrl](#adaptivecard-openurl)\n * [Submit](#adaptivecard-submit)\n * [ShowCard](#adaptivecard-showcard)\n * [TargetElement](#adaptivecard-targetelement)\n * [ToggleVisibility](#adaptivecard-togglevisibility)\n * [Containers](#adaptivecard-containers)\n * [ActionSet](#adaptivecard-actionset)\n * [Container](#adaptivecard-container)\n * [Column](#adaptivecard-column)\n * [ColumnSet](#adaptivecard-columnset)\n * [Fact](#adaptivecard-fact)\n * [FactSet](#adaptivecard-factset)\n * [ImageSet](#adaptivecard-imageset)\n * [Types](#adaptivecard-types)\n * [BackgroundImage](#adaptivecard-backgroundimage)\n * [Cards](#adaptivecard-cards)\n * [AdaptiveCard](#adaptivecard-adaptivecard)\n6. [MessageCard](#messagecard)\n * [Elements](#messagecard-elements)\n * [Header](#messagecard-header)\n * [Fact](#messagecard-fact)\n * [HeroImage](#messagecard-heroimage)\n * [InputChoice](#messagecard-inputchoice)\n * [ActionTarget](#messagecard-actiontarget)\n * [Inputs](#messagecard-inputs)\n * [TextInput](#messagecard-textinput)\n * [DateInput](#messagecard-dateinput)\n * [MultiChoiceInput](#messagecard-multichoiceinput)\n * [Actions](#messagecard-actions)\n * [OpenUri](#messagecard-openuri)\n * [HttpPOST](#messagecard-httppost)\n * [InvokeAddInCommand](#messagecard-invokeaddincommand)\n * [ActionCard](#messagecard-actioncard)\n * [Sections](#messagecard-sections)\n * [Section](#messagecard-section)\n * [Cards](#messagecard-cards)\n * [MessageCard](#messagecard-messagecard)\n\n\n

Base informations

\n\n[Playground V2](https://messagecardplayground.azurewebsites.net/)\n\n[Send an actionable message via email in Office 365](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email)\n\n[Outlook version requirements for actionable messages](https://docs.microsoft.com/en-us/outlook/actionable-messages/#outlook-version-requirements-for-actionable-messages)\n\n\n

Installation

\n\n`pip install git+https://github.com/utsurius/django-actionable-messages`\n\n`pip install django-actionable-messages`\n\nAdd \"django_actionable_messages\" to INSTALLED_APPS:\n\n```python\nINSTALLED_APPS = [\n ...\n \"django_actionable_messages\",\n]\n```\n\nSETTINGS\n\n```python\nACTIONABLE_MESSAGES = {\n \"JSON_ENCODER\": None\n}\n```\n\n\"JSON_ENCODER\" is a doted path to custom json encoder.\n\n\n

Requirements

\n\n|Name|Version|\n|---|---|\n|python|3.5+|\n|django|1.11.0+|\n\n\n

Usage

\n\n**`examples/message_card/github.py`**\n\n```python\nfrom django_actionable_messages.message_card.actions import OpenUri, HttpPOST, ActionCard\nfrom django_actionable_messages.message_card.cards import MessageCard\nfrom django_actionable_messages.message_card.elements import Fact, ActionTarget\nfrom django_actionable_messages.message_card.inputs import TextInput\nfrom django_actionable_messages.message_card.sections import Section\nfrom django_actionable_messages.message_card.utils import OSType\n\n\nissue_opened = MessageCard(title=\"Issue opened: \\\"Push notifications not working\\\"\", summary=\"Issue 176715375\",\n theme_color=\"0078D7\")\nissue_opened.add_section(\n Section(\n activity_title=\"Miguel Garcie\",\n activity_subtitle=\"9/13/2016, 11:46am\",\n activity_image=\"https://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg\",\n text=\"There is a problem with Push notifications, they don't seem to be picked up by the connector.\",\n facts=[\n Fact(\"Repository:\", \"mgarcia\\\\test\"),\n Fact(\"Issue #:\", \"176715375\")\n ]\n )\n)\nissue_opened.add_actions([\n ActionCard(\n name=\"Add a comment\",\n inputs=[\n TextInput(input_id=\"comment\", title=\"Enter a comment\", is_multiline=True)\n ],\n actions=[\n HttpPOST(\"OK\", target=\"http://...\")\n ]\n ),\n HttpPOST(\"Close\", target=\"http://...\"),\n OpenUri(name=\"View in Github\", targets=[\n ActionTarget(OSType.DEFAULT, \"http://...\")\n ])\n])\n```\n\n**`examples/adaptive_card/calendar_reminder.py`**\n\n```python\nfrom django_actionable_messages.adaptive_card.actions import Submit\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\nfrom django_actionable_messages.adaptive_card.elements import TextBlock\nfrom django_actionable_messages.adaptive_card.inputs import InputChoice, ChoiceSetInput\nfrom django_actionable_messages.adaptive_card.utils import SCHEMA, FontSize, FontWeight, SpacingStyle, ChoiceInputStyle\n\n\ncalendar_reminder = AdaptiveCard(version=\"1.0\", schema=SCHEMA)\ncalendar_reminder.set_speak(\"Your meeting about \\\"Adaptive Card design session\\\" is starting at 12:30pm\"\n \"Do you want to snooze or do you want to send a late notification to the attendees?\")\ncalendar_reminder.add_element(TextBlock(\"Adaptive Card design session\", size=FontSize.LARGE, weight=FontWeight.BOLDER))\ncalendar_reminder.add_elements([\n TextBlock(\"Conf Room 112/3377 (10)\", is_subtle=True),\n TextBlock(\"12:30 PM - 1:30 PM\", is_subtle=True, spacing=SpacingStyle.NONE),\n TextBlock(\"Snooze for\")\n])\ncalendar_reminder.add_element(ChoiceSetInput(\n item_id=\"snooze\", style=ChoiceInputStyle.COMPACT, value=\"5\", choices=[\n InputChoice(\"5 minutes\", \"5\"),\n InputChoice(\"15 minutes\", \"15\"),\n InputChoice(\"30 minutes\", \"30\")\n ]\n))\ncalendar_reminder.add_actions([\n Submit(title=\"Snooze\", data={\n \"x\": \"snooze\"\n }),\n Submit(title=\"I'll be late\", data={\n \"x\": \"late\"\n })\n])\n```\n\nFor more view **`examples`** folder\n\nTo get dictionary, json or html payload from card use:\n\n|Function|Type|\n|---|---|\n|.payload|*dict*|\n|.json_payload|json string|\n|.html_payload|html string - can be used to send card via email ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email))|\n\n\nProblem: **'... is not JSON serializable'** - probably invalid argument type was used (for example: custom object or `lazy` object instead of *str*).\n\nSolution: [Better Python Object Serialization](https://hynek.me/articles/serialization/)\n\nYou can set JSON_ENCODER (globally) in SETTINGS(ACTIONABLE_MESSAGES) or set it by card(json_encoder):\n\n```python\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\n\n\nclass MyAdaptiveCard(AdaptiveCard):\n json_encoder = \"path.to.my.encoder\"\n```\nor\n```python\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\n\n\nclass MyAdaptiveCard(AdaptiveCard):\n json_encoder = MyJSONEncoder\n```\n\n\nSend MessageCard to msteams using webhooks and `requests` library:\n```python\nimport requests\n\n\nrequests.post(\n webhook_url,\n json=card.payload,\n headers={\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n)\n```\n\nTo get/add `webhook_url` see here: [Get the Microsoft Teams webhook URL](https://learning.getpostman.com/docs/postman_pro/integrations/microsoft_teams/#get-the-microsoft-teams-webhook-url), [Create and add an outgoing webhook in Teams](https://support.office.com/en-ie/article/create-and-add-an-outgoing-webhook-in-teams-8e1a1648-982f-4511-b342-6d8492437207)\n\n

AdaptiveCard

\n\nSupported versions: **1.0**, **1.1**, **1.2**\n\n[Schema Explorer](https://adaptivecards.io/explorer/)\n\n\n

Elements

\n\n**src**: `from django_actionable_messages.adaptive_card.elements import ...`\n\n

**TextBlock** ([docs](https://adaptivecards.io/explorer/TextBlock.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**text**|set_text()|text|*str*|\n|color|set_color()|color|Color1|\n|font_type|set_font_type()|fontType|FontType1|\n|horizontal_alignment|set_horizontal_alignment()|horizontalAlignment|HorizontalAlignment1|\n|is_subtle|set_is_subtle()|isSubtle|*bool*|\n|max_lines|set_max_lines()|maxLines|*int*|\n|size|set_size()|size|FontSize1|\n|weight|set_weight()|weight|FontWeight1|\n|wrap|set_wrap()|wrap|*bool*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**Image** ([docs](https://adaptivecards.io/explorer/Image.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**url**|set_url()|url|*str*|\n|alternate_text|set_alternate_text()|altText|*str*|\n|background_color|set_background_color()|backgroundColor|*str*|\n|height|set_height()|height|str or BlockElementHeight1|\n|horizontal_alignment|set_horizontal_alignment()|horizontalAlignment|HorizontalAlignment1|\n|select_action|set_select_action()|selectAction|see docs|\n|size|set_size()|size|ImageSize1|\n|style|set_style()|style|ImageStyle1|\n|width|set_width()|width|*str*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**MediaSource** ([docs](https://adaptivecards.io/explorer/MediaSource.html))

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**mime_type**|mimeType|*str*|\n|**url**|url|*str*|\n\n

**Media** ([docs](https://adaptivecards.io/explorer/Media.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**sources**|add_sources()|sources|*list* of MediaSource(s)1|\n|poster|set_poster()|poster|*str*|\n|alternate_text|set_alternate_text()|altText|*str*|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_source()|sources|MediaSource1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**TextRun** ([docs](https://adaptivecards.io/explorer/TextRun.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**text**|set_text()|text|*str*|\n|color|set_color()|color|Color1|\n|font_type|set_font_type()|fontType|FontType1|\n|highlight|set_highlight()|highlight|*bool*|\n|is_subtle|set_is_subtle()|isSubtle|*bool*|\n|italic|set_italic()|italic|*bool*|\n|select_action|set_select_action()|selectAction|see docs|\n|size|set_size()|fontSize|FontSize1|\n|strike_through|set_strike_through()|strikethrough|*bool*|\n|weight|set_weight()|fontWeight|FontWeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

**RichTextBlock** ([docs](https://adaptivecards.io/explorer/RichTextBlock.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**inlines**|set_inlines()|inlines|*str*, TextRun1|\n|horizontal_alignment|set_horizontal_alignment()|horizontalAlignment|HorizontalAlignment1|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

Inputs

\n\n**src**: `from django_actionable_messages.adaptive_card.inputs import ...`\n\n

**TextInput** ([docs](https://adaptivecards.io/explorer/Input.Text.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|is_multiline|set_is_multiline()|isMultiline|*bool*|\n|max_length|set_max_length()|maxLength|*int*|\n|placeholder|set_placeholder()|placeholder|*str*|\n|style|set_style()|style|TextInputStyle1|\n|inline_action|set_inline_action()|inlineAction|see docs|\n|value|set_value()|value|*str*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**NumberInput** ([docs](https://adaptivecards.io/explorer/Input.Number.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|max_value|set_max_value()|maxValue|*int*|\n|min_value|set_min_value()|minValue|*int*|\n|placeholder|set_placeholder()|placeholder|*str*|\n|value|set_value()|value|*int*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**DateInput** ([docs](https://adaptivecards.io/explorer/Input.Date.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|max_value|set_max_value()|maxValue|*str*|\n|min_value|set_min_value()|minValue|*str*|\n|placeholder|set_placeholder()|placeholder|*str*|\n|value|set_value()|value|*str*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**TimeInput** ([docs](https://adaptivecards.io/explorer/Input.Time.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|max_value|set_max_value()|maxValue|*str*|\n|min_value|set_min_value()|minValue|*str*|\n|placeholder|set_placeholder()|placeholder|*str*|\n|value|set_value()|value|*str*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**ToggleInput** ([docs](https://adaptivecards.io/explorer/Input.Toggle.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**title**|set_title()|title|*str*|\n|value|set_value()|value|*str*|\n|value_off|set_value_off()|valueOff|*str*|\n|value_on|set_value_on()|valueOn|*str*|\n|wrap|set_wrap()|wrap|*bool*|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**InputChoice** ([docs](https://adaptivecards.io/explorer/Input.Choice.html))

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**title**|title|*str*|\n|**value**|value|*str*, *int*|\n\n

**ChoiceSetInput** ([docs](https://adaptivecards.io/explorer/Input.ChoiceSet.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**choices**|set_choices()|choices|*list* of InputChoice(s)1|\n|is_multi_select|set_is_multi_select()|isMultiSelect|*bool*|\n|style|set_style()|style|ChoiceInputStyle2|\n|value|set_value()|value|*str*|\n|wrap|set_wrap()|wrap|*bool*|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.inputs import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n\n

Actions

\n\n**src**: `from django_actionable_messages.adaptive_card.actions import ...`\n\n

**OpenUrl** ([docs](https://adaptivecards.io/explorer/Action.OpenUrl.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**url**|set_url()|url|*str*|\n|title|set_title()|title|*str*|\n|icon_url|set_icon_url()|iconUrl|*str*|\n|style|set_style()|style|ActionStyle2|\n|item_id|set_id()|id|*str*|\n|fallback|set_fallback()|fallback|FallbackOption2 or action1(except TargetElement1)|\n|requires|set_requires()|requires|*dict*|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

**Submit** ([docs](https://adaptivecards.io/explorer/Action.Submit.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|data|set_data()|data|*str*, *dict*|\n|title|set_title()|title|*str*|\n|icon_url|set_icon_url()|iconUrl|*str*|\n|style|set_style()|style|ActionStyle2|\n|item_id|set_id()|id|*str*|\n|fallback|set_fallback()|fallback|FallbackOption2 or action1(except TargetElement1)|\n|requires|set_requires()|requires|*dict*|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

**ShowCard** ([docs](https://adaptivecards.io/explorer/Action.ShowCard.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|card|set_card()|card|AdaptiveCard2|\n|title|set_title()|title|*str*|\n|icon_url|set_icon_url()|iconUrl|*str*|\n|style|set_style()|style|ActionStyle3|\n|item_id|set_id()|id|*str*|\n|fallback|set_fallback()|fallback|FallbackOption3 or action1(except TargetElement1)|\n|requires|set_requires()|requires|*dict*|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.cards import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

**TargetElement** ([docs](https://adaptivecards.io/explorer/TargetElement.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**element_id**|set_element_id()|elementId|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n\n

**ToggleVisibility** ([docs](https://adaptivecards.io/explorer/Action.ToggleVisibility.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|target_elements|set_target_elements()|targetElements|*list* of TargetElement1/str (can be mixed)|\n|title|set_title()|title|*str*|\n|icon_url|set_icon_url()|iconUrl|*str*|\n|style|set_style()|style|ActionStyle2|\n|item_id|set_id()|id|*str*|\n|fallback|set_fallback()|fallback|FallbackOption1 or action1(except TargetElement1)|\n|requires|set_requires()|requires|*dict*|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\n

Containers

\n\n**src**: `from django_actionable_messages.adaptive_card.containers import ...`\n\n

**ActionSet** ([docs](https://adaptivecards.io/explorer/ActionSet.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|actions|add_actions()|actions|*list* of actions(see docs)|\n|fallback|set_fallback()|fallback|FallbackOption1 or card element2|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle1|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight1|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_action()|actions|see docs|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**Container** ([docs](https://adaptivecards.io/explorer/Container.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|items|add_items()|items|see docs|\n|select_action|set_select_action()|selectAction|any action(see docs)|\n|style|set_style()|style|Style2|\n|vertical_content_alignment|set_vertical_content_alignment()|verticalContentAlignment|VerticalAlignment2|\n|bleed|set_bleed()|bleed|*bool*|\n|background_image|set_background_image()|backgroundImage|BackgroundImage1|\n|min_height|set_min_height()|minHeight|*str*|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_item()|items|see docs|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**Column** ([docs](https://adaptivecards.io/explorer/Column.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|items|add_items()|items|*list* (see docs)|\n|background_image|set_background_image()|backgroundImage|*str*, BackgroundImage2|\n|bleed|set_bleed()|bleed|*bool*|\n|fallback|set_fallback()|fallback|FallbackOption3 or Column1|\n|min_height|set_min_height()|minHeight|*str*|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle3|\n|select_action|set_select_action()|selectAction|see docs|\n|style|set_style()|style|Style3|\n|vertical_content_alignment|set_vertical_content_alignment()|verticalContentAlignment|VerticalAlignment3|\n|width|set_width()|width|*str*, *int*, Width3|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

**ColumnSet** ([docs](https://adaptivecards.io/explorer/ColumnSet.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**columns**|add_columns()|columns|*list* of Column(s)1|\n|select_action|set_select_action()|selectAction|see docs|\n|style|set_style()|style|Style2|\n|bleed|set_bleed()|bleed|*bool*|\n|min_height|set_min_height()|minHeight|*str*|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_column()|columns|Column1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**Fact** ([docs](https://adaptivecards.io/explorer/Fact.html))

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**title**|title|*str*|\n|**value**|value|*str*|\n\n

**FactSet** ([docs](https://adaptivecards.io/explorer/FactSet.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|facts|add_facts()|facts|*list* of Fact(s)1|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_fact()|facts|Fact1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n

**ImageSet** ([docs](https://adaptivecards.io/explorer/ImageSet.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|images|add_images()|images|*list* of Image(s)1|\n|image_size|set_image_size()|imageSize|ImageSize2|\n|fallback|set_fallback()|fallback|FallbackOption2 or card element3|\n|separator|set_separator()|separator|*bool*|\n|spacing|set_spacing()|spacing|SpacingStyle2|\n|item_id|set_id()|id|*str*|\n|is_visible|set_is_visible()|isVisible|*bool*|\n|requires|set_requires()|requires|*dict*|\n|height|set_height()|height|BlockElementHeight2|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_image()|images|Image1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\]\n\n|Type|All except|Import|\n|---|---|---|\n|`containers`|Fact, Column|`from django_actionable_messages.adaptive_cards.containers import ...`|\n|`elements`|MediaSource, TextRun|`from django_actionable_messages.adaptive_cards.elements import ...`|\n|`inputs`|InputChoice|`from django_actionable_messages.adaptive_cards.inputs import ...`|\n\n\n

Types

\n\n**src**: `from django_actionable_messages.adaptive_card.types import ...`\n\n

**BackgroundImage** ([docs](https://adaptivecards.io/explorer/BackgroundImage.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**url**|set_url()|url|*str*|\n|fill_mode|set_fill_mode()|fillMode|FillMode1|\n|horizontal_alignment|set_horizontal_alignment()|horizontalAlignment|HorizontalAlignment1|\n|vertical_alignment|set_vertical_alignment()|verticalAlignment|VerticalAlignment1|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n

Cards

\n\n**src**: `from django_actionable_messages.adaptive_card.cards import ...`\n\n

**AdaptiveCard** ([docs](https://adaptivecards.io/explorer/AdaptiveCard.html))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|version|set_version()|version|*str*, SCHEMA1|\n|schema|set_schema()|$schema|*str*|\n|inputs|add_elements()|inputs|*list* of inputs(see docs)|\n|actions|add_actions()|actions|*list* of actions(see docs)|\n|select_action|set_select_action()|selectAction|see docs|\n|style|set_style()|style|Style1|\n|hide_original_body|set_hide_original_body()|hideOriginalBody|*bool*|\n|fallback_text|set_fallback_text()|fallbackText|*str*|\n|background_image|set_background_image()|backgroundImage|*str*, Image2|\n|min_height|set_min_height()|minHeight|*str*|\n|speak|set_speak()|speak|*str*|\n|lang|set_lang()|lang|*str*|\n|vertical_content_alignment|set_vertical_content_alignment()|verticalContentAlignment|VerticalAlignment1|\n\nAdaptiveCard also have other functions:\n\n|Name|Property|Type|\n|---|---|---|\n|add_element()|body|any input(see docs)|\n|add_action()|actions|any action(see docs)|\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n

MessageCard

\n\n[Legacy actionable message card reference](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference)\n\n

Elements

\n\n**src**: `from django_actionable_messages.message_card.elements import ...`\n\n

**Header** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#header))

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**name**|name|*str*|\n|value|value|*str*, *int*|\n\n

**Fact**

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**name**|name|*str*|\n|**value**|value|*str*|\n\n

**HeroImage** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#image-object))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**url**|set_url()|image|*str*|\n|title|set_title()|title|*str*|\n\n

**InputChoice**

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**name**|display|*str*|\n|**value**|value|*str*, *int*|\n\n

**ActionTarget**

\n\n|Argument name|Property|Type|\n|---|---|---|\n|**os_type**|os|OSType1|\n|url|uri|*str*|\n\n\\[1\\] `from django_actionable_messages.message_cards.utils import ...`\n\n

Inputs

\n\n**src**: `from django_actionable_messages.message_card.inputs import ...`\n\n

**TextInput** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#textinput))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|max_length|set_max_length()|maxLength|*int*|\n|is_multiline|set_is_multiline()|isMultiline|*bool*|\n|input_id|set_id()|id|*str*|\n|title|set_title()|title|*str*|\n|value|set_value()|value|*str*|\n|is_required|set_is_required()|isRequired|*bool*|\n\n

**DateInput** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#dateinput))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|include_time|set_include_time()|maxLength|*bool*|\n|input_id|set_id()|id|*str*|\n|title|set_title()|title|*str*|\n|value|set_value()|value|*str*|\n|is_required|set_is_required()|isRequired|*bool*|\n\n

**MultiChoiceInput** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#multichoiceinput))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**choices**|add_choices()|choices|*list* of InputChoice(s)1|\n|is_multi_select|set_is_multi_select()|isMultiSelect|*bool*|\n|style|set_style()|style|ChoiceStyle2|\n|input_id|set_id()|id|*str*|\n|title|set_title()|title|*str*|\n|value|set_value()|value|*str*|\n|is_required|set_is_required()|isRequired|*bool*|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_choice()|choices|InputChoice1|\n\n\\[1\\] `from django_actionable_messages.message_cards.inputs import ...`\n\n\\[2\\] `from django_actionable_messages.message_cards.utils import ...`\n\n

Actions

\n\n**src**: `from django_actionable_messages.message_card.actions import ...`\n\n

**OpenUri** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#openuri-action))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**name**|set_name()|name|*str*|\n|targets|add_targets()|targets|*list* of ActionTarget1|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_target()|targets|ActionTarget1|\n\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n

**HttpPOST** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#httppost-action))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**name**|set_name()|name|*str*|\n|**target**|set_target()|targets|*str*|\n|headers|add_headers()|headers|*list* of Header(s)1|\n|body|set_body()|body|*str*|\n|body_content_type|set_body_content_type()|bodyContentType|*str*|\n\nOther functions\n\n|Name|property|Type|\n|---|---|---|\n|add_header()|headers|Header1|\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n

**InvokeAddInCommand** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#invokeaddincommand-action))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**name**|set_name()|name|*str*|\n|**add_in_id**|set_add_in_id()|addInId|*str*|\n|**desktop_command_id**|set_desktop_command_id()|desktopCommandId|*str*|\n|initialization_context|set_set_initialization_context()|initializationContext|*dict*|\n\n

**ActionCard** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#actioncard-action))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|**name**|set_name()|name|*str*|\n|inputs|add_inputs()|inputs|*list* of inputs(see docs)|\n|actions|add_actions()|actions|*list* of actions(see docs)|\n\nOther functions\n\n|Name|Property|Type|\n|---|---|---|\n|add_input()|inputs|see docs|\n|add_action()|actions|see docs|\n\n\n

Sections

\n\n**src**: `from django_actionable_messages.message_card.sections import ...`\n\n

**Section** ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#section-fields))

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|start_group|set_start_group()|startGroup|*bool*|\n|title|set_title()|title|*str*|\n|text|set_text()|text|*str*|\n|activity_image|set_activity_image()|activityImage|*str*|\n|activity_title|set_activity_title()|activityTitle|*str*|\n|activity_subtitle|set_activity_subtitle()|activitySubtitle|*str*|\n|activity_text|set_activity_text()|activityText|*str*|\n|hero_image|set_hero_image()|heroImage|HeroImage1|\n|facts|add_facts()|facts|*list* of Fact(s)1|\n|actions|add_potential_actions()|potentialAction|*list* of actions(see docs)|\n\nOther functions:\n\n|Name|Property|Type|\n|---|---|---|\n|set_activity(image, title, subtitle, text)|activityImage, activityTitle, activitySubtitle, activityText|*str*|\n|add_fact()|facts|Fact1|\n|add_action()|potentialAction|any action(see docs)|\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n

Cards

\n\n**src**: `from django_actionable_messages.message_card.cards import ...`\n\n

**MessageCard**

\n\n|Argument name|Function|Property|Type|\n|---|---|---|---|\n|title|set_title()|title|*str*|\n|text|set_text()|text|*str*|\n|originator|set_originator()|originator|*str*|\n|summary|set_summary()|summary|*str*|\n|theme_color|set_theme_color()|themeColor|*str*|\n|correlation_id|set_correlation_id()|correlationId|*str*|\n|auto_correlation_id*|-|correlationId|*bool* (default: *True*)|\n|expected_actors|set_expected_actors()|expectedActors|*list* of emails|\n|hide_original_body|set_hide_original_body()|hideOriginalBody|*bool*|\n|sections|add_sections()|sections|*list* of Section(s)1|\n|actions|add_actions()|potentialAction|*list* of actions(see docs)|\n\nOther functions:\n\n|Name|Property|Type|\n|---|---|---|\n|add_section()|sections|Section1|\n|add_action()|potentialAction|any action(see docs)|\n\n\\[1\\] `from django_actionable_messages.message_cards.sections import ...`\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/utsurius/django-actionable-messages", "keywords": "msteams,AdaptiveCard,MessageCard,actionable messages", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-actionable-messages", "package_url": "https://pypi.org/project/django-actionable-messages/", "platform": "", "project_url": "https://pypi.org/project/django-actionable-messages/", "project_urls": { "Documentation": "https://github.com/utsurius/django-actionable-messages/blob/master/README.md", "Homepage": "https://github.com/utsurius/django-actionable-messages", "Source": "https://github.com/utsurius/django-actionable-messages", "Tracker": "https://github.com/utsurius/django-actionable-messages/issues" }, "release_url": "https://pypi.org/project/django-actionable-messages/0.1.2/", "requires_dist": [ "django (>=1.11.0)" ], "requires_python": ">=3.5", "summary": "Actionable messages", "version": "0.1.2" }, "last_serial": 5977700, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cf7285db51e24e17bf01e31545f244b7", "sha256": "0572f64f00ac77219ebdbf7ef54137e9bae94424802d60c1b188ff7b2627fd96" }, "downloads": -1, "filename": "django_actionable_messages-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cf7285db51e24e17bf01e31545f244b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 24732, "upload_time": "2019-10-02T19:20:43", "url": "https://files.pythonhosted.org/packages/84/db/76bfc75460c90d02d737b0c170975a5bf6f2107b37c962856baff693c732/django_actionable_messages-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a818343966949752d7d6734f12047a6b", "sha256": "a8a20d5453b9a2aa3a26d6f494dc54b60575ed3b84ea293043a9b003d7c32304" }, "downloads": -1, "filename": "django_actionable_messages-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a818343966949752d7d6734f12047a6b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 28991, "upload_time": "2019-10-02T19:20:47", "url": "https://files.pythonhosted.org/packages/16/a3/4e763d645456035564c1cace37909698ddeedc5d606bd7ccf7f5962f817c/django_actionable_messages-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "de2bc2b1a78c54fea425e6c97a1f238a", "sha256": "a7906f751c7b6f13ee17bd47bab278ce880bfcf5b606fa63fca037eca3c47630" }, "downloads": -1, "filename": "django_actionable_messages-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "de2bc2b1a78c54fea425e6c97a1f238a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 24731, "upload_time": "2019-10-02T19:28:02", "url": "https://files.pythonhosted.org/packages/7f/db/0a1087e228d04ad472d0797f2890c746aebf924e03a86d6595ef04828aeb/django_actionable_messages-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23007175a6d3d6e90f9d32bfb85c3b3f", "sha256": "e90d020c912e81535fb08e68b29aec08d1d8d3e265a8e8ade0b8feb4208408a9" }, "downloads": -1, "filename": "django_actionable_messages-0.1.1.tar.gz", "has_sig": false, "md5_digest": "23007175a6d3d6e90f9d32bfb85c3b3f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 29001, "upload_time": "2019-10-02T19:28:04", "url": "https://files.pythonhosted.org/packages/a8/0b/96baea1ddca1e7227a2ebe1672e2884ec4ed1d7e0fab6f7ba2c00ee52c81/django_actionable_messages-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "590e88be7715be4f6b16dabcd04202bb", "sha256": "30514711ffd941b4831fef566f78af60f90e159243b99e6d657701c87c079c38" }, "downloads": -1, "filename": "django_actionable_messages-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "590e88be7715be4f6b16dabcd04202bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25083, "upload_time": "2019-10-15T14:37:10", "url": "https://files.pythonhosted.org/packages/41/44/c477e6a7ae750d1f4c56ade04becf76573804068ea0521a01dd15fb349ab/django_actionable_messages-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c31eea95e372d41cd65c930dc4bbe80", "sha256": "c3e1e3899bcd4015ef052bbcf633087a6d3b5b4bde8a17750aaea22cb9fabf7e" }, "downloads": -1, "filename": "django_actionable_messages-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1c31eea95e372d41cd65c930dc4bbe80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 30076, "upload_time": "2019-10-15T14:37:13", "url": "https://files.pythonhosted.org/packages/f5/3d/9fc650c0ac4c00aa659ec86ed14b9278f530ce057b0fad025771acfcd3aa/django_actionable_messages-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "590e88be7715be4f6b16dabcd04202bb", "sha256": "30514711ffd941b4831fef566f78af60f90e159243b99e6d657701c87c079c38" }, "downloads": -1, "filename": "django_actionable_messages-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "590e88be7715be4f6b16dabcd04202bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25083, "upload_time": "2019-10-15T14:37:10", "url": "https://files.pythonhosted.org/packages/41/44/c477e6a7ae750d1f4c56ade04becf76573804068ea0521a01dd15fb349ab/django_actionable_messages-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c31eea95e372d41cd65c930dc4bbe80", "sha256": "c3e1e3899bcd4015ef052bbcf633087a6d3b5b4bde8a17750aaea22cb9fabf7e" }, "downloads": -1, "filename": "django_actionable_messages-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1c31eea95e372d41cd65c930dc4bbe80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 30076, "upload_time": "2019-10-15T14:37:13", "url": "https://files.pythonhosted.org/packages/f5/3d/9fc650c0ac4c00aa659ec86ed14b9278f530ce057b0fad025771acfcd3aa/django_actionable_messages-0.1.2.tar.gz" } ] }