コード例 #1
0
def add_location(req, parent_id=None):
    nodes = Area.tree.all()

    if req.method == 'POST':
        form = LocationForm(req.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            code = form.cleaned_data['code']
            lat = form.cleaned_data['lat']
            lon = form.cleaned_data['lon']
            target = form.cleaned_data['target']
            position = form.cleaned_data['position']
            kind=form.cleaned_data['kind']

            area=Area.objects.create(name=name,code=code,parent=target)
            if lat and lon:
                location=Point(latitude=lat,longitude=lon)
                location.save()
                area.location=location
            try:
                kind=get_object_or_404(AreaType,pk=int(kind))
                area.kind=kind
            except ValueError:
                pass
            area.save()
            form = LocationForm()

            return render_to_response(
                    'simple_locations/location_edit.html'
                    ,{'form': form, 'nodes': nodes},
                    context_instance=RequestContext(req))
        else:
            form = LocationForm(req.POST)
            return render_to_response(
                    'simple_locations/location_edit.html'
                    ,{'form': form, 'nodes': nodes},
                    context_instance=RequestContext(req))

    else:
        if (parent_id):
            default_data = {}
            parent = get_object_or_404(Area, pk=parent_id)
            default_data['move_choice'] = True
            default_data['target'] = parent.pk
            default_data['position'] = 'last-child'
            form = LocationForm(default_data)
            form._errors=''


        else:
            form = LocationForm()

    return render_to_response(
            'simple_locations/location_edit.html'
            ,{'form': form, 'nodes': nodes},
            context_instance=RequestContext(req))
コード例 #2
0
ファイル: views.py プロジェクト: rjprins/tracfm
    def pre_save(self, obj):
        super(LocationCreateView, self).pre_save(obj)

        obj.kind = get_object_or_404(AreaType, id=self.kwargs["areatype_id"])

        lat = self.form.cleaned_data["latitude"]
        lng = self.form.cleaned_data["longitude"]

        # set an initial our rule based on our name
        obj.set_rules(obj.name.lower())

        if lat and lng:
            location = Point(latitude=lat, longitude=lng)
            location.save()
            obj.location = location

        return obj
コード例 #3
0
ファイル: views.py プロジェクト: nyaruka/simple_locations
def edit_location(req, area_id):
    location = get_object_or_404(Area, pk=area_id)
    if req.method == "POST":
        form = LocationForm(req.POST)
        if form.is_valid():
            saved = True

            area = Area.objects.get(pk=area_id)
            area.name = form.cleaned_data["name"]
            area.code = form.cleaned_data["code"]
            lat = form.cleaned_data["lat"]
            lon = form.cleaned_data["lon"]
            kind = form.cleaned_data["kind"]
            try:
                kind = get_object_or_404(AreaType, pk=int(kind))
                area.kind = kind
            except ValueError:
                pass
            if lat and lon:
                point = Point(latitude=lat, longitude=lon)
                point.save()
                area.location = point
            try:
                area.save()
            except IntegrityError:
                form.errors["code"] = "This code already exists"
                saved = False

            if form.cleaned_data["move_choice"]:
                target = form.cleaned_data["target"]
                position = form.cleaned_data["position"]

                try:
                    Area.tree.move_node(area, target, position)
                except InvalidMove:
                    form.errors["position"] = "This move is invalid"
                    saved = False

            if saved:
                form = LocationForm()
                return render_to_response(
                    "simple_locations/location_edit.html",
                    {"form": form, "nodes": Area.tree.all()},
                    context_instance=RequestContext(req),
                )
            else:
                return render_to_response(
                    "simple_locations/location_edit.html",
                    {"form": form, "item": location, "nodes": Area.tree.all()},
                    context_instance=RequestContext(req),
                )

        else:
            return render_to_response(
                "simple_locations/location_edit.html",
                {"form": form, "item": location},
                context_instance=RequestContext(req),
            )
    else:
        default_data = {}
        default_data["pk"] = location.pk
        default_data["name"] = location.name
        default_data["code"] = location.code
        default_data["move_choice"] = False
        if location.kind:
            default_data["kind"] = location.kind.pk
        if location.parent:
            default_data["target"] = location.parent
            default_data["position"] = "last-child"
        if location.location:
            default_data["lat"] = location.location.latitude
            default_data["lon"] = location.location.longitude
        form = LocationForm(default_data)
        return render_to_response(
            "simple_locations/location_edit.html",
            {"form": form, "nodes": Area.tree.all(), "item": location},
            context_instance=RequestContext(req),
        )
コード例 #4
0
ファイル: views.py プロジェクト: nyaruka/simple_locations
def add_location(req, parent_id=None):
    nodes = Area.tree.all()

    if req.method == "POST":
        form = LocationForm(req.POST)
        if form.is_valid():
            name = form.cleaned_data["name"]
            code = form.cleaned_data["code"]
            lat = form.cleaned_data["lat"]
            lon = form.cleaned_data["lon"]
            target = form.cleaned_data["target"]
            position = form.cleaned_data["position"]
            kind = form.cleaned_data["kind"]

            area = Area(name=name, code=code)
            if lat and lon:
                location = Point(latitude=lat, longitude=lon)
                location.save()
                area.location = location
            try:
                kind = get_object_or_404(AreaType, pk=int(kind))
                area.kind = kind
            except ValueError:
                pass
            area.save()
            if form.cleaned_data["move_choice"]:
                try:
                    Area.tree.move_node(area, target, position)
                except InvalidMove:
                    pass
            form = LocationForm()

            return render_to_response(
                "simple_locations/location_edit.html",
                {"form": form, "nodes": nodes},
                context_instance=RequestContext(req),
            )
        else:
            form = LocationForm(req.POST)
            return render_to_response(
                "simple_locations/location_edit.html",
                {"form": form, "nodes": nodes},
                context_instance=RequestContext(req),
            )

    else:
        if parent_id:
            default_data = {}
            parent = get_object_or_404(Area, pk=parent_id)
            default_data["move_choice"] = True
            default_data["target"] = parent.pk
            default_data["position"] = "last-child"
            form = LocationForm(default_data)
            form._errors = ""

        else:
            form = LocationForm()

    return render_to_response(
        "simple_locations/location_edit.html", {"form": form, "nodes": nodes}, context_instance=RequestContext(req)
    )
コード例 #5
0
def edit_location(req, area_id):
    location = get_object_or_404(Area, pk=area_id)
    if req.method == 'POST':
        form = LocationForm(req.POST)
        if form.is_valid():
            saved = True

            area = Area.objects.get(pk=area_id)
            area.name = form.cleaned_data['name']
            area.code = form.cleaned_data['code']
            lat=form.cleaned_data['lat']
            lon=form.cleaned_data['lon']
            kind=form.cleaned_data['kind']
            try:
                kind = get_object_or_404(AreaType,pk=int(kind))
                area.kind = kind
            except ValueError:
                pass
            if lat and lon:
                point = Point(latitude=lat,longitude=lon)
                point.save()
                area.location = point
            try:
                area.save()
            except IntegrityError:
                form.errors['code'] = 'This code already exists'
                saved = False

            if form.cleaned_data['move_choice']:
                target = form.cleaned_data['target']
                position = form.cleaned_data['position']

                try:
                    area.parent=target
                    area.save()
                except InvalidMove:
                    form.errors['position'] = 'This move is invalid'
                    saved = False

            if saved:
                form = LocationForm()
                return render_to_response("simple_locations/location_edit.html", {"form":form, 'nodes':Area.tree.all()},
                                          context_instance=RequestContext(req))
            else:
                return render_to_response("simple_locations/location_edit.html",
                                          {"form":form, 'item': location, 'nodes':Area.tree.all()},
                                          context_instance=RequestContext(req))

        else:
            return render_to_response("simple_locations/location_edit.html",
                                      { 'form': form, 'item': location },
                                      context_instance=RequestContext(req))
    else:
        default_data = {}
        default_data['pk'] = location.pk
        default_data['name'] = location.name
        default_data['code'] = location.code
        default_data['move_choice'] = False
        if location.kind:
            default_data['kind'] = location.kind.pk
        if location.parent:
            default_data['target'] = location.parent
            default_data['position'] = 'last-child'
        if location.location:
            default_data['lat'] = location.location.latitude
            default_data['lon'] = location.location.longitude
        form = LocationForm(default_data)
        return render_to_response("simple_locations/location_edit.html",
                                  {'form':form, 'nodes':Area.tree.all(),'item':location},
                                  context_instance=RequestContext(req))