def add_item_view(request): context = {} if request.method == 'POST': form = AddItemForm(request.POST, request.FILES) if form.is_valid(): form.save() return HttpResponseRedirect('http://127.0.0.1:8000/items/') else: context['add_item_form'] = form else: #GET pass # form = ItemRegistrationForm() # context['add_item_form'] = form return render(request, 'items/add_item.html', {})
def apply(request): if request.method == 'POST': form = AddItemForm(request.POST) isValid = True if Blacklist.objects.filter(title=request.POST['title']).exists(): messages.success(request, 'Invalid item.') isValid = False else: if Item.objects.filter(title=request.POST['title']).exists(): messages.success(request, 'Item already exists.') isValid = False if form.is_valid() and isValid: if request.user.profile.is_su: Item.objects.create( owner=request.user, title=request.POST.get('title'), key_words=request.POST.get('key_words'), description=request.POST.get('description'), picture=request.POST.get('picture')) messages.success(request, 'New item added.') else: application = form.save(commit=False) application.owner = request.user application.save() messages.success(request, 'Item has been sent to for review.') return redirect('index') else: form = AddItemForm() content = {'form': form} return render(request, 'items/apply.html', content)
def get(self): form = AddItemForm() categories = Category.objects.all() licenses = License.objects.all() form.set_categories(categories, g.lang) form.set_licenses(licenses) return render_template('items/add_item.html', form=form)
def section_view(request, slug): item_form = AddItemForm() category_form = CategoryForm() section = get_object_or_404(Section, slug=slug) categories = Category.objects.filter(section=section) if request.method == 'POST': item_form = AddItemForm(request.POST) if item_form.is_valid(): item_form.save(commit=True) return redirect('section_view', slug=section.slug) return render( request, 'sections/section_view.html', { 'section': section, 'categories': categories, 'category_form': category_form, 'item_form': item_form })
def post(self): form = AddItemForm() item = Item() categories = Category.objects.all() licenses = License.objects.all() form.set_categories(categories, g.lang) form.set_licenses(licenses) if form.validate_on_submit(): # first, the user has to share something ! if not form.github.data and not form.files.data: flash('Neither a repo URL nor files has been shared, come on!', category='alert') return render_template('items/add_item.html', form=form) # give that something at least one title if not form.ar_title.data and not form.fr_title.data and \ not form.en_title.data: flash('You need to give this item at least one title, \ just pick one language and name it!', category='alert') return render_template('items/add_item.html', form=form) # now we can proceed ar_title = Title() fr_title = Title() en_title = Title() ar_title.title = form.ar_title.data.strip() ar_title.lang = 'ar' fr_title.title = form.fr_title.data.strip() fr_title.lang = 'fr' en_title.title = form.en_title.data.strip() en_title.lang = 'en' item.titles.append(ar_title) item.titles.append(fr_title) item.titles.append(en_title) item.description = form.description.data item.tags = form.tags.data.strip().split(',') item.category = Category.objects.get(category_id= int(form.category.data)) item.submitter = User.objects.get(id=current_user.id) thumbnail = request.files['thumbnail'] thumbnail_name = secure_filename(thumbnail.filename) if thumbnail and allowed_thumbnails(thumbnail_name): ext = thumbnail.mimetype.split('/')[-1] # use the 'thumbnail' name for all thumbnails filename = '.'.join(["thumbnail", ext]) item.thumbnail.put(thumbnail.stream, content_type=thumbnail.mimetype, filename=filename) if form.github.data: item.github = form.github.data item.save() # no need to process any uploaded files flash('Item submitted successfully', category='success') return redirect(url_for('items.detail', item_id=item.item_id)) else: item.license = License.objects.get(license_id= int(form.license.data)) else: flash('upload unsuccessful', category='error') return render_template('items/add_item.html', form=form) uploaded_files = request.files.getlist("files") for file in uploaded_files: # Make the filename safe, remove unsupported chars filename = secure_filename(file.filename) # Check if the file is one of the allowed types/extensions if file and allowed_file(filename): # put the file in the ListField. # see https://gist.github.com/tfausak/1299339 file_ = GridFSProxy() file_.put(file.stream, content_type=file.mimetype, filename=filename) item.files.append(file_) # Save the thing item.save() flash('Item uploaded successfully', category='success') return redirect(url_for('items.detail', item_id=item.item_id))