コード例 #1
0
ファイル: forms.py プロジェクト: bovine/flightloggin2
 def clean(self, val):
     """
     Turns the entered value (a tailnumber or a pk), into a plane instance
     """
     
     if val == '' or val is None or val == '90':
         ## if input was blank, get and return the global unknown plane
         return Plane.objects.get(pk=settings.UNKNOWN_PLANE_ID)
     
     if re.match(r'^[0-9]+$', val):
         try:
             # most likely a PK
             return Plane.objects.user(self.user)\
                         .filter(retired=False, pk=val)[0]
         except IndexError:
             # but could also be a all numeric tailnumber
             return Plane.objects.user(self.user)\
                         .filter(retired=False, tailnumber=val)[0]
             
     if val.startswith("pk:"):
         pk = val[3:]
         p = Plane.goon(pk=pk, user=self.user)
         if p:
             return p
         else:
             return Plane.objects.get(pk=settings.UNKNOWN_PLANE_ID)
     
     elif " " in val:
         tn, ty = val.split(' ')[:2]
         ty = ty.upper()
         kwarg = {"tailnumber": tn, "user": self.user, "type": ty}
     else:
         tn = val
         kwarg = {"tailnumber": tn, "user": self.user}
     
     try:
         return Plane.objects.filter(retired=False, **kwarg)[0]
     except IndexError:
         # couldn't find airplane, it either doesn't exist, or it's retired
         return Plane.objects.create(**kwarg)
コード例 #2
0
ファイル: forms.py プロジェクト: mdek/flightloggin2
    def clean(self, val):
        """
        Turns the entered value (a tailnumber or a pk), into a plane instance
        """

        if val == '' or val is None or val == '90':
            ## if input was blank, get and return the global unknown plane
            return Plane.objects.get(pk=settings.UNKNOWN_PLANE_ID)

        if re.match(r'^[0-9]+$', val):
            try:
                # most likely a PK
                return Plane.objects.user(self.user)\
                            .filter(retired=False, pk=val)[0]
            except IndexError:
                # but could also be a all numeric tailnumber
                return Plane.objects.user(self.user)\
                            .filter(retired=False, tailnumber=val)[0]

        if val.startswith("pk:"):
            pk = val[3:]
            p = Plane.goon(pk=pk, user=self.user)
            if p:
                return p
            else:
                return Plane.objects.get(pk=settings.UNKNOWN_PLANE_ID)

        elif " " in val:
            tn, ty = val.split(' ')[:2]
            ty = ty.upper()
            kwarg = {"tailnumber": tn, "user": self.user, "type": ty}
        else:
            tn = val
            kwarg = {"tailnumber": tn, "user": self.user}

        try:
            return Plane.objects.filter(retired=False, **kwarg)[0]
        except IndexError:
            # couldn't find airplane, it either doesn't exist, or it's retired
            return Plane.objects.create(**kwarg)