def portal_touch_up(self, touch):
        """Try to create a portal between the spots the user chose."""
        try:
            # If the touch ended upon a spot, and there isn't
            # already a portal between the origin and this
            # destination, create one.
            destspot = next(self.spots_at(*touch.pos))
            orig = self.origspot.proxy
            dest = destspot.proxy
            if not(
                orig.name in self.character.portal and
                dest.name in self.character.portal[orig.name]
            ):
                port = self.character.new_portal(
                    orig.name,
                    dest.name
                )
                self.arrowlayout.add_widget(
                    self.make_arrow(port)
                )
            # And another in the opposite direction if needed
                if (
                    hasattr(self, 'protoportal2') and not(
                            orig.name in self.character.preportal and
                            dest.name in self.character.preportal[orig.name]
                        )
                ):
                    deport = self.character.new_portal(
                        dest.name,
                        orig.name
                    )
                    self.arrowlayout.add_widget(
                        self.make_arrow(deport)
                    )
        except StopIteration:
            pass
        self.remove_widget(self.protoportal)
        if hasattr(self, 'protoportal2'):
            self.remove_widget(self.protoportal2)
            del self.protoportal2
        self.remove_widget(self.protodest)
        del self.protoportal
        del self.protodest
Try to create a portal between the spots the user chose.