def post(self): form = AddItemForm() item = Item() if form.validate_on_submit(): ar_title = Titles() fr_title = Titles() en_title = Titles() 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.submitter = User.objects.get(id=current_user.id) else: flash('upload unsuccessful', 'error') return render_template('items/add_item.html', form=form) uploaded_files = request.files.getlist("files") 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) 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('upload successful') return render_template('items/add_item.html', form=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))
def post(self, item_id): item = Item.objects.get_or_404(item_id=item_id) # only admins or the item submitter can edit the item if item.submitter.id != current_user.id: if not current_user.is_admin: abort(403) form = None if item.github: form = EditGithubItemForm() else: form = EditItemForm() licenses = License.objects.all() form.set_licenses(licenses) categories = Category.objects.all() form.set_categories(categories, g.lang) if form.validate_on_submit(): for title in item.titles: # ugly, I'll make it shorter, later... if title.lang == 'ar': title.title = form.ar_title.data.strip() elif title.lang == 'en': title.title = form.en_title.data.strip() else: title.title = form.fr_title.data.strip() item.tags = form.tags.data.strip().split(',') item.category = Category.objects.get( category_id=int(form.category.data)) if form.thumbnail.data: # if the user has uploaded new thumbnail # remove the old one item.thumbnail.delete() # replace it with the new one 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.blog_post.data.strip(): item.blog_post = form.blog_post.data if not item.github: item.description = form.description.data item.license = License.objects.get( license_id=int(form.license.data)) else: item.github = form.github.data item.save() # no need to process any uploaded files flash('Item updated successfully', category='success') return render_template('items/edit_item.html', form=form, item=item) else: flash("Couldn't update item", category='error') return render_template('items/edit_item.html', form=form, item=item) # now, replace them with the new ones uploaded_files = request.files.getlist("files") new_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) new_files.append(file_) if len(new_files) > 0: # delete old files first for file in item.files: file.delete() # push the new one item.files = new_files # Save the thing item.save() flash('Item updated successfully', category='success') return render_template('items/edit_item.html', form=form, item=item)
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))
def post(self, item_id): item = Item.objects.get_or_404(item_id=item_id) # only admins or the item submitter can edit the item if item.submitter.id != current_user.id: if not current_user.is_admin: abort(403) form = None if item.github: form = EditGithubItemForm() else: form = EditItemForm() licenses = License.objects.all() form.set_licenses(licenses) categories = Category.objects.all() form.set_categories(categories, g.lang) if form.validate_on_submit(): for title in item.titles: # ugly, I'll make it shorter, later... if title.lang == 'ar': title.title = form.ar_title.data.strip() elif title.lang == 'en': title.title = form.en_title.data.strip() else: title.title = form.fr_title.data.strip() item.tags = form.tags.data.strip().split(',') item.category = Category.objects.get(category_id= int(form.category.data)) if form.thumbnail.data: # if the user has uploaded new thumbnail # remove the old one item.thumbnail.delete() # replace it with the new one 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.blog_post.data.strip(): item.blog_post = form.blog_post.data if not item.github: item.description = form.description.data item.license = License.objects.get(license_id= int(form.license.data)) else: item.github = form.github.data item.save() # no need to process any uploaded files flash('Item updated successfully', category='success') return render_template('items/edit_item.html', form=form, item=item) else: flash("Couldn't update item", category='error') return render_template('items/edit_item.html', form=form, item=item) # now, replace them with the new ones uploaded_files = request.files.getlist("files") new_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) new_files.append(file_) if len(new_files) > 0: # delete old files first for file in item.files: file.delete() # push the new one item.files = new_files # Save the thing item.save() flash('Item updated successfully', category='success') return render_template('items/edit_item.html', form=form, item=item)