Source code for cv.models.managers

from django.db import models
from cv.settings import SERVICE_TYPES


[docs]class DisplayManager(models.Manager): """Returns displayable objects from models."""
[docs] def get_queryset(self): """Return objects for which field ``display`` has been set to ``True``.""" return super(DisplayManager, self).get_queryset().filter(display=True)
[docs]class PublicationManager(DisplayManager): """Class to manage publications. This class subclasses ``DisplayManager`` and includes the default queryset of all displayable objects. In addition, it provides three methods: ``published``, ``revise``, and ``inprep`` to return querysets of publications at stages in the publication process. """ management_lists = ['published', 'revise', 'inprep']
[docs] def published(self): """Return queryset of articles accepted for publication or published. """ return self.filter( is_published__exact=True).filter( display__exact=True).order_by( '-pub_date')
[docs] def revise(self): """Return queryset of articles in revision process.""" return self.filter( is_inrevision__exact=True).filter( display__exact=True).order_by( '-submission_date')
[docs] def inprep(self): """Return queryset of articles being prepared for submission.""" return self.filter( is_inprep__exact=True).filter( display__exact=True)
[docs]class GrantManager(DisplayManager): """Class to manage grants. This class subclasses ``DisplayManager`` and includes the default queryset of all displayable objects. In addition, it provides two methods: ``internal_grants`` and ``external_grants`` for different grant sources. """ management_lists = ['internal_grants', 'external_grants'] def internal_grants(self): return self.filter(source=10).filter(display=True) def external_grants(self): return self.filter(source=40).filter(display=True)
[docs]class ServiceManager(DisplayManager): """Class to manage service work. This class subclasses ``DisplayManager`` and includes the default queryset of all displayable objects. In addition, it provides three methods: ``department_services``, ``university services``, and ``discipline_services`` for service work to different institutions. """ management_lists = ['department', 'university', 'discipline'] def department(self): return self.filter( type__in=[ SERVICE_TYPES['DEPARTMENT_SERVICE'], ]).filter(display=True) def university(self): return self.filter( type__in=[ SERVICE_TYPES['UNIVERSITY_SERVICE'], SERVICE_TYPES['SCHOOL_SERVICE'] ]).filter(display=True) def discipline(self): return self.filter( type=SERVICE_TYPES['DISCIPLINE_SERVICE']).filter(display=True)
[docs]class PrimaryPositionManager(models.Manager): """Manages positions used in heading of CV. Returns a queryset of positions in which ``primary_position`` has been set to ``True``. """
[docs] def get_queryset(self): """Return positions user indicated as 'primary' positions.""" return super(PrimaryPositionManager, self).get_queryset().filter( primary_position=True)