making migdal more universal
[prawokultury.git] / prawokultury / model_helpers.py
1 from django.utils.translation import string_concat
2
3 def filtered_model(name, model, field, value, verbose_extra=None):
4     """Creates a proxy model filtering objects by a field."""
5     verbose_extra = verbose_extra or value
6     class  Meta:
7         proxy = True
8         app_label = model._meta.app_label
9         verbose_name = string_concat(model._meta.verbose_name,
10             ': ', verbose_extra)
11         verbose_name_plural = string_concat(model._meta.verbose_name_plural,
12             ': ', verbose_extra)
13
14     def save(self, *args, **kwargs):
15         if not getattr(self, field):
16             setattr(self, field, value)
17         return model.save(self, *args, **kwargs)
18
19     attrs = {'__module__': '', 'Meta': Meta, 'save': save}
20     return type(name, (model,), attrs)