Completed
Push — master ( 69fa9b...92a354 )
by Fox
01:16
created

slack()   A

Complexity

Conditions 2

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 13
rs 9.4285
1
2
from rest_framework.response import Response
3
from rest_framework.decorators import api_view
4
5
from django_th.models import TriggerService
6
from django_th.services import default_provider
7
8
from th_slack.models import Slack
9
10
11 View Code Duplication
def consumer(trigger_id, data):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
12
    """
13
        call the consumer and handle the data
14
        :param trigger_id:
15
        :param data:
16
        :return:
17
    """
18
    # consumer - the service which uses the data
19
    default_provider.load_services()
20
    service = TriggerService.objects.get(id=trigger_id)
21
22
    service_consumer = default_provider.get_service(
23
        str(service.consumer.name.name))
24
    kwargs = {'user': service.user}
25
26
    if len(data) > 0:
27
28
        getattr(service_consumer, '__init__')(service.consumer.token,
29
                                              **kwargs)
30
        getattr(service_consumer, 'save_data')(service.id, **data)
31
32
33
@api_view(['POST'])
34
def slack(request):
35
    data = {}
36
    # check that the data are ok with the provided signature
37
    slack = Slack.objects.filter(slack_token=request.data['token'],
38
                                 team_id=request.data['team_id']).get()
39
    if slack:
40
        data['title'] = 'From Slack #{}'.format(request.data['channel_name'])
41
        data['content'] = request.data['text']
42
        consumer(slack.trigger_id, data)
43
        return Response({"message": "Success"})
44
    else:
45
        return Response({"message": "Bad request"})
46