예제 #1
0
파일: views.py 프로젝트: fredwilliam/PMO
def delete_resources(req, pk):
    resource = get_object_or_404(Resource, pk=pk)
    resource.delete()

    transaction.commit()
    id = int(pk)
    return message(req, "A resource %d deleted" % (id), link="/resources")
def delete(request, html_cache_id):
    """Delete record"""

    data, code, valid = validator.delete(request)

    if valid:
        if settings.ENV == 'production':
            try:
                data, code = resource.delete(request, html_cache_id)
            except:
                return {'code': 'html_cache/delete/fail'}, 404
        else:
            data, code = resource.delete(request, html_cache_id)

    return data, code
def delete(request, tag_id):
    """Delete record"""

    data, code, valid = validator.delete(request)

    if valid:
        if settings.ENV == "production":
            try:
                data, code = resource.delete(request, tag_id)
            except:
                return {"code": "tag/delete/fail"}, 404
        else:
            data, code = resource.delete(request, tag_id)

    return data, code
예제 #4
0
파일: views.py 프로젝트: fredwilliam/PMO
    def post(req):
        # delete notification if a delete button was pressed.
        if req.POST.get("delete", ""):
            pk = resource.pk
            resource.delete()

            transaction.commit()
            return message(req, "Resource %d deleted" % (pk), link="/resources")
        else:
            # check the form for errors
            notice_errors = check_resource_form(req)

            # if any fields were missing, abort.
            missing = notice_errors["missing"]
            exists = notice_errors["exists"]

            if missing:
                transaction.rollback()
                return message(req, "Missing Field(s): %s" % comma(missing), link="/resources/add")

            try:
                # create the resource object from the form
                cat = ResourceCategory.objects.get(pk=req.POST.get("category", ""))
                resource.category = cat

                status = Status.objects.get(pk=req.POST.get("status", ""))
                resource.status = status

                pk = req.POST.get("facility", "")
                if pk != "":
                    facility = Facility.objects.get(pk=req.POST.get("facility", ""))
                    resource.facility = facility
                else:
                    resource.facility = None

                resource.name = req.POST.get("name", "")
                resource.code = req.POST.get("code", "")

                # save the changes to the db
                resource.save()
                transaction.commit()

                # full-page notification
                return message(req, "A resource %s updated" % (resource.pk), link="/resources")

            except Exception, err:
                transaction.rollback()
                raise
예제 #5
0
def _message_actions():
    """
    /slack/message_actions end point to receive HTTP POST Requests from Slack
    
    After Analysing the type of payload received whether a button click,
    dialogue,
    interactive message,
    dialogue submission repective response will be sent back to
    the user provoked the action
    """

    message_action = json.loads(request.form["payload"])

    user_id = message_action["user"]["id"]
    channel_id = message_action['channel']['id']

    if message_action["type"] == "interactive_message":

        # Add the message_ts to the user's order info
        for actions in message_action['actions']:
            if actions['name'] == "workform":

                # Show the ordering dialog to the user
                slack_client.api_call("chat.postMessage",
                                      channel=channel_id,
                                      icon_url=icon,
                                      text=f"Hey <@{user_id}> Let's Start",
                                      attachments=[])
                slack_client.api_call("chat.postMessage",
                                      channel=channel_id,
                                      text=chainmessages[0],
                                      icon_url=icon,
                                      attachments=[])

    elif message_action["type"] == "block_actions":
        action = message_action.get('actions')

        actiontype = action[0]['type']

        if actiontype == 'channels_select':
            channel = action[0]['selected_channel']

        if actiontype == 'button':
            text = action[0]['text']['text']
            value = action[0]['value']
            if text == "Delete":
                if value.startswith('resource'):
                    del_id = value[8:]
                    val = resourcemodule.delete(del_id)

                    slack_client.api_call("chat.postMessage",
                                          channel=channel_id,
                                          text="",
                                          icon_url=icon,
                                          attachments=[{
                                              "text":
                                              val,
                                              "color":
                                              "#3AA3E3",
                                              "attachment_type":
                                              "default",
                                          }])
                if value.startswith('timer'):
                    del_id = value[5:]
                    val = remind.deletereminder(del_id)
                    slack_client.api_call("chat.postMessage",
                                          channel=channel_id,
                                          text="",
                                          icon_url=icon,
                                          attachments=[{
                                              "text":
                                              val,
                                              "color":
                                              "#3AA3E3",
                                              "attachment_type":
                                              "default",
                                          }])

            if value == 'resourceadd':
                open_dialog = slack_client.api_call(
                    "dialog.open",
                    trigger_id=message_action["trigger_id"],
                    dialog={
                        "title":
                        "Add a resource",
                        "submit_label":
                        "Submit",
                        "callback_id":
                        'resourceadd',
                        "elements": [
                            {
                                "type": "text",
                                "label": "name",
                                "name": "resource"
                            },
                            {
                                "type": "text",
                                "label": "links/description",
                                "name": "link"
                            },
                        ]
                    })

            if text == 'Update':
                if value.startswith('resource'):
                    del_id = value[8:]
                    open_dialog = slack_client.api_call(
                        "dialog.open",
                        trigger_id=message_action["trigger_id"],
                        dialog={
                            "title":
                            "Daily Syncup",
                            "submit_label":
                            "Submit",
                            "callback_id":
                            'update' + del_id,
                            "elements": [
                                {
                                    "type": "text",
                                    "label": "name",
                                    "name": "resource"
                                },
                                {
                                    "type": "text",
                                    "label": "links/description",
                                    "name": "link"
                                },
                            ]
                        })

                    update_id = value[8:]

        if actiontype == 'static_select':
            option = action[0]['selected_option']['value']

            if option == 'dayoff':

                val = progress.dayoff(user_id)
                slack_client.api_call("chat.postMessage",
                                      channel=channel_id,
                                      icon_url=icon,
                                      text=val,
                                      attachments=[])
                blocks.divider(slack_client, channel_id)
            if option == "resources":

                resourcemodule.showresources(slack_client, channel_id)
                blocks.divider(slack_client, channel_id)
            if option == 'report':

                slack_client.api_call(
                    "chat.postMessage",
                    channel=channel_id,
                    icon_url=icon,
                    text=f":thumbsup: <@{user_id}> Please let us \
know your progress",
                    attachments=[])
                slack_client.api_call("chat.postMessage",
                                      channel=channel_id,
                                      icon_url=icon,
                                      text=chainmessages[0],
                                      attachments=[])

            if option == 'joke':

                url = "https://official-joke-api.appspot.com/random_joke"

                try:
                    data = requests.get(url=url)
                    data = data.content
                    data = json.loads(data)

                    slack_client.api_call(
                        "chat.postMessage",
                        channel=channel_id,
                        text=data['setup'] + " " + data['punchline'],
                        icon_url=icon,
                    )
                except:
                    slack_client.api_call(
                        "chat.postMessage",
                        channel=channel_id,
                        text="Failed to load",
                        icon_url=icon,
                    )
                blocks.divider(slack_client, channel_id)
            if option == 'show':

                progress.report(user_id, channel_id, slack_client)
                blocks.divider(slack_client, channel_id)
            return make_response("", 200)

    elif message_action["type"] == "dialog_submission":

        formdata = message_action['submission']

        callbackid = message_action['callback_id']

        if callbackid.startswith('updateresource'):
            update_id = callbackid[14:]
            resourcemodule.update(update_id, formdata['resource'],
                                  formdata['link'])
            val = 'Under Construction'
        elif callbackid.startswith('resourceadd'):
            formdata = message_action['submission']
            val = resourcemodule.insert(formdata['resource'], formdata['link'],
                                        user_id)

        slack_client.api_call("chat.postMessage",
                              channel=channel_id,
                              icon_url=icon,
                              text="",
                              attachments=[{
                                  "text": val,
                                  "color": "#3AA3E3",
                                  "attachment_type": "default",
                              }])

    return make_response("", 200)