Exemplo n.º 1
0
def unit_edit(request, city_tag, bldg_tag, unit_tag=''):
    (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag=unit_tag)

    if request.method == 'POST':
        form = UnitForm(request.POST, instance=unit)

        if form.is_valid(): # All validation rules pass
            updated = form.save(commit=False)

            updated.save_and_update(request)

            #redirect to unit details page with an edit message
            messages.add_message(request, messages.INFO, 'Saved changes to unit.')
            if updated.tag:
                finished_url = reverse('building.views.unit_details', kwargs={'city_tag':city.tag, 'bldg_tag':building.tag, 'unit_tag':updated.tag})
            else:
                finished_url = reverse('building.views.unit_details', kwargs={'city_tag':city.tag, 'bldg_tag':building.tag})
                
            #args=(updated.building.tag, city.tag, updated.tag)
            return redirect(finished_url)
    else:
        #print unit
        form = UnitForm(instance=unit)
        
    context = { 'building': building,
                'unit': unit,
                'user': request.user,
                'form': form,
                }
    return render(request, 'unit_edit.html', context)
Exemplo n.º 2
0
def unit_details(request, city_tag, bldg_tag, unit_tag=''):
    (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag=unit_tag)

    #print unit.full_address()
    context = { 'building': building,
                'units': [unit],
                'unit': unit,
                'user': request.user,
                'redirect_field': REDIRECT_FIELD_NAME,
                }
    return render(request, 'unit_details.html', context)
Exemplo n.º 3
0
def details(request, bldg_tag, city_tag):
    (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag='')

    #print building.units.all()[0].tag
    #unit_url = reverse('unit_details', kwargs={'city_tag':building.city.tag, 'bldg_tag':building.tag, 'unit_tag':building.units.all()[0].tag})
    #print unit_url

        
    context = { 'building': building,
                'units': building.units.all(),
                'user': request.user,
                'redirect_field': REDIRECT_FIELD_NAME,
                }
    return render(request, 'details.html', context)
Exemplo n.º 4
0
def edit(request, bldg_tag, city_tag):
    (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag='')

    #unless we figure out it should be set, keep it None
    unitform = None
    
    if request.method == 'POST':
        buildingform = BuildingForm(request.POST, instance=building,
                                    prefix='building')

        if buildingform.is_valid(): # All validation rules pass
            #https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method
            #by passing commit=False, we get a copy of the model before it
            #has been saved. This allows diff to work below
            updated = buildingform.save(commit=False)

            updated.set_booleans()
            #print json.dumps(updated.diff)
            
            #print updated.diff
            changes = ChangeDetails()
            changes.ip_address = get_client_ip(request)
            changes.user = request.user
            changes.diffs = json.dumps(updated.diff)
            changes.building = updated
            #not required
            #changes.unit =
            changes.save()
            
            #now it's ok to save the building details:
            updated.save()

            unit_ok = False
            if building.units.count() == 1:
                unitform = UnitForm(request.POST, instance=unit, prefix='unit')
                if unitform.is_valid(): # All validation rules pass
                    updated_unit = unitform.save(commit=False)
                    updated_unit.save_and_update(request)
                    unit_ok = True
            else:
                unit_ok = True

            if unit_ok:
                #redirect to building details with an edit message
                messages.add_message(request, messages.INFO, 'Saved changes to building.')
                finished_url = reverse('building.views.details', args=(updated.tag, updated.city.tag))
                
                return redirect(finished_url)

    else:
        buildingform = BuildingForm(instance=building, prefix='building')
        buildingform.fields['name'].label = "Building Name"
        if building.units.count() == 1:
            unitform = UnitForm(instance=unit, prefix='unit')

    context = { 'building': building,
                'user': request.user,
                'buildingform': buildingform,
                'unitform': unitform,
                }
    return render(request, 'building-edit.html', context)