pollmergehandler.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.utils.translation import gettext as _
  2. from ...models import Poll
  3. class PollMergeHandler(object):
  4. def __init__(self, threads):
  5. self._list = []
  6. self._choices = {0: None}
  7. self._is_valid = False
  8. self._resolution = None
  9. self.threads = threads
  10. for thread in threads:
  11. try:
  12. self._list.append(thread.poll)
  13. self._choices[thread.poll.pk] = thread.poll
  14. except Poll.DoesNotExist:
  15. pass
  16. @property
  17. def polls(self):
  18. return self._list
  19. def is_merge_conflict(self):
  20. return len(self._list) > 1
  21. def get_available_resolutions(self):
  22. resolutions = [(0, _("Delete all polls"))]
  23. for poll in self._list:
  24. resolutions.append((poll.pk, poll.question))
  25. return resolutions
  26. def set_resolution(self, resolution):
  27. try:
  28. resolution_clean = int(resolution)
  29. except (TypeError, ValueError):
  30. return
  31. if resolution_clean in self._choices:
  32. self._resolution = self._choices[resolution_clean]
  33. self._is_valid = True
  34. def is_valid(self):
  35. return self._is_valid
  36. def get_resolution(self):
  37. return self._resolution or None