î
à^Q\·	  ã               @   sÖ   d  Z  d d l Z d d l m Z d d l m Z d d l m Z m	 Z	 m
 Z
 d d l m Z d d l m Z m Z m Z Gd d	 „  d	 e ƒ Z Gd
 d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d S)z?
Django Extensions abstract base mongoengine Document classes.
é    N)Úugettext_lazy)ÚDocument)ÚDateTimeFieldÚIntFieldÚStringField)ÚQuerySetManager)ÚAutoSlugFieldÚCreationDateTimeFieldÚModificationDateTimeFieldc               @   s;   e  Z d  Z d Z e ƒ  Z e ƒ  Z Gd d „  d ƒ Z d S)ÚTimeStampedModelzw TimeStampedModel
    An abstract base class model that provides self-managed "created" and
    "modified" fields.
    c               @   s   e  Z d  Z d Z d S)zTimeStampedModel.MetaTN)Ú__name__Ú
__module__Ú__qualname__Úabstract© r   r   úQ/var/www/dbchiro/venv/build/django-extensions/django_extensions/mongodb/models.pyÚMeta   s   r   N)	r   r   r   Ú__doc__r	   Úcreatedr
   Úmodifiedr   r   r   r   r   r      s   		r   c               @   s\   e  Z d  Z d Z e d d ƒ Z e d d ƒ Z e d d d d ƒ Z Gd	 d
 „  d
 ƒ Z	 d S)ÚTitleSlugDescriptionModelz® TitleSlugDescriptionModel
    An abstract base class model that provides title and description fields
    and a self-managed "slug" field that populates from the title.
    Ú
max_lengthéÿ   Zpopulate_fromÚtitleÚblankTÚnullc               @   s   e  Z d  Z d Z d S)zTitleSlugDescriptionModel.MetaTN)r   r   r   r   r   r   r   r   r   &   s   r   N)
r   r   r   r   r   r   r   ZslugÚdescriptionr   r   r   r   r   r      s
   r   c                   s:   e  Z d  Z d Z ‡  f d d †  Z ‡  f d d †  Z ‡  S)ÚActivatorModelManagerzw ActivatorModelManager
    Manager to return instances of ActivatorModel: SomeModel.objects.active() / .inactive()
    c                s   t  t |  ƒ j ƒ  j d d ƒ S)zH Returns active instances of ActivatorModel: SomeModel.objects.active() Ústatusé   )Úsuperr   Úget_querysetÚfilter)Úself)Ú	__class__r   r   Úactive.   s    zActivatorModelManager.activec                s   t  t |  ƒ j ƒ  j d d ƒ S)zL Returns inactive instances of ActivatorModel: SomeModel.objects.inactive() r   r   )r    r   r!   r"   )r#   )r$   r   r   Úinactive2   s    zActivatorModelManager.inactive)r   r   r   r   r%   r&   r   r   )r$   r   r   *   s   r   c                   s¿   e  Z d  Z d Z d e d ƒ f d e d ƒ f f Z e d e d d ƒ Z e d d	 d
 d	 d e d ƒ ƒ Z	 e d d	 d
 d	 d e d ƒ ƒ Z
 e ƒ  Z Gd d „  d ƒ Z ‡  f d d †  Z ‡  S)ÚActivatorModelzc ActivatorModel
    An abstract base class model that provides activate and deactivate fields.
    r   ZInactiver   ZActiveÚchoicesÚdefaultr   Tr   Ú	help_textz&keep empty for an immediate activationz$keep empty for indefinite activationc               @   s   e  Z d  Z d Z d S)zActivatorModel.MetaTN)r   r   r   r   r   r   r   r   r   D   s   r   c                s;   |  j  s t j j ƒ  |  _  n  t t |  ƒ j | | Ž  d  S)N)Úactivate_dateÚdatetimeÚnowr    r'   Úsave)r#   ÚargsÚkwargs)r$   r   r   r.   G   s    	zActivatorModel.save)r   r   r   r   Ú_ZSTATUS_CHOICESr   r   r   r+   Zdeactivate_dater   Zobjectsr   r.   r   r   )r$   r   r'   7   s   !!	r'   )r   r,   Zdjango.utils.translationr   r1   Zmongoengine.documentr   Zmongoengine.fieldsr   r   r   Zmongoengine.querysetr   Z django_extensions.mongodb.fieldsr   r	   r
   r   r   r   r'   r   r   r   r   Ú<module>   s   