Add support for import bootstrap setups from URLs
This commit is contained in:
@@ -2,11 +2,14 @@ from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
|
||||
import requests
|
||||
|
||||
from django.db import models
|
||||
from django.core import serializers
|
||||
|
||||
from .classes import BootstrapModel, FixtureMetadata
|
||||
from .literals import FIXTURE_TYPE_FIXTURE_PROCESS, FIXTURE_TYPE_EMPTY_FIXTURE
|
||||
from .literals import (FIXTURE_TYPE_FIXTURE_PROCESS, FIXTURE_TYPE_EMPTY_FIXTURE,
|
||||
DEFAULT_REPOSITORY)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -26,10 +29,18 @@ class BootstrapSetupManager(models.Manager):
|
||||
result.append(model_fixture)
|
||||
return FIXTURE_TYPE_FIXTURE_PROCESS[serialization_format]('\n'.join(result))
|
||||
|
||||
def import_setup(self, files):
|
||||
file_data = files.read()
|
||||
def import_setup(self, file_data):
|
||||
metadata = FixtureMetadata.read_all(file_data)
|
||||
instance = self.model(fixture=file_data, **metadata)
|
||||
instance.save(update_metadata=False)
|
||||
|
||||
def import_from_file(self, files):
|
||||
file_data = files.read()
|
||||
self.import_setup(file_data)
|
||||
|
||||
|
||||
def import_from_url(self, url):
|
||||
response = requests.get(url)
|
||||
if response.status_code == requests.codes.ok:
|
||||
self.import_setup(response.text)
|
||||
else:
|
||||
response.raise_for_status()
|
||||
|
||||
Reference in New Issue
Block a user