Rework 'Upload File' form for a specific data_type.
Change-Id: If38acc7cd4cb6115637aea867398910a052d8c60
This commit is contained in:
parent
363d3ec4c1
commit
89ad6a0f89
|
@ -47,28 +47,23 @@ class UploadServiceForm(SelfHandlingForm):
|
|||
redirect=redirect)
|
||||
|
||||
|
||||
class UploadFileForm(SelfHandlingForm):
|
||||
supported_data_types = {
|
||||
'ui': 'UI Definition (*.yaml)',
|
||||
'workflows': 'Murano Conductor Workflow (*xml)',
|
||||
'heat': 'Heat template',
|
||||
'agent': 'Murano Agent template',
|
||||
'scripts': 'Script for agent execution'
|
||||
}
|
||||
|
||||
data_type = forms.ChoiceField(label=_('File data type'),
|
||||
choices=(supported_data_types.items()))
|
||||
class UploadFileKnownTypeForm(SelfHandlingForm):
|
||||
file = forms.FileField(label=_('Murano Repository File'),
|
||||
required=True,
|
||||
error_messages=
|
||||
{'required': _('There is no file to upload')})
|
||||
|
||||
def __init__(self, request, data_type=None, *args, **kwargs):
|
||||
self.data_type = data_type
|
||||
super(UploadFileKnownTypeForm, self).__init__(request, *args, **kwargs)
|
||||
|
||||
def handle(self, request, data):
|
||||
log.debug('Uploading file to metadata repository {0}'.format(data))
|
||||
filename = data['file'].name
|
||||
data_type = getattr(self, 'data_type', data['data_type'])
|
||||
try:
|
||||
filename = data['file'].name
|
||||
result = metadataclient(request).metadata_admin.upload_file(
|
||||
data['data_type'], data['file'], filename)
|
||||
data_type, data['file'], filename)
|
||||
messages.success(request,
|
||||
_("File '{filename}' uploaded".format(
|
||||
filename=filename)))
|
||||
|
@ -88,3 +83,16 @@ class UploadFileForm(SelfHandlingForm):
|
|||
raise forms.ValidationError(_('It is restricted to '
|
||||
'upload files larger than 5MB.'))
|
||||
return file
|
||||
|
||||
|
||||
class UploadFileForm(UploadFileKnownTypeForm):
|
||||
supported_data_types = {
|
||||
'ui': 'UI Definition (*.yaml)',
|
||||
'workflows': 'Murano Conductor Workflow (*xml)',
|
||||
'heat': 'Heat template',
|
||||
'agent': 'Murano Agent template',
|
||||
'scripts': 'Script for agent execution'
|
||||
}
|
||||
|
||||
data_type = forms.ChoiceField(label=_('File data type'),
|
||||
choices=(supported_data_types.items()))
|
||||
|
|
|
@ -19,7 +19,7 @@ from .views import UploadServiceView
|
|||
from .views import ComposeServiceView
|
||||
from .views import ManageServiceView
|
||||
from .views import ManageFilesView
|
||||
from .views import UploadFileView
|
||||
from .views import UploadFileView, UploadFileView2
|
||||
|
||||
|
||||
urlpatterns = patterns(
|
||||
|
@ -30,6 +30,10 @@ urlpatterns = patterns(
|
|||
url(r'^upload_service$', UploadServiceView.as_view(),
|
||||
name='upload_service'),
|
||||
|
||||
url(r'^upload_file/(?P<data_type>[^/]+)$',
|
||||
UploadFileView2.as_view(),
|
||||
name='upload_file2'),
|
||||
|
||||
url(r'^manage_files/upload_file$', UploadFileView.as_view(),
|
||||
name='upload_file'),
|
||||
#This should goes first
|
||||
|
|
|
@ -13,7 +13,9 @@
|
|||
# under the License.
|
||||
import logging
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.core.urlresolvers import reverse, reverse_lazy
|
||||
from .tables import DeleteFile, DownloadFile
|
||||
from .forms import UploadFileKnownTypeForm
|
||||
from horizon import tables, workflows, forms
|
||||
from muranodashboard.environments.services.forms import UpdatableFieldsForm
|
||||
from muranodashboard.environments.services.fields import TableField
|
||||
|
@ -38,6 +40,13 @@ class Action(workflows.Action, UpdatableFieldsForm):
|
|||
|
||||
|
||||
def define_tables(table_name, step_verbose_name):
|
||||
class UploadFileDataType(tables.LinkAction):
|
||||
name = 'upload_file2'
|
||||
verbose_name = step_verbose_name
|
||||
url = reverse('horizon:murano:service_catalog:upload_file2',
|
||||
args=(table_name,))
|
||||
classes = ('ajax-modal', 'btn-create')
|
||||
|
||||
class ObjectsTable(tables.DataTable):
|
||||
file_name = tables.Column('filename', verbose_name=_('File Name'))
|
||||
path = tables.Column('path', verbose_name=_('Nested Path'))
|
||||
|
@ -48,7 +57,8 @@ def define_tables(table_name, step_verbose_name):
|
|||
class Meta:
|
||||
name = table_name
|
||||
verbose_name = step_verbose_name
|
||||
table_actions = (DeleteFile,
|
||||
table_actions = (UploadFileDataType,
|
||||
DeleteFile,
|
||||
)
|
||||
|
||||
row_actions = (DownloadFile,
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
import logging
|
||||
from functools import wraps
|
||||
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.core.urlresolvers import reverse_lazy, reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.datastructures import SortedDict
|
||||
from horizon import exceptions
|
||||
|
@ -26,7 +26,7 @@ from horizon.forms.views import ModalFormView
|
|||
from .tables import ServiceCatalogTable, MetadataObjectsTable
|
||||
from .utils import define_tables
|
||||
from .utils import STEP_NAMES
|
||||
from .forms import UploadServiceForm, UploadFileForm
|
||||
from .forms import UploadServiceForm, UploadFileForm, UploadFileKnownTypeForm
|
||||
from .workflows import ComposeService
|
||||
from muranodashboard.environments.services.metadata import metadataclient
|
||||
from metadataclient.common.exceptions import CommunicationError, Unauthorized
|
||||
|
@ -136,6 +136,17 @@ class ComposeServiceView(WorkflowView):
|
|||
exceptions.handle(self.request, msg, redirect)
|
||||
|
||||
|
||||
class UploadFileView2(ModalFormView):
|
||||
template_name = 'service_catalog/upload_file.html'
|
||||
form_class = UploadFileKnownTypeForm
|
||||
success_url = reverse_lazy('horizon:murano:service_catalog:index')
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super(UploadFileView2, self).get_form_kwargs()
|
||||
kwargs.update(self.kwargs)
|
||||
return kwargs
|
||||
|
||||
|
||||
class UploadFileView(ModalFormView):
|
||||
form_class = UploadFileForm
|
||||
template_name = 'service_catalog/upload_file.html'
|
||||
|
@ -144,11 +155,18 @@ class UploadFileView(ModalFormView):
|
|||
|
||||
|
||||
class ManageServiceView(tables.MultiTableView):
|
||||
table_classes = tuple([define_tables(name, step_verbose_name)
|
||||
for (name, step_verbose_name) in STEP_NAMES])
|
||||
template_name = 'service_catalog/service_files.html'
|
||||
failure_url = reverse_lazy('horizon:murano:service_catalog:index')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# here we should move table_classes assignment into __init__ method
|
||||
# because otherwise reverse() call inside define_tables() won't work
|
||||
# (cannot query URL while they are being populated)
|
||||
self.table_classes = tuple(
|
||||
[define_tables(name, step_verbose_name)
|
||||
for (name, step_verbose_name) in STEP_NAMES])
|
||||
super(ManageServiceView, self).__init__(*args, **kwargs)
|
||||
|
||||
def _get_data(self, full_service_name):
|
||||
result = []
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue