def delete_screenshot(request, production_id, screenshot_id, is_artwork_view=False): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) screenshot = get_object_or_404(Screenshot, id=screenshot_id, production=production) if request.method == 'POST': if request.POST.get('yes'): screenshot.delete() # reload production model, as the deletion above may have nullified has_screenshot # (which won't be reflected in the existing model instance) production = Production.objects.get(pk=production.pk) production.updated_at = datetime.datetime.now() production.has_bonafide_edits = True production.save() if is_artwork_view: Edit.objects.create(action_type='delete_screenshot', focus=production, description="Deleted artwork", user=request.user) else: Edit.objects.create(action_type='delete_screenshot', focus=production, description="Deleted screenshot", user=request.user) return HttpResponseRedirect( reverse('production_edit_screenshots', args=[production.id])) else: if is_artwork_view: if production.supertype != 'music': return redirect('production_delete_screenshot', production_id, screenshot_id) return simple_ajax_confirmation( request, reverse('production_delete_artwork', args=[production_id, screenshot_id]), "Are you sure you want to delete this artwork for %s?" % production.title, html_title="Deleting artwork for %s" % production.title) else: if production.supertype == 'music': return redirect('production_delete_artwork', production_id, screenshot_id) return simple_ajax_confirmation( request, reverse('production_delete_screenshot', args=[production_id, screenshot_id]), "Are you sure you want to delete this screenshot for %s?" % production.title, html_title="Deleting screenshot for %s" % production.title)
def delete_screenshot(request, production_id, screenshot_id): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) screenshot = get_object_or_404(Screenshot, id=screenshot_id, production=production) if request.method == 'POST': if request.POST.get('yes'): screenshot.delete() # reload production model, as the deletion above may have nullified default_screenshot # (which won't be reflected in the existing model instance) production = Production.objects.get(pk=production.pk) production.updated_at = datetime.datetime.now() production.has_bonafide_edits = True production.save() Edit.objects.create(action_type='delete_screenshot', focus=production, description="Deleted screenshot", user=request.user) return HttpResponseRedirect(reverse('production_edit_screenshots', args=[production.id])) else: return simple_ajax_confirmation(request, reverse('production_delete_screenshot', args=[production_id, screenshot_id]), "Are you sure you want to delete this screenshot for %s?" % production.title, html_title="Deleting screenshot for %s" % production.title)
def lock(request, production_id): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) if request.method == 'POST': if request.POST.get('yes'): Edit.objects.create(action_type='lock_production', focus=production, description=(u"Protected production '%s'" % production.title), user=request.user) production.locked = True production.updated_at = datetime.datetime.now() production.has_bonafide_edits = True production.save() messages.success(request, "'%s' locked" % production.title) return HttpResponseRedirect(production.get_absolute_url()) else: return simple_ajax_confirmation(request, reverse('lock_production', args=[production_id]), "Locking down a page is a serious decision and shouldn't be done on a whim - " "remember that we want to keep Demozoo as open as possible. " "Are you absolutely sure you want to lock '%s'?" % production.title, html_title="Locking %s" % production.title)
def remove_subgroup(request, group_id, subgroup_id): group = get_object_or_404(Releaser, is_group=True, id=group_id) subgroup = get_object_or_404(Releaser, is_group=True, id=subgroup_id) if not group.editable_by_user(request.user): raise PermissionDenied if request.method == 'POST': if request.POST.get('yes'): group.member_memberships.filter(member=subgroup).delete() group.updated_at = datetime.datetime.now() group.save() description = u"Removed %s as a subgroup of %s" % (subgroup.name, group.name) Edit.objects.create(action_type='remove_membership', focus=subgroup, focus2=group, description=description, user=request.user) return HttpResponseRedirect(group.get_absolute_edit_url() + "?editing=subgroups") else: return simple_ajax_confirmation( request, reverse('group_remove_subgroup', args=[group_id, subgroup_id]), "Are you sure you want to remove %s as a subgroup of %s?" % (subgroup.name, group.name), html_title="Removing %s from %s" % (subgroup.name, group.name))
def delete(request, competition_id): competition = get_object_or_404(Competition, id=competition_id) if (not request.user.is_staff) or competition.placings.exists(): return HttpResponseRedirect(competition.party.get_absolute_url()) if request.method == 'POST': if request.POST.get('yes'): Edit.objects.create(action_type='delete_competition', focus=competition.party, description=(u"Deleted competition '%s'" % competition.name), user=request.user) competition.delete() messages.success(request, "%s competition deleted" % competition.name) return HttpResponseRedirect(competition.party.get_absolute_url()) else: return HttpResponseRedirect(competition.party.get_absolute_url()) else: return simple_ajax_confirmation( request, reverse('delete_competition', args=[competition_id]), "Are you sure you want to delete the %s competition?" % competition.name, html_title="Deleting %s" % competition.name)
def delete(request, production_id): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) if request.method == "POST": if request.POST.get("yes"): # insert log entry before actually deleting, so that it doesn't try to # insert a null ID for the focus field Edit.objects.create( action_type="delete_production", focus=production, description=(u"Deleted production '%s'" % production.title), user=request.user, ) production.delete() messages.success(request, "'%s' deleted" % production.title) return HttpResponseRedirect(reverse("productions")) else: return HttpResponseRedirect(production.get_absolute_url()) else: return simple_ajax_confirmation( request, reverse("delete_production", args=[production_id]), "Are you sure you want to delete '%s'?" % production.title, html_title="Deleting %s" % production.title, )
def delete(request, bbs_id): bbs = get_object_or_404(BBS, id=bbs_id) if not request.user.is_staff: return redirect('bbs', bbs.id) if request.method == 'POST': if request.POST.get('yes'): # insert log entry before actually deleting, so that it doesn't try to # insert a null ID for the focus field Edit.objects.create(action_type='delete_bbs', focus=bbs, description=(u"Deleted BBS '%s'" % bbs.name), user=request.user) bbs.delete() messages.success(request, "BBS '%s' deleted" % bbs.name) return redirect('bbses') else: return redirect('bbs', bbs.id) else: return simple_ajax_confirmation(request, reverse('delete_bbs', args=[bbs.id]), "Are you sure you want to delete %s?" % bbs.name, html_title="Deleting %s" % bbs.name)
def delete(request, releaser_id): releaser = get_object_or_404(Releaser, id=releaser_id) if not request.user.is_staff: return HttpResponseRedirect(releaser.get_absolute_edit_url()) if request.method == 'POST': if request.POST.get('yes'): # insert log entry before actually deleting, so that it doesn't try to # insert a null ID for the focus field if releaser.is_group: Edit.objects.create(action_type='delete_group', focus=releaser, description=(u"Deleted group '%s'" % releaser.name), user=request.user) else: Edit.objects.create(action_type='delete_scener', focus=releaser, description=(u"Deleted scener '%s'" % releaser.name), user=request.user) releaser.delete() messages.success(request, "'%s' deleted" % releaser.name) if releaser.is_group: return HttpResponseRedirect(reverse('groups')) else: return HttpResponseRedirect(reverse('sceners')) else: return HttpResponseRedirect(releaser.get_absolute_edit_url()) else: return simple_ajax_confirmation(request, reverse('delete_releaser', args=[releaser_id]), "Are you sure you want to delete %s?" % releaser.name, html_title="Deleting %s" % releaser.name)
def convert_to_scener(request, group_id): group = get_object_or_404(Releaser, is_group=True, id=group_id) if not request.user.is_staff or not group.can_be_converted_to_scener(): return HttpResponseRedirect(group.get_absolute_edit_url()) if request.method == 'POST': if request.POST.get('yes'): group.is_group = False group.updated_at = datetime.datetime.now() group.save() for nick in group.nicks.all(): # sceners do not have specific 'abbreviation' fields on their nicks if nick.abbreviation: nick.abbreviation = '' nick.save() Edit.objects.create( action_type='convert_to_scener', focus=group, description=(u"Converted %s from a group to a scener" % group), user=request.user) return HttpResponseRedirect(group.get_absolute_edit_url()) else: return simple_ajax_confirmation( request, reverse('group_convert_to_scener', args=[group_id]), "Are you sure you want to convert %s into a scener?" % (group.name), html_title="Converting %s to a scener" % (group.name))
def delete_nick(request, releaser_id, nick_id): releaser = get_object_or_404(Releaser, id=releaser_id) nick = get_object_or_404(Nick, releaser=releaser, id=nick_id) if nick.is_primary_nick(): # not allowed to delete primary nick return HttpResponseRedirect(releaser.get_absolute_edit_url()) if request.method == 'POST': if request.POST.get('yes'): nick.reassign_references_and_delete() releaser.updated_at = datetime.datetime.now() releaser.save() Edit.objects.create(action_type='delete_nick', focus=releaser, description=(u"Deleted nick '%s'" % nick.name), user=request.user) return HttpResponseRedirect(releaser.get_absolute_edit_url() + "?editing=nicks") else: if nick.is_referenced(): prompt = """ Are you sure you want to delete %s's alternative name '%s'? This will cause all releases under the name '%s' to be reassigned back to '%s'. """ % (releaser.name, nick.name, nick.name, releaser.name) else: prompt = "Are you sure you want to delete %s's alternative name '%s'?" % (releaser.name, nick.name) return simple_ajax_confirmation(request, reverse('releaser_delete_nick', args=[releaser_id, nick_id]), prompt, html_title="Deleting name: %s" % nick.name)
def delete_credit(request, releaser_id, nick_id, production_id): releaser = get_object_or_404(Releaser, id=releaser_id) nick = get_object_or_404(Nick, releaser=releaser, id=nick_id) production = get_object_or_404(Production, id=production_id) if not releaser.editable_by_user(request.user): raise PermissionDenied if request.method == 'POST': if request.POST.get('yes'): credits = Credit.objects.filter(nick=nick, production=production) if credits: credits.delete() releaser.updated_at = datetime.datetime.now() releaser.save() production.updated_at = datetime.datetime.now() production.has_bonafide_edits = True production.save() Edit.objects.create(action_type='delete_credit', focus=production, focus2=releaser, description=(u"Deleted %s's credit on %s" % (nick, production)), user=request.user) return HttpResponseRedirect(releaser.get_absolute_edit_url()) else: return simple_ajax_confirmation( request, reverse('releaser_delete_credit', args=[releaser_id, nick_id, production_id]), "Are you sure you want to delete %s's credit from %s?" % (nick.name, production.title), html_title="Deleting %s's credit from %s" % (nick.name, production.title))
def get(self, request, *args, **kwargs): commentable_name = self.get_commentable_name(self.commentable) return simple_ajax_confirmation( request, reverse(self.url_name, args=[self.commentable.id, self.comment.id]), "Are you sure you want to delete this comment?", html_title="Deleting comment on %s" % commentable_name)
def delete_production_comment(request, production_id, comment_id): production = get_object_or_404(Production, id=production_id) comment = get_object_or_404(ProductionComment, id=comment_id, production=production) if not request.user.is_staff: return redirect(production.get_absolute_url() + ('#comment-%d' % comment.id)) if request.method == 'POST': if request.POST.get('yes'): comment.delete() return redirect(production.get_absolute_url()) else: return simple_ajax_confirmation(request, reverse('delete_production_comment', args=[production_id, comment_id]), "Are you sure you want to delete this comment?", html_title="Deleting comment on %s" % production.title)
def remove_organiser(request, party_id, organiser_id): party = get_object_or_404(Party, id=party_id) organiser = get_object_or_404(Organiser, party=party, id=organiser_id) if request.method == 'POST': if request.POST.get('yes'): organiser.delete() description = u"Removed %s as organiser of %s" % (organiser.releaser.name, party.name) Edit.objects.create(action_type='remove_party_organiser', focus=organiser.releaser, focus2=party, description=description, user=request.user) return HttpResponseRedirect(party.get_absolute_edit_url() + "?editing=organisers") else: return simple_ajax_confirmation(request, reverse('party_remove_organiser', args=[party_id, organiser_id]), "Are you sure you want to remove %s as organiser of %s?" % (organiser.releaser.name, party.name), html_title="Removing %s as organiser of %s" % (organiser.releaser.name, party.name))
def remove_subgroup(request, group_id, subgroup_id): group = get_object_or_404(Releaser, is_group=True, id=group_id) subgroup = get_object_or_404(Releaser, is_group=True, id=subgroup_id) if request.method == 'POST': if request.POST.get('yes'): group.member_memberships.filter(member=subgroup).delete() group.updated_at = datetime.datetime.now() group.save() description = u"Removed %s as a subgroup of %s" % (subgroup.name, group.name) Edit.objects.create(action_type='remove_membership', focus=subgroup, focus2=group, description=description, user=request.user) return HttpResponseRedirect(group.get_absolute_edit_url() + "?editing=subgroups") else: return simple_ajax_confirmation(request, reverse('group_remove_subgroup', args=[group_id, subgroup_id]), "Are you sure you want to remove %s as a subgroup of %s?" % (subgroup.name, group.name), html_title="Removing %s from %s" % (subgroup.name, group.name))
def delete_blurb(request, production_id, blurb_id): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) blurb = get_object_or_404(ProductionBlurb, production=production, id=blurb_id) if request.method == 'POST': if request.POST.get('yes'): blurb.delete() Edit.objects.create(action_type='delete_production_blurb', focus=production, description="Deleted blurb", user=request.user, admin_only=True) return HttpResponseRedirect(production.get_absolute_url()) else: return simple_ajax_confirmation(request, reverse('production_delete_blurb', args=[production_id, blurb_id]), "Are you sure you want to delete this blurb?", html_title="Deleting blurb for %s" % production.title)
def convert_to_group(request, scener_id): scener = get_object_or_404(Releaser, is_group=False, id=scener_id) if not request.user.is_staff or not scener.can_be_converted_to_group(): return HttpResponseRedirect(scener.get_absolute_edit_url()) if request.method == 'POST': if request.POST.get('yes'): scener.is_group = True scener.updated_at = datetime.datetime.now() scener.save() Edit.objects.create(action_type='convert_to_group', focus=scener, description=(u"Converted %s from a scener to a group" % scener), user=request.user) return HttpResponseRedirect(scener.get_absolute_edit_url()) else: return simple_ajax_confirmation(request, reverse('scener_convert_to_group', args=[scener_id]), "Are you sure you want to convert %s into a group?" % (scener.name), html_title="Converting %s to a group" % (scener.name))
def delete_banner(request, banner_id): if not request.user.has_perm('homepage.delete_banner'): return redirect('home') banner = get_object_or_404(Banner, id=banner_id) if request.method == 'POST': if request.POST.get('yes'): banner.delete() messages.success(request, "Banner deleted") return redirect('home') else: return redirect('edit_banner', banner_id) else: return simple_ajax_confirmation(request, reverse('delete_banner', args=[banner_id]), "Are you sure you want to delete this banner?", html_title="Deleting banner: %s" % banner.title)
def delete_news(request, news_story_id): if not request.user.has_perm('homepage.delete_newsstory'): return redirect('home') news_story = get_object_or_404(NewsStory, id=news_story_id) if request.method == 'POST': if request.POST.get('yes'): news_story.delete() messages.success(request, "News story deleted") return redirect('home') else: return redirect('edit_news', news_story_id) else: return simple_ajax_confirmation(request, reverse('delete_news', args=[news_story_id]), "Are you sure you want to delete this news story?", html_title="Deleting news story: %s" % news_story.title)
def delete(request, production_id): production = get_object_or_404(Production, id=production_id) if not request.user.is_staff: return HttpResponseRedirect(production.get_absolute_url()) if request.method == 'POST': if request.POST.get('yes'): # insert log entry before actually deleting, so that it doesn't try to # insert a null ID for the focus field Edit.objects.create(action_type='delete_production', focus=production, description=(u"Deleted production '%s'" % production.title), user=request.user) production.delete() messages.success(request, "'%s' deleted" % production.title) return HttpResponseRedirect(reverse('productions')) else: return HttpResponseRedirect(production.get_absolute_url()) else: return simple_ajax_confirmation(request, reverse('delete_production', args=[production_id]), "Are you sure you want to delete '%s'?" % production.title, html_title="Deleting %s" % production.title)
def delete_credit(request, releaser_id, nick_id, production_id): releaser = get_object_or_404(Releaser, id=releaser_id) nick = get_object_or_404(Nick, releaser=releaser, id=nick_id) production = get_object_or_404(Production, id=production_id) if request.method == 'POST': if request.POST.get('yes'): credits = Credit.objects.filter(nick=nick, production=production) if credits: credits.delete() releaser.updated_at = datetime.datetime.now() releaser.save() production.updated_at = datetime.datetime.now() production.has_bonafide_edits = True production.save() Edit.objects.create(action_type='delete_credit', focus=production, focus2=releaser, description=(u"Deleted %s's credit on %s" % (nick, production)), user=request.user) return HttpResponseRedirect(releaser.get_absolute_edit_url()) else: return simple_ajax_confirmation(request, reverse('releaser_delete_credit', args=[releaser_id, nick_id, production_id]), "Are you sure you want to delete %s's credit from %s?" % (nick.name, production.title), html_title="Deleting %s's credit from %s" % (nick.name, production.title))
def convert_to_scener(request, group_id): group = get_object_or_404(Releaser, is_group=True, id=group_id) if not request.user.is_staff or not group.can_be_converted_to_scener(): return HttpResponseRedirect(group.get_absolute_edit_url()) if request.method == 'POST': if request.POST.get('yes'): group.is_group = False group.updated_at = datetime.datetime.now() group.save() for nick in group.nicks.all(): # sceners do not have specific 'abbreviation' fields on their nicks if nick.abbreviation: nick.abbreviation = '' nick.save() Edit.objects.create(action_type='convert_to_scener', focus=group, description=(u"Converted %s from a group to a scener" % group), user=request.user) return HttpResponseRedirect(group.get_absolute_edit_url()) else: return simple_ajax_confirmation(request, reverse('group_convert_to_scener', args=[group_id]), "Are you sure you want to convert %s into a scener?" % (group.name), html_title="Converting %s to a scener" % (group.name))
def remove_affiliation(request, bbs_id, affiliation_id): bbs = get_object_or_404(BBS, id=bbs_id) affiliation = get_object_or_404(Affiliation, bbs=bbs, id=affiliation_id) if request.method == 'POST': if request.POST.get('yes'): affiliation.delete() description = u"Removed %s's affiliation with %s" % ( affiliation.group.name, bbs.name) Edit.objects.create(action_type='remove_bbs_affiliation', focus=affiliation.group, focus2=bbs, description=description, user=request.user) return HttpResponseRedirect(bbs.get_absolute_edit_url() + "?editing=affiliations") else: return simple_ajax_confirmation( request, reverse('bbs_remove_affiliation', args=[bbs_id, affiliation_id]), "Are you sure you want to remove %s's affiliation with %s?" % (affiliation.group.name, bbs.name), html_title="Removing %s's affiliation with %s" % (affiliation.group.name, bbs.name))
def remove_operator(request, bbs_id, operator_id): bbs = get_object_or_404(BBS, id=bbs_id) operator = get_object_or_404(Operator, bbs=bbs, id=operator_id) if request.method == 'POST': if request.POST.get('yes'): operator.delete() description = u"Removed %s as staff member of %s" % ( operator.releaser.name, bbs.name) Edit.objects.create(action_type='remove_bbs_operator', focus=operator.releaser, focus2=bbs, description=description, user=request.user) return HttpResponseRedirect(bbs.get_absolute_edit_url() + "?editing=staff") else: return simple_ajax_confirmation( request, reverse('bbs_remove_operator', args=[bbs_id, operator_id]), "Are you sure you want to remove %s as staff member of %s?" % (operator.releaser.name, bbs.name), html_title="Removing %s as staff member of %s" % (operator.releaser.name, bbs.name))
def get(self, request, *args, **kwargs): commentable_name = self.get_commentable_name(self.commentable) return simple_ajax_confirmation(request, reverse(self.url_name, args=[self.commentable.id, self.comment.id]), "Are you sure you want to delete this comment?", html_title="Deleting comment on %s" % commentable_name)