def manifest(request): form = forms.NewWebappForm(request.POST or None, request=request) features_form = forms.AppFeaturesForm(request.POST or None) features_form_valid = features_form.is_valid() if (request.method == 'POST' and form.is_valid() and features_form_valid): with transaction.commit_on_success(): upload = form.cleaned_data['upload'] addon = Addon.from_upload( upload, [Platform.objects.get(id=amo.PLATFORM_ALL.id)], is_packaged=form.is_packaged()) if form.is_packaged(): validation = json.loads(upload.validation) escalate_prerelease_permissions( addon, validation, addon.current_version) # Set the device type. for device in form.get_devices(): addon.addondevicetype_set.get_or_create( device_type=device.id) # Set the premium type, only bother if it's not free. premium = form.get_paid() if premium: addon.update(premium_type=premium) if addon.has_icon_in_manifest(): # Fetch the icon, do polling. addon.update(icon_type='image/png') else: # In this case there is no need to do any polling. addon.update(icon_type='') AddonUser(addon=addon, user=request.user).save() # Checking it once. Checking it twice. AppSubmissionChecklist.objects.create(addon=addon, terms=True, manifest=True, details=False) # Create feature profile. addon.current_version.features.update(**features_form.cleaned_data) # Call task outside of `commit_on_success` to avoid it running before # the transaction is committed and not finding the app. tasks.fetch_icon.delay(addon) return redirect('submit.app.details', addon.app_slug) return render(request, 'submit/manifest.html', {'step': 'manifest', 'features_form': features_form, 'form': form, 'PLATFORMS_NAMES': PLATFORMS_NAMES})
def update_last_updated(addon_id): qs = Addon._last_updated_queries() if not Webapp.objects.filter(pk=addon_id).exists(): task_log.info("[1@None] Updating last updated for %s failed, no addon found" % addon_id) return task_log.info("[1@None] Updating last updated for %s." % addon_id) res = qs.filter(pk=addon_id).using("default").values_list("id", "last_updated") if res: pk, t = res[0] Webapp.objects.filter(pk=pk).update(last_updated=t)
def update_last_updated(addon_id): qs = Addon._last_updated_queries() if not Webapp.objects.filter(pk=addon_id).exists(): task_log.info( '[1@None] Updating last updated for %s failed, no addon found' % addon_id) return task_log.info('[1@None] Updating last updated for %s.' % addon_id) res = (qs.filter(pk=addon_id) .using('default') .values_list('id', 'last_updated')) if res: pk, t = res[0] Webapp.objects.filter(pk=pk).update(last_updated=t)
def obj_create(self, bundle, request, **kwargs): form = UploadForm(bundle.data) if not form.is_valid(): raise self.form_errors(form) if not (OwnerAuthorization() .is_authorized(request, object=form.obj)): raise ImmediateHttpResponse(response=http.HttpForbidden()) plats = [Platform.objects.get(id=amo.PLATFORM_ALL.id)] # Create app, user and fetch the icon. bundle.obj = Addon.from_upload(form.obj, plats) AddonUser(addon=bundle.obj, user=request.amo_user).save() tasks.fetch_icon.delay(bundle.obj) log.info('App created: %s' % bundle.obj.pk) return bundle
def obj_create(self, bundle, request, **kwargs): form = UploadForm(bundle.data) if not form.is_valid(): raise self.form_errors(form) if not (OwnerAuthorization() .is_authorized(request, object=form.obj)): raise ImmediateHttpResponse(response=http.HttpForbidden()) plats = [Platform.objects.get(id=amo.PLATFORM_ALL.id)] # Create app, user and fetch the icon. bundle.obj = Addon.from_upload(form.obj, plats) AddonUser(addon=bundle.obj, user=request.amo_user).save() self._icons_and_images(bundle.obj) log.info('App created: %s' % bundle.obj.pk) return bundle
def update_last_updated(addon_id): queries = Addon._last_updated_queries() try: addon = Addon.objects.get(pk=addon_id) except Addon.DoesNotExist: task_log.info( '[1@None] Updating last updated for %s failed, no addon found' % addon_id) return task_log.info('[1@None] Updating last updated for %s.' % addon_id) if addon.is_webapp(): q = 'webapps' elif addon.status == amo.STATUS_PUBLIC: q = 'public' else: q = 'exp' qs = queries[q].filter(pk=addon_id).using('default') res = qs.values_list('id', 'last_updated') if res: pk, t = res[0] Addon.objects.filter(pk=pk).update(last_updated=t)