コード例 #1
0
ファイル: birdcare_main.py プロジェクト: Natedeploys/Birdlist
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)
コード例 #2
0
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)
コード例 #3
0
 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
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
ファイル: breeding.py プロジェクト: Natedeploys/Birdlist
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
コード例 #7
0
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)