mirror of
https://git.yoctoproject.org/poky
synced 2026-03-11 09:49:41 +01:00
bitbake: toaster: use modified validators for git url fields
The default django URL validator marks git URLs as not valid, so we change the default validators to a URLValidator-derived that adds git and ssh protocol schemas and inhibits the frontend URL validator. (Bitbake rev: 7223619505c0939358287e5baf84da0a91cb8d34) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
a1f7a09801
commit
97c0beb0eb
@@ -1,17 +1,34 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.admin.filters import RelatedFieldListFilter
|
||||
from .models import Branch, LayerSource, ToasterSetting
|
||||
from .models import BitbakeVersion, Release, LayerSource, ToasterSetting
|
||||
from django.forms.widgets import Textarea
|
||||
from django import forms
|
||||
import django.db.models as models
|
||||
|
||||
from django.contrib.admin import widgets, helpers
|
||||
|
||||
class LayerSourceAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
class BranchAdmin(admin.ModelAdmin):
|
||||
class BitbakeVersionAdmin(admin.ModelAdmin):
|
||||
|
||||
# we override the formfield for db URLField because of broken URL validation
|
||||
|
||||
def formfield_for_dbfield(self, db_field, **kwargs):
|
||||
if isinstance(db_field, models.fields.URLField):
|
||||
return forms.fields.CharField()
|
||||
return super(BitbakeVersionAdmin, self).formfield_for_dbfield(db_field, **kwargs)
|
||||
|
||||
|
||||
|
||||
class ReleaseAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
class ToasterSettingAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
admin.site.register(LayerSource, LayerSourceAdmin)
|
||||
admin.site.register(Branch, BranchAdmin)
|
||||
admin.site.register(BitbakeVersion, BitbakeVersionAdmin)
|
||||
admin.site.register(Release, ReleaseAdmin)
|
||||
admin.site.register(ToasterSetting, ToasterSettingAdmin)
|
||||
|
||||
|
||||
@@ -24,6 +24,28 @@ from django.db.models import F
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
from django.core import validators
|
||||
|
||||
class GitURLValidator(validators.URLValidator):
|
||||
import re
|
||||
regex = re.compile(
|
||||
r'^(?:ssh|git|http|ftp)s?://' # http:// or https://
|
||||
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
|
||||
r'localhost|' # localhost...
|
||||
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4
|
||||
r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6
|
||||
r'(?::\d+)?' # optional port
|
||||
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
|
||||
|
||||
def GitURLField(**kwargs):
|
||||
r = models.URLField(**kwargs)
|
||||
for i in xrange(len(r.validators)):
|
||||
if isinstance(r.validators[i], validators.URLValidator):
|
||||
r.validators[i] = GitURLValidator()
|
||||
return r
|
||||
|
||||
|
||||
class ToasterSetting(models.Model):
|
||||
name = models.CharField(max_length=63)
|
||||
helptext = models.TextField()
|
||||
@@ -663,8 +685,9 @@ class LayerIndexLayerSource(LayerSource):
|
||||
pass
|
||||
|
||||
class BitbakeVersion(models.Model):
|
||||
|
||||
name = models.CharField(max_length=32, unique = True)
|
||||
giturl = models.URLField()
|
||||
giturl = GitURLField()
|
||||
branch = models.CharField(max_length=32)
|
||||
dirpath = models.CharField(max_length=255)
|
||||
|
||||
@@ -708,7 +731,7 @@ class Layer(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
local_path = models.FilePathField(max_length=255, null = True, default = None)
|
||||
layer_index_url = models.URLField()
|
||||
vcs_url = models.URLField(default = None, null = True)
|
||||
vcs_url = GitURLField(default = None, null = True)
|
||||
vcs_web_file_base_url = models.URLField(null = True, default = None)
|
||||
|
||||
summary = models.CharField(max_length=200, help_text='One-line description of the layer', null = True, default = None)
|
||||
|
||||
Reference in New Issue
Block a user