Browse Source

Commande manage pour supprimer les users pas encore actifs

docker_basic_support
detraz 7 years ago
committed by chirac
parent
commit
40eb6f146c
  1. 20
      preferences/migrations/0052_optionaluser_delete_notyetactive.py
  2. 4
      preferences/models.py
  3. 2
      preferences/templates/preferences/display_preferences.html
  4. 34
      users/management/commands/clean_notyetactive.py
  5. 22
      users/migrations/0078_auto_20181011_1405.py
  6. 2
      users/models.py

20
preferences/migrations/0052_optionaluser_delete_notyetactive.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-10-11 12:51
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('preferences', '0051_auto_20180919_2225'),
]
operations = [
migrations.AddField(
model_name='optionaluser',
name='delete_notyetactive',
field=models.IntegerField(default=15, help_text='Inactive users will be deleted after this number of days'),
),
]

4
preferences/models.py

@ -107,6 +107,10 @@ class OptionalUser(AclMixin, PreferencesModel):
help_text=_("Maximum number of local email addresses for a standard"
" user")
)
delete_notyetactive = models.IntegerField(
default=15,
help_text=_("Inactive users will be deleted after this number of days")
)
class Meta:
permissions = (

2
preferences/templates/preferences/display_preferences.html

@ -58,6 +58,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<tr>
<th>{% trans "GPG fingerprint field" %}</th>
<td>{{ useroptions.gpg_fingerprint|tick }}</td>
<th>{% trans "Delete not yet active users after" %}</th>
<td>{{ useroptions.delete_notyetactive }} days</td>
</tr>
</table>
<h5>{% trans "Email accounts preferences" %}

34
users/management/commands/clean_notyetactive.py

@ -0,0 +1,34 @@
# Copyright © 2017 Gabriel Détraz
# Copyright © 2017 Goulven Kermarec
# Copyright © 2017 Augustin Lemesle
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from django.core.management.base import BaseCommand, CommandError
from users.models import User
from preferences.models import OptionalUser
from datetime import timedelta
from django.utils import timezone
class Command(BaseCommand):
help = "Delete non members users (not yet active)"
def handle(self, *args, **options):
days = OptionalUser.get_cached_value('delete_notyetactive')
users = User.objects.filter(state=User.STATE_NOT_YET_ACTIVE).filter(registered__lte=timezone.now() - timedelta(days=days))
print("Deleting " + str(users.count()) + " users")
users.delete()

22
users/migrations/0078_auto_20181011_1405.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-10-11 12:05
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('users', '0077_auto_20180824_1750'),
]
operations = [
migrations.AlterField(
model_name='request',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]

2
users/models.py

@ -1568,7 +1568,7 @@ class Request(models.Model):
)
type = models.CharField(max_length=2, choices=TYPE_CHOICES)
token = models.CharField(max_length=32)
user = models.ForeignKey('User', on_delete=models.PROTECT)
user = models.ForeignKey('User', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
expires_at = models.DateTimeField()

Loading…
Cancel
Save