12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from django.utils.translation import gettext as _
- from misago.threads.models import Poll
- class PollMergeHandler(object):
- def __init__(self, threads):
- self._list = []
- self._choices = {0: None}
- self._is_valid = False
- self._resolution = None
- self.threads = threads
- for thread in threads:
- try:
- self._list.append(thread.poll)
- self._choices[thread.poll.pk] = thread.poll
- except Poll.DoesNotExist:
- pass
- self._list.sort(key=lambda choice: choice.thread_id)
- @property
- def polls(self):
- return self._list
- def is_merge_conflict(self):
- return len(self._list) > 1
- def get_available_resolutions(self):
- resolutions = [(0, _("Delete all polls"))]
- for poll in self._list:
- resolutions.append((poll.pk, poll.question))
- return resolutions
- def set_resolution(self, resolution):
- try:
- resolution_clean = int(resolution)
- except (TypeError, ValueError):
- return
- if resolution_clean in self._choices:
- self._resolution = self._choices[resolution_clean]
- self._is_valid = True
- def is_valid(self):
- return self._is_valid
- def get_resolution(self):
- return self._resolution or None
|