add core app

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 8c737b2853
commit bb67cd3461
  1. 0
      core/__init__.py
  2. 3
      core/admin.py
  3. 5
      core/apps.py
  4. 0
      core/context_processors.py
  5. 0
      core/management/__init__.py
  6. 0
      core/management/commands/__init__.py
  7. 7
      core/management/commands/clearcache.py
  8. 83
      core/models.py
  9. 3
      core/tests.py
  10. 8
      core/views.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,5 @@
from django.apps import AppConfig
class CoreConfig(AppConfig):
name = 'core'

@ -0,0 +1,7 @@
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
def handle(self, *args, **kwargs):
cache.clear()
self.stdout.write('Cleared cache\n')

@ -0,0 +1,83 @@
from django.conf import settings
from django.contrib.auth.base_user import BaseUserManager
from django.utils.translation import ugettext_lazy as _
from django.db import models
# Create your models here.
STATUS_NEW = 0
STATUS_ACTIVE = 25
STATUS_DELETED = 50
STATUS_DEFAULT = STATUS_NEW
STATUS_CHOICES = (
(STATUS_NEW, _('New')),
(STATUS_ACTIVE, _('Active')),
(STATUS_DELETED, _('Deleted')),
)
class ActualOnlyManager(models.Manager):
def get_queryset(self):
queryset = super().get_queryset()
if not settings.DEBUG:
queryset = queryset.exclude(status=STATUS_DELETED)
return queryset
class ActiveOnlyManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status=STATUS_ACTIVE)
class DeletedManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status=STATUS_DELETED)
class AbstractDateTimeModel(models.Model):
create_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class AbstractStatusModel(AbstractDateTimeModel):
status = models.SmallIntegerField(default=STATUS_DEFAULT, choices=STATUS_CHOICES)
objects = ActualOnlyManager()
deleted = DeletedManager()
active = ActiveOnlyManager()
@property
def is_active(self):
return self.status == STATUS_ACTIVE
@is_active.setter
def is_active(self, value):
if value:
self.status = STATUS_ACTIVE
else:
self.status = STATUS_DEFAULT
def delete(self, using=None, keep_parents=False):
self.status = STATUS_DELETED
self.save(using=using)
def delete_from_base(self, using=None, keep_parents=False):
return super().delete(using, keep_parents)
class Meta:
abstract = True
class CaseInsensitiveQuerySet(models.QuerySet):
CASE_INSENSITIVE_FIELDS = ('email',)
def _filter_or_exclude(self, negate, *args, **kwargs):
for field in self.CASE_INSENSITIVE_FIELDS:
if field in kwargs:
kwargs[field + '__iexact'] = kwargs[field]
del kwargs[field]
return super()._filter_or_exclude(negate, *args, **kwargs)

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,8 @@
from django.contrib.auth.mixins import LoginRequiredMixin
# Create your views here.
from django.views.generic import TemplateView
class ProtectedView(LoginRequiredMixin, TemplateView):
pass
Loading…
Cancel
Save