def birdcare_todo(request): ''' returns a list of things the person in charge of birdcare has to do ''' # couples to separate and nests to be removed from couplings = Coupling.objects.filter( separation_date=None).select_related().order_by('cage__name') couples_to_separate = [] remove_nests_from = [] for coupling in couplings: if coupling.is_to_be_separated(): couples_to_separate.append(coupling) if coupling.nest_has_to_be_removed(): remove_nests_from.append(coupling) # juveniles to ring and transfer lower_datethreshold = datetime.date.today() - datetime.timedelta(60) juveniles = get_juveniles().filter( date_of_birth__lte=lower_datethreshold).filter( cage__function=Cage.FUNCTION_BREEDING) # empty breeding cages empty_breeding_cages = Cage.objects.get_empty_cages( function=Cage.FUNCTION_BREEDING) var_dict = { "couplings": couples_to_separate, "juveniles": juveniles, \ "empty_breeding_cages": empty_breeding_cages, 'show_cage': True, \ "remove_nests_from": remove_nests_from, } return direct_to_template(request, 'birdlist/birdcare_todo.html', var_dict)
def show_juveniles_breeding(request): queryset = get_juveniles() queryset = queryset.filter( cage__function=Cage.FUNCTION_BREEDING).order_by('cage') header = 'all birds < 70 days in breeding cage' view_type = 'cage' extra_context = {'header': header, 'view_type': view_type} return object_list(request, queryset=queryset, extra_context=extra_context)
def is_juvenile_to_be_transferred(self): from birdlist.utils.bird import get_juveniles lower_datethreshold = datetime.date.today() - datetime.timedelta(60) juveniles = get_juveniles().filter( date_of_birth__lte=lower_datethreshold).filter( cage__function=Cage.FUNCTION_BREEDING) if self in juveniles: return True else: return False
def show_juveniles_by_age(request): queryset = get_juveniles().select_related().order_by( 'date_of_birth', 'cage') header = 'all juvenile birds < 70 days - sorted by age' view_type = 'cage' extra_context = { 'header': header, 'show_link_juveniles_by_age_pdf': True, 'view_type': view_type } return object_list(request, queryset=queryset, extra_context=extra_context)
def show_juveniles_by_age_pdf(request): try: from birdlist.utils.bird import get_juveniles queryset = get_juveniles().order_by('date_of_birth') title = "all juvenile birds younger 70 days - sorted by age" author = 'Andreas Kotowicz' transfer_at_age = 60 Story, buffer, doc, response = pdf_header( page_size=portrait(A4), filename="juveniles_younger_70days.pdf", title=title, author=author) data = [[ 'Name', 'Age (-)', 'Cage', 'Birthday', 'Transfer', 'Sex', 'Father', 'Reserved by', 'Reserved until' ]] for i in queryset: data.append([i.name, i.get_phd() + ' (' + i.age_uncertainty.__str__() + ')', \ i.cage.name, i.date_of_birth, i.date_of_birth + datetime.timedelta(transfer_at_age), \ i.sex, i.get_father(), i.reserved_by, i.reserved_until]) ts = TableStyle([('LINEABOVE', (0, 0), (-1, 0), 2, colors.black), ('LINEBELOW', (0, 0), (-1, 0), 2, colors.black), ('LINEABOVE', (0, 1), (-1, -1), 0.25, colors.black), ('LINEBELOW', (0, -1), (-1, -1), 2, colors.black), ('INNERGRID', (0, 0), (-1, -1), 0.15, colors.black), ('FONT', (0, 0), (-1, 0), 'Helvetica-Bold', 10), ('FONT', (0, 1), (-1, -1), 'Helvetica', 9), ('ALIGN', (0, 0), (-1, -1), 'CENTER')]) colwidths = (50, 40, 60, 60, 60, 30, 60, 70, 80) table = Table(data, colwidths, style=ts, repeatRows=1) Story = add_title(title, Story, request) Story.append(table) return pdf_close_and_return(doc, Story, buffer, response) except: return server_error(request)
def check_coupling_links(): ''' alert user if brood coupling is different from current cage couple ''' breeding_cages = Cage.objects.filter(function=Cage.FUNCTION_BREEDING) c = get_juveniles() for i in breeding_cages: birds_in_cage = Bird.objects.filter(cage=i) juveniles_in_cage = birds_in_cage.filter(id__in=c) coupling = Coupling.objects.filter(cage=i, separation_date=None) coupling_id = '' if coupling: coupling_id = coupling.get().id for j in juveniles_in_cage: if j.brood.coupling.id != coupling_id: print "problem in cage %s:" % i.name print "couple coupling id = %s" % coupling_id print "brood coupling id = %s" % j.brood.coupling.id
def show_juveniles(request): queryset = get_juveniles().select_related() header = 'all juvenile birds < 70 days' view_type = 'cage' extra_context = {'header': header, 'view_type': view_type} return object_list(request, queryset=queryset, extra_context=extra_context)