parent
77a0bb26e8
commit
bd94c0977f
3 changed files with 65 additions and 2 deletions
@ -0,0 +1,23 @@ |
||||
# Generated by Django 2.0.2 on 2018-02-13 09:06 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('course', '0030_auto_20180212_0537'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='course', |
||||
name='deactivated_at', |
||||
field=models.DateTimeField(blank=True, default=None, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='lesson', |
||||
name='deactivated_at', |
||||
field=models.DateTimeField(blank=True, default=None, null=True), |
||||
), |
||||
] |
||||
@ -0,0 +1,38 @@ |
||||
from django.db import models |
||||
from django.utils import timezone |
||||
|
||||
|
||||
class BaseModel(models.Model): |
||||
|
||||
class Meta: |
||||
abstract = True |
||||
|
||||
|
||||
class DeactivatedQueryset(models.Manager): |
||||
|
||||
def allow_delete(self): |
||||
super().delete() |
||||
|
||||
def delete(self): |
||||
count = self.count() |
||||
self.filter(deactivated_at__isnull=True).update( |
||||
deactivated_at=timezone.now() |
||||
) |
||||
return (count, None) |
||||
|
||||
|
||||
class DeactivatedMixin(models.Model): |
||||
deactivated_at = models.DateTimeField(null=True, blank=True, default=None) |
||||
|
||||
objects = DeactivatedQueryset() |
||||
|
||||
class Meta: |
||||
abstract = True |
||||
|
||||
def allow_delete(self, using=None, keep_parents=False): |
||||
super().delete(using=using, keep_parents=keep_parents) |
||||
|
||||
def delete(self, using=None, keep_parents=False): |
||||
if not self.deactivated_at: |
||||
self.deactivated_at = timezone.now() |
||||
self.save() |
||||
Loading…
Reference in new issue