# coding: utf-8 from django.db import models from django.core.urlresolvers import reverse from django.utils.functional import cached_property import sirtrevor from sirtrevor.fields import SirTrevorField from ordered_model.models import OrderedModel from tools.fields import CustomImageField from tools.models import TimeStampModel, PublishedModel, upload_to from .blocks import ExtendedQuotes sirtrevor.register_block(ExtendedQuotes) class AbstractArticle(TimeStampModel, PublishedModel): """ Абстрактная модель для Статей и Ликбеза. """ title = models.CharField(max_length=128, verbose_name=u'Заголовок') anons = SirTrevorField(verbose_name=u'Анонс (лид)') content = SirTrevorField(verbose_name=u'Тело статьи') image = CustomImageField(allowed=('jpeg', 'jpg', 'png'), upload_to=upload_to, verbose_name=u'Изображение') class Meta: abstract = True def __unicode__(self): return unicode(self.title)
# -*- coding: utf-8 -*- import sirtrevor from .blocks import FileBlock sirtrevor.register_block(FileBlock)
def password_errors(password): """Validates a given string against required password params. This is required in order to maintain FISMA compliance.""" # Set up an errors array to capture things we find errors = [] password = password or "" # account for Nones # Defines special characters we allow # TODO: I guess this could be a regex instead, I just typed all the # chars on my keyboard :) valid_special_chars = set('~`!@#$%^&*()-_=+[{]}\|;:'",<.>/?/*-.+") if not password: errors.append('Password cannot be blank.') if not any(x.isupper() for x in password): errors.append('Password needs at least one uppercase letter.') if not any(x.islower() for x in password): errors.append('Password needs at least one lowercase letter.') if not any(x.isdigit() for x in password): errors.append('Password needs at least one number.') if not any((x in valid_special_chars) for x in password): errors.append('Password needs a special character.') if not len(password) >= 20: errors.append('Password must be at least 20 characters in length.') return errors sirtrevor.register_block(ButtonBlock) sirtrevor.register_block(Image508Block)