8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-23 11:53:12 +00:00

Commande manage pour supprimer les users pas encore actifs

This commit is contained in:
detraz 2018-10-11 15:15:16 +02:00 committed by chirac
parent 3c14729cc0
commit 40eb6f146c
6 changed files with 83 additions and 1 deletions

View file

@ -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'),
),
]

View file

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

View file

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

View file

@ -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()

View file

@ -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),
),
]

View file

@ -1568,7 +1568,7 @@ class Request(models.Model):
) )
type = models.CharField(max_length=2, choices=TYPE_CHOICES) type = models.CharField(max_length=2, choices=TYPE_CHOICES)
token = models.CharField(max_length=32) 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) created_at = models.DateTimeField(auto_now_add=True, editable=False)
expires_at = models.DateTimeField() expires_at = models.DateTimeField()