delete.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. {% extends "misago/admin/generic/form.html" %}
  2. {% load i18n misago_avatars misago_capture misago_forms %}
  3. {% block title %}
  4. {% trans "Delete users with content" %} | {{ active_link.name }} | {{ block.super }}
  5. {% endblock title %}
  6. {% block page-target %}
  7. {% trans "Delete users with content" %}
  8. {% endblock page-target %}
  9. {% block form-header %}
  10. <h1>
  11. {% trans "Deleting users..." %}
  12. </h1>
  13. {% endblock %}
  14. {% block form-body %}
  15. <div class="form-body">
  16. {% for user in users %}
  17. <fieldset class="user queued">
  18. <legend>{{ user.username }}</legend>
  19. <div class="extra-padding">
  20. <ul class="list-unstyled">
  21. <li class="step queued" data-url="{% url 'misago:admin:users:accounts:delete_threads' user_id=user.id %}" data-total="{{ user.thread_set.count }}">
  22. <span class="fa fa-clock-o fa-fw text-muted"></span>
  23. {% trans "Threads" %}: <strong><em class="text-muted">{% trans "queued" %}</em></strong>
  24. </li>
  25. <li class="step queued" data-url="{% url 'misago:admin:users:accounts:delete_posts' user_id=user.id %}" data-total="{{ user.post_set.count }}">
  26. <span class="fa fa-clock-o fa-fw text-muted"></span>
  27. {% trans "Posts" %}: <strong><em class="text-muted">{% trans "queued" %}</em></strong>
  28. </li>
  29. <li class="step queued" data-url="{% url 'misago:admin:users:accounts:delete_account' user_id=user.id %}">
  30. <span class="fa fa-clock-o fa-fw text-muted"></span>
  31. {% trans "Account" %}: <strong><em class="text-muted">{% trans "queued" %}</em></strong>
  32. </li>
  33. </ul>
  34. </div>
  35. </fieldset>
  36. {% endfor %}
  37. </div>
  38. {% endblock form-body %}
  39. {% block form-footer %}{% endblock form-footer %}
  40. {% block javascripts %}
  41. <script type="text/javascript">
  42. $(function() {
  43. DeletionController = function($e, on_complete) {
  44. this.lang_deleting = "{% trans "deleting..." %}";
  45. this.done = "{% trans "done" %}";
  46. this.$e = $e;
  47. this.on_complete = on_complete;
  48. this.form_data = $e.parents('form').serialize();
  49. var _this = this;
  50. this.step = function($step) {
  51. var url = $step.data('url');
  52. var total = $step.data('total');
  53. var $icon = $step.find('.fa');
  54. var $label = $step.find('strong');
  55. var processed = 0;
  56. $icon.attr('class', 'fa fa-cog fa-spin fa-fw text-danger');
  57. $label.html(this.lang_deleting);
  58. function query_server() {
  59. $.post(url, _this.form_data, function(data) {
  60. if (data.is_completed) {
  61. $icon.attr('class', 'fa fa-check fa-fw text-success');
  62. $label.html(_this.done);
  63. $step.removeClass('queued');
  64. _this.process();
  65. } else {
  66. if (total !== undefined && total > 0) {
  67. processed += data.deleted_count;
  68. progress = Math.round(processed * 100 / total);
  69. if (progress > 100) {
  70. progress = 100;
  71. }
  72. $label.html(_this.lang_deleting + " " + progress + "%");
  73. }
  74. query_server();
  75. }
  76. });
  77. }
  78. query_server();
  79. }
  80. this.complete = function() {
  81. this.$e.removeClass('queued');
  82. on_complete();
  83. }
  84. this.process = function() {
  85. var $step = this.$e.find('.step.queued').first();
  86. if ($step.length) {
  87. this.step($step);
  88. } else {
  89. this.complete();
  90. }
  91. }
  92. this.process();
  93. };
  94. function delete_user() {
  95. var $user = $('.user.queued').first();
  96. if ($user.length) {
  97. var controller = new DeletionController($user, delete_user);
  98. } else {
  99. var $form = $('.user').first().parents('form');
  100. var $btn = $form.find('.btn-default');
  101. $btn.text("{% trans "Return to list of users" %}");
  102. $btn.attr('class', 'btn btn-success');
  103. }
  104. }
  105. delete_user();
  106. });
  107. </script>
  108. {% endblock %}