1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00

April update fixes 2 (#700)

* add tech contact and sales contact fields to add / suggest facility forms (#378)

* add swagger docs as backup api docs under apidocs/swagger/ (#626)

* tech and sales phone number fields arent required and should KeyError when missing from POST data (#378, #699)

* re-enable Try it out functionality for swagger docs (#626)

Co-authored-by: Stefan Pratter <stefan@20c.com>
This commit is contained in:
Matt Griswold
2020-04-20 09:45:48 -05:00
committed by GitHub
parent 5272ec80f7
commit dbedb5e606
7 changed files with 107 additions and 1 deletions

View File

@ -1123,6 +1123,7 @@ class TestJSON(unittest.TestCase):
test_failure=SHARED["fac_r_ok"].id,
)
##########################################################################
def test_org_admin_002_POST_PUT_DELETE_net(self):
@ -2890,6 +2891,34 @@ class TestJSON(unittest.TestCase):
# MISC TESTS
##########################################################################
def test_z_misc_POST_ix_fac_missing_phone_fields(self):
"""
Test that omitting the *_phone fields during fac
and ix object creation doesnt error 500
TODO: a test that drops all the non-required fields
and tests for every reftag model
"""
data = self.make_data_fac()
db = self.db_org_admin
del data["tech_phone"]
r = db.create("fac", data, return_response=True).get("data")
data = self.make_data_fac()
del data["sales_phone"]
r = db.create("fac", data, return_response=True).get("data")
data = self.make_data_ix(prefix=self.get_prefix4())
del data["tech_phone"]
r = db.create("ix", data, return_response=True).get("data")
data = self.make_data_ix(prefix=self.get_prefix4())
del data["policy_phone"]
r = db.create("ix", data, return_response=True).get("data")
def test_z_misc_002_dupe_netixlan_ip(self):
# test that addint duplicate netixlan ips is impossible

View File

@ -1174,6 +1174,11 @@ class Facility(pdb_models.FacilityBase, GeocodeBaseMixin):
def nsp_has_perms_PUT(self, user, request):
return validate_PUT_ownership(user, self, request.data, ["org"])
def validate_phonenumbers(self):
self.tech_phone = validate_phonenumber(self.tech_phone, self.country.code)
self.sales_phone = validate_phonenumber(self.sales_phone, self.country.code)
@reversion.register
class InternetExchange(pdb_models.InternetExchangeBase):

View File

@ -978,6 +978,9 @@ class FacilitySerializer(ModelSerializer):
city = serializers.CharField()
zipcode = serializers.CharField()
tech_phone = serializers.CharField(required=False, allow_blank=True, default="")
sales_phone = serializers.CharField(required=False, allow_blank=True, default="")
validators = [FieldMethodValidator("suggest", ["POST"])]
def has_create_perms(self, user, data):
@ -1974,6 +1977,9 @@ class InternetExchangeSerializer(ModelSerializer):
website = serializers.URLField(required=True)
tech_email = serializers.EmailField(required=True)
tech_phone = serializers.CharField(required=False, allow_blank=True, default="")
policy_phone = serializers.CharField(required=False, allow_blank=True, default="")
# For the creation of the initial prefix during exchange
# creation. It will be a required field during `POST` requests
# but will be ignored during `PUT` so we cannot just do

View File

@ -23,7 +23,6 @@
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset
],
supportedSubmitMethods: [],
layout: "BaseLayout",
requestInterceptor: (request) => {
request.headers['X-CSRFToken'] = "{{ csrf_token }}"

View File

@ -147,6 +147,34 @@
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Technical E-mail" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="email"
data-edit-name="tech_email"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Technical Phone" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="string"
data-edit-name="tech_phone"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Sales E-mail" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="email"
data-edit-name="sales_email"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Sales Phone" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="string"
data-edit-name="sales_phone"></div>
</div>
</div>
</div>

View File

@ -124,6 +124,37 @@ Thank you for your suggestion.
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Technical E-mail" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="email"
data-edit-name="tech_email"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Technical Phone" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="string"
data-edit-name="tech_phone"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Sales E-mail" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="email"
data-edit-name="sales_email"></div>
</div>
</div>
<div class="row">
<div class="col-xs-4 col-sm-5 col-md-4">{% trans "Sales Phone" %}</div>
<div class="col-xs-8 col-sm-7 col-md-8">
<div data-edit-type="string"
data-edit-name="sales_phone"></div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">

View File

@ -163,6 +163,14 @@ urlpatterns = [
urlpatterns += [
url(r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")),
url(
r"^apidocs/swagger/",
TemplateView.as_view(
template_name="apidocs/swagger.html",
extra_context={"schema_url": "openapi-schema"},
),
name="swagger-ui",
),
url(
r"^apidocs/",
TemplateView.as_view(