in src/olympia/devhub/views.py [0:0]
def _submit_source(request, addon, version, submit_page, next_view):
posting = request.method == 'POST'
redirect_args = (
[addon.slug, version.pk]
if version and submit_page == 'version'
else [addon.slug]
)
if addon.type != amo.ADDON_EXTENSION:
return redirect(next_view, *redirect_args)
source_form = forms.SourceForm(
request.POST or None,
request.FILES or None,
instance=version,
request=request,
)
has_source = source_form.data.get('has_source') == 'yes'
if has_source and posting:
timer = StopWatch('devhub.views._submit_source.')
timer.start()
log.info(
'_submit_source, form populated, addon.slug: %s, version.pk: %s',
addon.slug,
version.pk,
)
timer.log_interval('1.form_populated')
if request.method == 'POST' and source_form.is_valid():
if has_source:
log.info(
'_submit_source, form validated, addon.slug: %s, version.pk: %s',
addon.slug,
version.pk,
)
timer.log_interval('2.form_validated')
if source_form.cleaned_data.get('source'):
source_form.save()
version.flag_if_sources_were_provided(request.user)
log.info(
'_submit_source, form saved, addon.slug: %s, version.pk: %s',
addon.slug,
version.pk,
)
timer.log_interval('3.form_saved')
result = redirect(next_view, *redirect_args)
if has_source:
log.info(
'_submit_source, redirecting to next view, '
+ 'addon.slug: %s, version.pk: %s',
addon.slug,
version.pk,
)
timer.log_interval('4.redirecting_to_next_view')
return result
context = {
'source_form': source_form,
'addon': addon,
'version': version,
'submit_page': submit_page,
'max_upload_size': settings.MAX_UPLOAD_SIZE,
}
if has_source and posting:
log.info(
'_submit_source, validation failed, re-displaying the template, '
+ 'addon.slug: %s, version.pk: %s',
addon.slug,
version.pk,
)
timer.log_interval('5.validation_failed_re-displaying_the_template')
return TemplateResponse(
request, 'devhub/addons/submit/source.html', context=context
)