Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create ticket revisions for open/close/upvote/downvote #306

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions judge/admin/ticket.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from django.contrib.admin import ModelAdmin
from django.contrib.admin.options import StackedInline
from django.forms import ModelForm
from django.urls import reverse_lazy
from reversion.admin import VersionAdmin

from judge.models import TicketMessage
from judge.utils.views import NoBatchDeleteMixin
from judge.widgets import AdminHeavySelect2MultipleWidget, AdminHeavySelect2Widget, AdminMartorWidget


Expand All @@ -29,7 +30,7 @@ class Meta:
}


class TicketAdmin(ModelAdmin):
class TicketAdmin(NoBatchDeleteMixin, VersionAdmin):
fields = ('title', 'time', 'user', 'assignees', 'content_type', 'object_id', 'notes')
readonly_fields = ('time',)
list_display = ('title', 'user', 'time', 'linked_item')
Expand Down
1 change: 1 addition & 0 deletions judge/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@
revisions.register(Comment, fields=['author', 'time', 'page', 'score', 'body', 'hidden', 'parent'])
revisions.register(TagProblem)
revisions.register(TagData, follow=['problem'])
revisions.register(Ticket)
del revisions
19 changes: 13 additions & 6 deletions judge/views/ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from django.views.generic import ListView
from django.views.generic.detail import SingleObjectMixin
from django.views.generic.edit import FormView
from reversion import revisions

from judge import event_poster as event
from judge.models import GeneralIssue, Problem, Profile, Ticket, TicketMessage
Expand Down Expand Up @@ -208,8 +209,11 @@ def post(self, request, *args, **kwargs):
raise ImproperlyConfigured('Need to define open or contributive')
ticket = self.get_object()
if self.open is not None and ticket.is_open != self.open:
ticket.is_open = self.open
ticket.save()
with revisions.create_revision(atomic=True):
revisions.set_comment('Opened' if self.open else 'Closed')
revisions.set_user(self.request.user)
ticket.is_open = self.open
ticket.save()
if event.real:
event.post('tickets', {
'type': 'ticket-status', 'id': ticket.id,
Expand All @@ -224,10 +228,13 @@ def post(self, request, *args, **kwargs):
if self.contributive is not None and ticket.is_contributive != self.contributive:
if not request.user.has_perm('change_ticket') and self.request.profile == ticket.user:
return HttpResponseBadRequest(_('You cannot vote your own ticket.'), content_type='text/plain')
ticket.user.update_contribution_points(settings.VNOJ_CP_TICKET *
(self.contributive - ticket.is_contributive))
ticket.is_contributive = self.contributive
ticket.save()
with revisions.create_revision(atomic=True):
revisions.set_comment('Upvoted' if self.contributive else 'Downvoted')
revisions.set_user(self.request.user)
ticket.user.update_contribution_points(settings.VNOJ_CP_TICKET *
(self.contributive - ticket.is_contributive))
ticket.is_contributive = self.contributive
ticket.save()
return HttpResponse(status=204)


Expand Down