def delete_slackhook(url, channel, notify_config, obj, change):
    obj_type = _get_type(obj)

    if not _check_notify_permission(notify_config, obj_type, 'delete'):
        return

    template = loader.get_template('taiga_contrib_slack/delete.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    description = getattr(obj, 'description', '-')

    data = {
        "text": template.render(context),
        "attachments": [{
            "color": "danger",
            "fields": [{
                "title": "Description",
                "value": description,
                "short": False,
            }]
        }]
    }

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), change.user['name'])
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
        if not data["icon_url"].startswith("http"):
            data["icon_url"] = "https:{}".format(data["icon_url"])
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON", "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
Exemple #2
0
def create_slackhook(url, channel, obj):
    obj_type = _get_type(obj)

    template = loader.get_template('taiga_contrib_slack/create.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    description = getattr(obj, 'description', '-')

    data = {
        "text": template.render(context),
        "attachments": [{
            "color": "good",
            "fields": [{
                "title": "Creator",
                "value": obj.owner.get_full_name(),
                "short": True,
            }]
        }]
    }
    if description:
        data["attachments"][0]["fields"].append({
            "title": "Description",
            "value": description,
            "short": False,
        })

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), obj.owner.get_full_name())
    data["icon_url"] = get_photo_or_gravatar_url(obj.owner)
    if not data["icon_url"].startswith("http"):
        data["icon_url"] = "https:{}".format(data["icon_url"])
    _send_request(url, data)
Exemple #3
0
def delete_slackhook(url, channel, obj, change):
    obj_type = _get_type(obj)

    template = loader.get_template('taiga_contrib_slack/delete.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    description = getattr(obj, 'description', '-')

    data = {
        "text":
        template.render(context),
        "attachments": [{
            "color":
            "danger",
            "fields": [{
                "title": "Description",
                "value": description,
                "short": False,
            }]
        }]
    }

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(
        getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), change.user['name'])
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
        if not data["icon_url"].startswith("http"):
            data["icon_url"] = "https:{}".format(data["icon_url"])
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON",
                                   "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
Exemple #4
0
def extract_user_info(instance):
    return {
        "id": instance.pk,
        "name": instance.get_full_name(),
        "photo": get_photo_or_gravatar_url(instance),
        "big_photo": get_big_photo_or_gravatar_url(instance),
        "username": instance.username,
    }
Exemple #5
0
def change_slackhook(url, channel, notify_config, obj, change):
    obj_type = _get_type(obj)

    if not _check_notify_permission(notify_config, obj_type, 'change'):
        return

    template_change = loader.get_template('taiga_contrib_slack/change.jinja')
    comment = re.sub(LINK_RE, _link_transform, change.comment)
    context = Context({"obj": obj, "obj_type": obj_type, "change": change, "comment": comment})

    change_text = template_change.render(context.flatten())
    data = {"text": change_text.strip()}
    data['attachments'] = []

    if channel:
        data["channel"] = channel

    # Get markdown fields
    if change.diff:
        template_field = loader.get_template('taiga_contrib_slack/field-diff.jinja')
        included_fields = ["description", "content", "blocked_note"]

        for field_name, values in change.diff.items():
            if field_name in included_fields:
                attachment = _markdown_field_to_attachment(template_field, field_name, values)

                data['attachments'].append(attachment)

    # Get rest of fields
    if change.values_diff:
        template_field = loader.get_template('taiga_contrib_slack/field-diff.jinja')
        excluded_fields = ["description_diff", "description_html", "content_diff",
                           "content_html", "blocked_note_diff", "blocked_note_html",
                           "backlog_order", "kanban_order", "taskboard_order", "us_order",
                           "finish_date", "is_closed"]

        for field_name, values in change.values_diff.items():
            if field_name in excluded_fields:
                continue

            attachment = _field_to_attachment(template_field, field_name, values)

            if attachment:
                data['attachments'].append(attachment)

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), change.user['name'])
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
        if data["icon_url"] and not data["icon_url"].startswith("http"):
            data["icon_url"] = "https:{}".format(data["icon_url"])
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON", "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
def change_slackhook(url, channel, notify_config, obj, change):
    obj_type = _get_type(obj)

    if not _check_notify_permission(notify_config, obj_type, 'change'):
        return

    template_change = loader.get_template('taiga_contrib_slack/change.jinja')
    comment = re.sub(LINK_RE, _link_transform, change.comment)
    context = Context({"obj": obj, "obj_type": obj_type, "change": change, "comment": comment})

    change_text = template_change.render(context)
    data = {"text": change_text.strip()}
    data['attachments'] = []

    if channel:
        data["channel"] = channel

    # Get markdown fields
    if change.diff:
        template_field = loader.get_template('taiga_contrib_slack/field-diff.jinja')
        included_fields = ["description", "content", "blocked_note"]

        for field_name, values in change.diff.items():
            if field_name in included_fields:
                attachment = _markdown_field_to_attachment(template_field, field_name, values)

                data['attachments'].append(attachment)

    # Get rest of fields
    if change.values_diff:
        template_field = loader.get_template('taiga_contrib_slack/field-diff.jinja')
        excluded_fields = ["description_diff", "description_html", "content_diff",
                           "content_html", "blocked_note_diff", "blocked_note_html",
                           "backlog_order", "kanban_order", "taskboard_order", "us_order",
                           "finish_date", "is_closed"]

        for field_name, values in change.values_diff.items():
            if field_name in excluded_fields:
                continue

            attachment = _field_to_attachment(template_field, field_name, values)

            if attachment:
                data['attachments'].append(attachment)

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), change.user['name'])
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
        if not data["icon_url"].startswith("http"):
            data["icon_url"] = "https:{}".format(data["icon_url"])
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON", "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
Exemple #7
0
    def get_user(self, entry):
        user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False}
        user.update(entry.user)

        user["photo"] = get_photo_or_gravatar_url(entry.owner)
        user["is_active"] = entry.owner.is_active

        if entry.owner.is_active or entry.owner.is_system:
            user["name"] = entry.owner.get_full_name()
            user["username"] = entry.owner.username

        return user
Exemple #8
0
    def get_user(self, entry):
        user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False}
        user.update(entry.user)
        user["photo"] = get_photo_or_gravatar_url(entry.owner)

        if entry.owner:
            user["is_active"] = entry.owner.is_active

            if entry.owner.is_active or entry.owner.is_system:
                user["name"] = entry.owner.get_full_name()
                user["username"] = entry.owner.username

        return user
Exemple #9
0
def test_slackhook(url, channel):
    data = {
        "text": "Test slack message",
    }

    if channel:
        data["channel"] = channel

    data["username"] = getattr(settings, "SLACKHOOKS_USERNAME", "Taiga")
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON", "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
Exemple #10
0
def test_slackhook(url, channel):
    data = {
        "text": "Test slack message",
    }

    if channel:
        data["channel"] = channel

    data["username"] = getattr(settings, "SLACKHOOKS_USERNAME", "Taiga")
    try:
        user = User.objects.get(pk=change.user['pk'])
        data["icon_url"] = get_photo_or_gravatar_url(user)
    except User.DoesNotExist:
        data["icon_url"] = getattr(settings, "SLACKHOOKS_ICON",
                                   "https://tree.taiga.io/images/favicon.png")
    _send_request(url, data)
Exemple #11
0
def create_slackhook(url, channel, notify_config, obj):
    obj_type = _get_type(obj)

    if not _check_notify_permission(notify_config, obj_type, 'create'):
        return

    template = loader.get_template('taiga_contrib_slack/create.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    data = {
        "text": template.render(context.flatten()),
        "attachments": [{
            "color": "good",
            "fields": [{
                "title": "Creator",
                "value": obj.owner.get_full_name(),
                "short": True,
            }]
        }]
    }

    if obj_type == "wikipage":
        # For wikipages
        content = getattr(obj, 'content', '-')
        if content:
            data["attachments"][0]["fields"].append({
                "title": "Content",
                "value": content,
                "short": False,
            })
    else:
        # For stories, tasks and issues
        description = getattr(obj, 'description', '-')
        if description:
            data["attachments"][0]["fields"].append({
                "title": "Description",
                "value": description,
                "short": False,
            })

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), obj.owner.get_full_name())
    data["icon_url"] = get_photo_or_gravatar_url(obj.owner)
    if data["icon_url"] and not data["icon_url"].startswith("http"):
        data["icon_url"] = "https:{}".format(data["icon_url"])
    _send_request(url, data)
Exemple #12
0
def create_slackhook(url, channel, notify_config, obj):
    obj_type = _get_type(obj)

    if not _check_notify_permission(notify_config, obj_type, 'create'):
        return

    template = loader.get_template('taiga_contrib_slack/create.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    data = {
        "text": template.render(context.flatten()),
        "attachments": [{
            "color": "good",
            "fields": [{
                "title": "Creator",
                "value": obj.owner.get_full_name(),
                "short": True,
            }]
        }]
    }

    if obj_type == "wikipage":
        # For wikipages
        content = getattr(obj, 'content', '-')
        if content:
            data["attachments"][0]["fields"].append({
                "title": "Content",
                "value": content,
                "short": False,
            })
    else:
        # For stories, tasks and issues
        description = getattr(obj, 'description', '-')
        if description:
            data["attachments"][0]["fields"].append({
                "title": "Description",
                "value": description,
                "short": False,
            })

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"), obj.owner.get_full_name())
    data["icon_url"] = get_photo_or_gravatar_url(obj.owner)
    if not data["icon_url"].startswith("http"):
        data["icon_url"] = "https:{}".format(data["icon_url"])
    _send_request(url, data)
Exemple #13
0
    def to_native(self, obj):
        #Updates the data user info saved if the user exists
        User = apps.get_model("users", "User")
        userData = obj.get("user", None)
        if userData:
            try:
                user = User.objects.get(id=userData["id"])
                obj["user"] = {
                    "id": user.pk,
                    "name": user.get_full_name(),
                    "photo": get_photo_or_gravatar_url(user),
                    "big_photo": get_big_photo_or_gravatar_url(user),
                    "username": user.username,
                }
            except User.DoesNotExist:
                pass

        return obj
    def to_native(self, obj):
        #Updates the data user info saved if the user exists
        User = apps.get_model("users", "User")
        userData = obj.get("user", None)
        if userData:
            try:
                user = User.objects.get(id=userData["id"])
                obj["user"] = {
                    "id": user.pk,
                    "name": user.get_full_name(),
                    "photo": get_photo_or_gravatar_url(user),
                    "big_photo": get_big_photo_or_gravatar_url(user),
                    "username": user.username,
                }
            except User.DoesNotExist:
                pass

        return obj
Exemple #15
0
def create_slackhook(url, channel, obj):
    obj_type = _get_type(obj)

    template = loader.get_template('taiga_contrib_slack/create.jinja')
    context = Context({"obj": obj, "obj_type": obj_type})
    description = getattr(obj, 'description', '-')

    data = {
        "text":
        template.render(context),
        "attachments": [{
            "color":
            "good",
            "fields": [{
                "title": "Creator",
                "value": obj.owner.get_full_name(),
                "short": True,
            }]
        }]
    }
    if description:
        data["attachments"][0]["fields"].append({
            "title": "Description",
            "value": description,
            "short": False,
        })

    if channel:
        data["channel"] = channel

    data["username"] = "******".format(
        getattr(settings, "SLACKHOOKS_USERNAME", "Taiga"),
        obj.owner.get_full_name())
    data["icon_url"] = get_photo_or_gravatar_url(obj.owner)
    if not data["icon_url"].startswith("http"):
        data["icon_url"] = "https:{}".format(data["icon_url"])
    _send_request(url, data)
Exemple #16
0
    def get_data(self, obj):
        #Updates the data user info saved if the user exists
        if hasattr(obj, "_prefetched_user"):
            user = obj._prefetched_user
        else:
            User = apps.get_model("users", "User")
            userData = obj.data.get("user", None)
            try:
                user = User.objects.get(id=userData["id"])
            except User.DoesNotExist:
                user = None

        if user is not None:
            obj.data["user"] = {
                "id": user.pk,
                "name": user.get_full_name(),
                "photo": get_photo_or_gravatar_url(user),
                "big_photo": get_big_photo_or_gravatar_url(user),
                "username": user.username,
                "is_profile_visible": user.is_active and not user.is_system,
                "date_joined": user.date_joined
            }

        return obj.data
Exemple #17
0
 def get_photo(self, membership):
     return get_photo_or_gravatar_url(membership.user)
Exemple #18
0
 def get_photo(self, project):
     return get_photo_or_gravatar_url(project.user)
Exemple #19
0
 def get_photo(self, obj):
     return get_photo_or_gravatar_url(obj)
Exemple #20
0
 def get_photo(self, obj):
     return get_photo_or_gravatar_url(obj)