datadownloads.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from django.contrib import messages
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.admin.views import generic
  4. from misago.users.datadownloads import (
  5. expire_user_data_download, request_user_data_download, user_has_data_download_request)
  6. from misago.users.forms.admin import RequestDataDownloadsForm, SearchDataDownloadsForm
  7. from misago.users.models import DataDownload
  8. class DataDownloadAdmin(generic.AdminBaseMixin):
  9. root_link = 'misago:admin:users:data-downloads:index'
  10. templates_dir = 'misago/admin/datadownloads'
  11. model = DataDownload
  12. class DataDownloadsList(DataDownloadAdmin, generic.ListView):
  13. items_per_page = 30
  14. ordering = [
  15. ('-id', _("From newest")),
  16. ('id', _("From oldest")),
  17. ]
  18. selection_label = _('With data downloads: 0')
  19. empty_selection_label = _('Select data downloads')
  20. mass_actions = [
  21. {
  22. 'action': 'expire',
  23. 'name': _("Expire downloads"),
  24. 'icon': 'fa fa-ban',
  25. 'confirmation': _("Are you sure you want to set selected data downloads as expired?"),
  26. },
  27. {
  28. 'action': 'delete',
  29. 'name': _("Delete downloads"),
  30. 'icon': 'fa fa-times-circle',
  31. 'confirmation': _("Are you sure you want to delete selected data downloads?"),
  32. },
  33. ]
  34. def get_queryset(self):
  35. qs = super(DataDownloadsList, self).get_queryset()
  36. return qs.select_related('user', 'requester')
  37. def get_search_form(self, request):
  38. return SearchDataDownloadsForm
  39. def action_expire(self, request, data_downloads):
  40. for data_download in data_downloads:
  41. expire_user_data_download(data_download)
  42. messages.success(request, _("Selected data downloads have been set as expired."))
  43. def action_delete(self, request, data_downloads):
  44. for data_download in data_downloads:
  45. data_download.delete()
  46. messages.success(request, _("Selected data downloads have been deleted."))
  47. class RequestDataDownloads(DataDownloadAdmin, generic.FormView):
  48. form = RequestDataDownloadsForm
  49. def handle_form(self, form, request):
  50. for user in form.cleaned_data['users']:
  51. if not user_has_data_download_request(user):
  52. request_user_data_download(user, requester=request.user)
  53. messages.success(request, _("Data downloads have been requested for specified users."))