Skip to content
Snippets Groups Projects
Commit abed9a80 authored by Branson Stephens's avatar Branson Stephens
Browse files

implemented delete button

parent 45aefcc9
No related branches found
No related tags found
No related merge requests found
......@@ -1076,6 +1076,7 @@ def latest(request):
#-----------------------------------------------------------------------------------
# For tags. A new view function. We need this because the API one would want users
# to have certs stored in their browser.
# XXX Get rid of this and use apiweb views instead?
#-----------------------------------------------------------------------------------
def taglogentry(request, graceid, num, tagname):
......@@ -1116,8 +1117,29 @@ def taglogentry(request, graceid, num, tagname):
msg = msg + str(e) + '\n'
msg = "The tag itself, however, is saved."
return HttpResponse(msg, content_type="text")
elif request.method == "DELETE":
try:
# Has this tag-eventlog relationship already been created?
tag = eventlog.tag_set.filter(name=tagname)[0]
tag.eventlogs.remove(eventlog)
except:
msg = "Attempted to delete tag that doesn't exist."
return HttpResponseBadRequest(msg)
# Create a log entry to document the tag deletion.
msg = "Removed tag %s for message %s. " % (tagname, num)
logentry = EventLog(event=event,
issuer=request.user,
comment=msg)
try:
logentry.save()
except Exception as e:
# Since the tag creation was successful, we'll return 200.
return HttpResponse("Tag removed, but failed to create log entry: %s" % str(e),
content_type="text")
return HttpResponse(msg, content_type="text")
else:
# We will only allow PUT here. Anything else is a bad request: 400
return HttpResponseBadRequest
# Hopefully, this will only ever be called form inside a script. Just in case...
......
......@@ -47,7 +47,7 @@
dc += ' </td> \n';
dc += ' </tr> \n';
dc += ' <tr> \n';
dc += ' <td> {{log.comment|sanitize}} \n';
dc += ' <td> {{log.comment|sanitize|escapejs}} \n';
{% if log.fileurl %}
dc += ' <a href="{{log.fileurl}}">{{log.filename}}.</a> \n';
{% endif %}
......@@ -78,9 +78,9 @@
{% if not log.hasImage %}
dc += ' <tr class="{% cycle 'odd' 'even'%}"> \n';
dc += ' <td>{{log.N}}</td> \n';
dc += ' <td>{{log.created|multiTime:"logtime"}}</td> \n';
dc += ' <td>{{log.created|multiTime:"logtime"|escapejs}}</td> \n';
dc += ' <td>{{log.issuer.first_name}} {{log.issuer.last_name}}</td> \n';
dc += ' <td>{{log.comment|sanitize}} \n';
dc += ' <td>{{log.comment|sanitize|escapejs}} \n';
{% if log.fileurl %}
dc += ' <a href="{{log.fileurl}}">{{log.filename}}</a> \n';
{% endif %}
......@@ -137,10 +137,44 @@
ret += ' <table> \n';
{%for tag in log.tag_set.all %}
ret += ' <tr> <td> \n';
ret += ' <button type="button" id="table_button" data-dojo-type="dijit/form/Button"> \n';
ret += ' <span>Click me!</span> \n';
ret += ' <button type="button" data-dojo-type="dijit/form/Button"> \n';
ret += ' <span>{{tag.name}}</span> \n';
ret += ' <script type="dojo/on" data-dojo-event="click"> \n';
ret += ' console.log("I was clicked!"); \n';
/* ret += ' console.log("I was clicked."); \n'; */
ret += ' require(["dojo/dom", \n';
ret += ' "dojo/request", \n';
ret += ' "dojo/dom-construct", \n';
ret += ' "dijit/Dialog", \n';
ret += ' "dijit/form/Button"], function(dom,request,domConstruct,Dialog,Button) { \n';
ret += ' var n = {{ log.N }} \n';
ret += ' var tagName = "{{ tag.name }}" \n';
ret += ' var tagUrl = "{% url taglogentry object.graceid "000" "temp" %}" \n';
ret += ' tagUrl = tagUrl.replace("000",n); \n';
ret += ' tagUrl = tagUrl.replace("temp",tagName); \n';
ret += ' var tagResultDialog = new Dialog({ style: "width: 300px" }); \n';
ret += ' var actionBar = domConstruct.create("div", { "class": "dijitDialogPaneActionBar" }); \n';
ret += ' var tbnode = domConstruct.create("div", { \n';
ret += ' style: "margin: 0px auto 0px auto; text-align: center;" \n';
ret += ' }, actionBar); \n';
ret += ' var tagButton = new Button({ \n';
ret += ' label: "Ok", \n';
ret += ' onClick: function(){ \n';
ret += ' tagResultDialog.hide(); \n';
ret += ' }}).placeAt(tbnode); \n';
ret += ' request.del(tagUrl).then( \n';
ret += ' function(text){ \n';
ret += ' tagResultDialog.set("content", text); \n';
ret += ' domConstruct.place(actionBar, tagResultDialog.containerNode); \n';
ret += ' tagResultDialog.show(); \n';
ret += ' //location.reload(true); \n';
ret += ' }, \n';
ret += ' function(error){ \n';
ret += ' tagResultDialog.set("content", "Error: " + error); \n';
ret += ' domConstruct.place(actionBar, tagResultDialog.containerNode); \n';
ret += ' tagResultDialog.show(); \n';
ret += ' } \n';
ret += ' ); \n';
ret += ' }); \n';
ret += ' <\/script>\n';
ret += ' </button> \n';
ret += ' </td> </tr> \n';
......@@ -148,7 +182,7 @@
ret += ' </table> \n';
ret += ' </td> \n';
{% endif %}
ret += ' <td>{{log.comment|sanitize}} \n';
ret += ' <td>{{log.comment|sanitize|escapejs}} \n';
{% if log.fileurl %}
ret += ' <a href="{{log.fileurl}}">{{log.filename}}</a> \n';
{% endif %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment