def moderate(request): """ View for moderation actions on a single item. """ microcosm_id = request.POST.get('microcosm_id') if request.method == 'POST': if request.POST.get('action') == 'move': if request.POST.get('item_type') == 'event': event = Event() event.id = int(request.POST.get('item_id')) event.microcosm_id = int(microcosm_id) event.meta = {'editReason': 'Moderator moved item'} event.update(request.get_host(), request.access_token) elif request.POST.get('item_type') == 'conversation': conversation = Conversation() conversation.id = int(request.POST.get('item_id')) conversation.microcosm_id = int(microcosm_id) conversation.meta = {'editReason': 'Moderator moved item'} conversation.update(request.get_host(), request.access_token) elif request.POST.get('item_type') == 'microcosm': microcosm = Microcosm() microcosm.id = int(request.POST.get('item_id')) microcosm.parent_id = int(microcosm_id) microcosm.meta = {'editReason': 'Moderator moved item'} microcosm.update(request.get_host(), request.access_token) else: # These are all PATCH requests and we need the item in question first if request.POST.get('item_type') == 'conversation': url, params, headers = Conversation.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token) if request.POST.get('item_type') == 'event': url, params, headers = Event.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token) if request.POST.get('item_type') == 'microcosm': url, params, headers = Microcosm.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token) # And then to execute the PATCH against the item if request.POST.get('action') == 'delete': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/deleted', 'value': True }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'undelete': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/deleted', 'value': False }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'approve': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/moderated', 'value': False }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'pin': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/sticky', 'value': True }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'unpin': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/sticky', 'value': False }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'open': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/open', 'value': True }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'close': payload = json.dumps([{ 'op': 'replace', 'path': '/meta/flags/open', 'value': False }]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) return HttpResponseRedirect( reverse('single-microcosm', args=(microcosm_id, )))
def moderate(request): """ View for moderation actions on a single item. """ microcosm_id = request.POST.get('microcosm_id') if request.method == 'POST': if request.POST.get('action') == 'move': if request.POST.get('item_type') == 'event': event = Event() event.id = int(request.POST.get('item_id')) event.microcosm_id = int(microcosm_id) event.meta = {'editReason': 'Moderator moved item'} event.update(request.get_host(), request.access_token) elif request.POST.get('item_type') == 'conversation': conversation = Conversation() conversation.id = int(request.POST.get('item_id')) conversation.microcosm_id = int(microcosm_id) conversation.meta = {'editReason': 'Moderator moved item'} conversation.update(request.get_host(), request.access_token) elif request.POST.get('item_type') == 'microcosm': microcosm = Microcosm() microcosm.id = int(request.POST.get('item_id')) microcosm.parent_id = int(microcosm_id) microcosm.meta = {'editReason': 'Moderator moved item'} microcosm.update(request.get_host(), request.access_token) else: # These are all PATCH requests and we need the item in question first if request.POST.get('item_type') == 'conversation': url, params, headers = Conversation.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token ) if request.POST.get('item_type') == 'event': url, params, headers = Event.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token ) if request.POST.get('item_type') == 'microcosm': url, params, headers = Microcosm.build_request( request.get_host(), request.POST.get('item_id'), access_token=request.access_token ) # And then to execute the PATCH against the item if request.POST.get('action') == 'delete': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/deleted', 'value': True}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'undelete': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/deleted', 'value': False}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'approve': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/moderated', 'value': False}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'pin': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/sticky', 'value': True}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'unpin': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/sticky', 'value': False}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'open': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/open', 'value': True}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) elif request.POST.get('action') == 'close': payload = json.dumps([{'op': 'replace', 'path': '/meta/flags/open', 'value': False}]) headers['Content-Type'] = 'application/json' requests.patch(url, payload, headers=headers) return HttpResponseRedirect(reverse('single-microcosm', args=(microcosm_id,)))