def Initialize(klass): """ @summary: B{_apply} takes a list of models and to each model it: 1. adds B{ActionTarget} as a base class (in I{__bases__}) to provide a common interface to the models; 2. assigns an instance of ActionTargetManager to I{actions} which limits the scope to within a single model 3. registers listeners to call methods in L{Log} regarding events on subclassed models; specifically: 1. L{Log.log_save} is called before a row is saved 2. L{Log.log_create} is called after a row is created 3. L{Log.log_delete} is called before a row is deleted (this should not happen.) @return: None @rtype: NoneType """ if not isinstance(klasses, (list, tuple)): klasses = (klasses,) for model in klasses: ACTING_MODELS.append(model) model_utils.mixin(ActionMixin, model) for model_class in Action.ACTING_MODELS: models.signals.post_save.connect(Action.on_create, sender=model_class) models.signals.pre_delete.connect(Action.on_delete, sender=model_class)
def InitializeModels(klasses): """ @summary: Mixes the textful fields (title, summary, description) and LinkMixin methods into the specified model """ if not isinstance(klasses, (list, tuple)): klasses = (klasses,) for model in klasses: model_utils.mixin(LinkMixin, model)
def InitializeModels(klasses): """ @summary: Mixes the Vote and TotalVote mixins into the classes in klasses. @param klasses: may be a single class or list of classes """ if not isinstance(klasses, (list, tuple)): klasses = (klasses,) for model in klasses: VOTABLE_MODELS.append(model) model_utils.mixin(VoteMixin, model) model_utils.mixin(TotalVoteMixin, model)
def InitializeModels(klasses): """ @summary: Mixes the textful fields (title, summary, description) and LinkMixin methods into the specified model """ if not isinstance(klasses, (list, tuple)): klasses = (klasses,) for model in klasses: model.add_to_class('title', django_models.CharField(max_length=255)) model.add_to_class('slug', django_models.SlugField()) model.add_to_class('summary', django_models.TextField(blank=True)) model.add_to_class('description', django_models.TextField(blank=True)) # TODO markdown, ReST, textile choice model.add_to_class('links', django_models.ManyToManyField(Link, blank=True, null=True)) if not hasattr(model, 'admin_options'): model.add_to_class('admin_options', {}) model.admin_options.update({ 'prepopulated_fields': {'slug': ('title','summary') } }) model_utils.mixin(LinkMixin, model)
def Initialize(klass): model_utils.mixin(FPSMultiuseCancelTokenMixin, User)
def Initialize(klass): model_utils.mixin(FPSMultiusePayMixin, User)
def Initialize(klass): """ @summary: Mixes the MeetingMixin class into TwitterUser """ model_utils.mixin(MeetingMixin, TwitterUser)
def Initialize(klass): model_utils.mixin(FPSRecipientMixin, Recipient)
def Initialize(klass): model_utils.mixin(LogMixin, User)
def Initialize(klass): models.signals.pre_save.connect(Theme.check_publishable, sender=Theme) model_utils.mixin(ThemeMixin, TwitterUser)
def Initialize(klass): model_utils.mixin(RecipientPaymentMixin, User) model_utils.mixin(RecipientPaymentMixin_R, Recipient)
def Initialize(klass): model_utils.mixin(MetaReportMixin, User) model_utils.mixin(MetaReportMixin_R, Recipient) models.signals.pre_save.connect(MetaReport.sanitize_user_input, sender=MetaReport)
def Initialize(klass): model_utils.mixin(ReportMixin, User)
def Initialize(klass): model_utils.mixin(RecipientVoteMixin, User)
from models import ALL_MODELS from lib import model_utils model_utils.mixin(model_utils.ModelMixin, ALL_MODELS) from lib.admins import Adminizer Adminizer.Adminize(ALL_MODELS) for model in ALL_MODELS: if hasattr(model, 'Initialize'): model.Initialize()
from django import template template.add_to_builtins("django.contrib.markup.templatetags.markup") from models import Link, LinkMixin from django.db import models as django_models ALL_MODELS = [Link] from lib import model_utils model_utils.mixin(model_utils.ModelMixin, ALL_MODELS) from lib.admins import Adminizer Adminizer.Adminize(ALL_MODELS) LINKABLE_MODELS = [] def InitializeModels(klasses): """ @summary: Mixes the textful fields (title, summary, description) and LinkMixin methods into the specified model """ if not isinstance(klasses, (list, tuple)): klasses = (klasses,) for model in klasses: model.add_to_class('title', django_models.CharField(max_length=255)) model.add_to_class('slug', django_models.SlugField()) model.add_to_class('summary', django_models.TextField(blank=True)) model.add_to_class('description', django_models.TextField(blank=True)) # TODO markdown, ReST, textile choice model.add_to_class('links', django_models.ManyToManyField(Link, blank=True, null=True)) if not hasattr(model, 'admin_options'): model.add_to_class('admin_options', {})
def Initialize(klass): model_utils.mixin(WeddingUserTaggingMixin, Wedding)