def insert(request): try: args={} form = ItemForm() if request.method == 'POST': form = ItemForm(request.POST, request.FILES) if form.is_valid(): cd = form.cleaned_data title = cd['title'] author = cd['author'] pub = cd['pub'] pub_date = cd['pub_date'] isbn = cd['isbn'] lang = cd['lang'] url = cd['url'] awards = cd['awards'] summary = cd['summary'] category = cd['category'] img_url = cd['img_url'] created = datetime.datetime.now() user = request.user.id result = ItemList.objects.create(title=title, author=author, publisher=pub, publicationDate=pub_date, isbn=isbn, editionLanguage=lang, awards=awards, summary=summary, coverImageUrl=img_url, url=url, category_id=category, createdBy_id=user, created=created, modified=created, deleted=False) if result: # For uploading local cover image if cd['local_img']: local_img = UploadFile(file = cd['local_img'], created=created, modified=created, item_id=result.id) local_img.save() # For uploading table of content file if cd['table_of_content']: table_of_content = UploadTableofContent(file = cd['table_of_content'], uploadedDate=created, modified=created, item_id=result.id) table_of_content.save() # For uploading abstract file if cd['abstract']: abstract = UploadAbstract(file = cd['abstract'], uploadedDate=created, modified=created, item_id=result.id) abstract.save() # For copying image from url if img_url: filename = img_url.split('/')[-1] # Gets filename from URL urllib.request.urlretrieve( img_url, filename ) # This copies the file in project folder eg: inside F:/Bookservice # For moving the file from project folder to static/images/URLImages oldpath = settings.BASE_DIR + "/" + filename newpath = settings.BASE_DIR + '/static/images/URLImages/' shutil.move(oldpath,newpath) messages.add_message(request, messages.INFO, "Item Added Successfully!") else: messages.add_message(request, messages.ERROR, "Error occured during item insertion. Please Try Again.") return HttpResponseRedirect('/items/') else: args['form'] = form return render(request, 'items/add.html', args) else: args['form'] = form return render(request, 'items/add.html', args) except: messages.add_message(request, messages.ERROR, sys.exc_info()[1]) return render(request, 'items/index.html')
def post(self, request, **kwargs): bucketlist_id = kwargs['id'] bucketlist = BucketList.objects.filter(id=bucketlist_id).first() form = ItemForm(request.POST) item = form.save(commit=False) item.bucketlist = bucketlist item.done = False item.save() messages.success(request, item.name + ' Added to ' + bucketlist.name) return url_redirect(request)
def add(request): if request.method == 'GET': context = {'form': ItemForm} return render(request, 'items/add.html', context) elif request.method == 'POST': form = ItemForm(request.POST, request.FILES) if form.is_valid(): new_item = form.save(commit=False) new_item.created_by = request.user new_item.save() return redirect('home')
def post(self, request, slug): """processes the form and adds a blog """ obj = get_object_or_404(Item, slug=slug) form = ItemForm(request.POST, instance=obj) if form.is_valid(): form.save() print(form) return HttpResponseRedirect(reverse('item-details-page', args=[slug] )) else: return render(request, 'items/item_update_form.html', { 'form': form, })
def test_validation_both_fields(self): data = { 'url': 'http://kodziek.pl', } files = { 'file': SimpleUploadedFile('file', b'content'), } form = ItemForm(data, files) self.assertFalse(form.is_valid()) error_msg = 'Cannot use both fields (url and file) at the same time.' with self.assertRaisesMessage(ValidationError, error_msg): form.clean()
def post(self, request): """processes the form and adds a blog """ form = ItemForm(request.POST) form.instance.author = self.request.user print(form) if form.is_valid(): item = form.save() return HttpResponseRedirect(reverse('item-details-page', args=[item.slug] )) else: return render(request, 'add_item.html', { 'item_form': form, })
def edit(request, slug=""): item = get_object_or_404(Item, slug=slug) if(item.seller != request.user): request.flash['message'] = "Sorry you are not authorised to edit this item" return HttpResponseRedirect(reverse('my_listing')) form = ItemForm(initial={ 'name': item.name, 'price': round(float(item.price),2), 'description': item.description, 'condition': item.condition, 'longitude': item.longitude, 'latitude': item.latitude, 'category': item.category }) if request.method == "POST": form = ItemForm(request.POST, request.FILES) if form.is_valid(): data = form.cleaned_data image1 = data['image1'] image2 = data['image2'] image3 = data['image3'] if not ((is_image(image1) and is_image(image2) and is_image(image3))): request.flash['message'] = "Sorry please upload a picture in an acceptable format" return HttpResponseRedirect(reverse('add_item')) item.name = data['name'] item.description = data['description'] if data['condition']: item.condition = data['condition'] else: item.condition = 0 item.price = round(float(data['price']),2) item.longitude = data['longitude'] or 0 item.latitude = data['latitude'] or 0 item.seller = request.user item.category = data['category'] if data['is_service']: item.is_service = data['is_service'] else: item.is_service = False item.save() upload_item_images(image1, image2, image3, item) request.flash['message'] = "Item saved successfully" return HttpResponseRedirect(reverse('my_listing')) else: request.flash['message'] = "Form data is not valid" return render_to_response("items/edit.html", {'form': form, 'slug': slug, 'item': item}, context_instance=RequestContext(request))
def post(self, *args, **kwargs): """Get filled invoice form and create invoice """ item = get_object_or_404(Item, pk=kwargs['item_id']) form = ItemForm(self.request.POST, instance=item) if form.is_valid() : item = form.save(commit=False) item.save() messages.success(self.request, 'Item is successfully updated') return redirect('items') else: context = {} context['form'] = ItemForm(self.request.POST) return render(self.request, self.template_name, context)
def post(self, *args, **kwargs): """Get filled invoice form and create """ form = ItemForm(self.request.POST) if form.is_valid() : item = form.save(commit=False) item.owner = self.request.user item.company = self.request.user.company item.save() messages.success(self.request, 'Item is successfully Added') return redirect('items') else: context = {} context['form'] = form return render(self.request, self.template_name, context)
def get(self, *args, **kwargs): """Display invoice form """ item = get_object_or_404(Item, pk=kwargs['item_id']) context = {} context['form'] = ItemForm(instance=item) return render(self.request, self.template_name, context)
def UpdateItem(request, pk): item = get_object_or_404(Items, pk=pk) cat_id = item.category form = ItemForm(request.POST or None, instance=item) if form.is_valid(): item = form.save(commit=False) item.category = cat_id item.user = request.user item.save() return redirect('categories:single', slug=item.category.slug) return render(request, 'items/items_update_form.html', {"form": form, 'cat': cat_id })
def Order_update(request, pk, template_name='purchase/order_edit.html'): order = get_object_or_404(Order, pk=pk) order_form = ItemForm(request.POST or None, instance=order) if item_form.is_valid(): item = item_form.save(commit=False) name = item_form.cleaned_data.get('name') name = name.lower() item.name = name item.save() return redirect('Item_list') params = {'item_form': item_form} return render(request, template_name, params)
def add(request): # user, item = get_user_profile(request.user.id) form = ItemForm() if request.method == "POST": form = ItemForm(request.POST, request.FILES) if form.is_valid(): form.cleaned_data['seller'] = request.user data = form.cleaned_data image1 = data['image1'] image2 = data['image2'] image3 = data['image3'] if not (is_image(image1) and is_image(image2) and is_image(image3)): request.flash['message'] = "Sorry please upload a picture in an acceptable format" return HttpResponseRedirect(reverse('add_item')) item = Item( name=data['name'], description=data['description'], condition=data['condition']or 0, price=round(float(data['price']),2), longitude=data['longitude'] or 0, latitude=data['latitude'] or 0, seller=request.user, category=data['category'], location=data['location'], is_published = True, is_service = data['is_service'] ) item_obj = item.save() upload_item_images(image1, image2, image3, item) request.flash['message'] = "Item saved successfully" # else: # request.flash['message'] = "Sorry can't save item" return HttpResponseRedirect(reverse('my_listing')) else: request.flash['message'] = "Invalid data" return render_to_response("items/add.html", {'form': form}, context_instance=RequestContext(request))
def post(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) POST = request.POST if self.model == Item and ("add_links" in POST or "del_links" in POST or "store_search" in POST): if "add_links" in POST and self.object: form.link_aff(self.object) if "del_links" in POST and self.object: form.unlink_aff(self.object) if "store_search" in POST: form.stores_search() return self.render_to_response(self.get_context_data(form=form)) elif request.is_ajax() and "add_item" in POST: form = ItemForm(data=POST, request=request, prefix="item") if form.is_valid(): item = form.save() args = [item._meta.module_name, item.id] add_message("object-created", request, model=form._meta.model) messages = render_messages(request) data = { "id": item.id, "name": item.name, "messages": messages, "next": reverse("item_edit", args=args) } else: data = "invalid form" return HttpResponse(json.dumps(data), mimetype="application/json") elif form.is_valid(): key = "object-updated" if self.object else "object-created" add_message(key, request, model=self.model) return self.form_valid(form) else: add_message("form-invalid", request, model=self.model) return self.form_invalid(form)
def create_item(request): if request.method == "POST": form = ItemForm(request.POST, request.FILES) if form.is_valid(): form.save() messages.success(request, f'Item Added to Menu!') return redirect('menu') else: form = ItemForm() context = { 'form' : form } return render(request, 'items/create_item.htm', context)
def update_item(request, pk): item = get_object_or_404(Item, pk = pk) if request.method == "POST": form = ItemForm(request.POST, instance = item) if form.is_valid(): form.save() messages.success(request, f'Item Updated!') return redirect('menu') else: form = ItemForm(instance = item) context = { 'form' : form, 'item' : item } return render(request, 'items/update_item.htm', context)
def CreateItem(request, pk): cat = get_object_or_404(Category, pk=pk) if request.method == 'POST': form = ItemForm(request.POST) if form.is_valid(): item = form.save(commit=False) item.category = cat item.user = request.user item.save() return redirect('categories:single', slug=cat.slug) else: form = ItemForm() return render(request, 'items/items_form.html', {'form': form, 'cat': cat })
def new_item(request): if request.method == "POST": form = ItemForm(request.POST, request.FILES) if form.is_valid(): # if image instanceof png # file = request.FILES['file'] # print (request.FILES) # name = None for filename, file in request.FILES.iteritems(): name = request.FILES[filename].name.lower() #name = file.name.lower(); if name.endswith('.png') or name.endswith('.jpg') or name.endswith( '.jpeg'): item = form.save() item.owner = request.user item.save() return redirect('/items/my/') else: form = ItemForm() return render(request, 'item_form.html', {'form': form})
def get(self, request): """ Prints the form """ item_form = ItemForm() return render(request, 'add_item.html', { 'item_form': item_form })
def test_validation_invalid_file(self): files = { 'file': 'invalid file', } form = ItemForm(files=files) self.assertFalse(form.is_valid())
def test_validation_only_valid_file(self): files = { 'file': SimpleUploadedFile('file', b'content'), } form = ItemForm(files=files) self.assertTrue(form.is_valid())
def test_validation_only_valid_url(self): data = { 'url': 'http://kodziek.pl', } form = ItemForm(data) self.assertTrue(form.is_valid())
def test_validation_missing_data(self): form = ItemForm({}) self.assertFalse(form.is_valid()) error_msg = 'One of following fields is required: url or file' with self.assertRaisesMessage(ValidationError, error_msg): form.clean()
def edit(request, itemid): try: # args={} #select the item to be edited item = get_object_or_404(ItemList, pk=itemid) # get filename of image from url (cover image from url) oldimageurl = item.coverImageUrl oldfilename='' if oldimageurl: oldfilename = oldimageurl.split('/')[-1] # path and filename is stored. So it is split to get filename only. if empty coverimageurl then oldfilename is passed empty form = ItemForm(initial={'title': item.title, 'author':item.author, 'pub':item.publisher, 'pub_date':item.publicationDate,'isbn':item.isbn, 'lang':item.editionLanguage,'awards':item.awards,'summary':item.summary, 'url':item.url, 'category':item.category_id, 'img_url':item.coverImageUrl}) if request.method == 'POST': form = ItemForm(request.POST, request.FILES) if form.is_valid(): cd = form.cleaned_data title = cd['title'] author = cd['author'] pub = cd['pub'] pub_date = cd['pub_date'] isbn = cd['isbn'] lang = cd['lang'] url = cd['url'] awards = cd['awards'] summary = cd['summary'] category = cd['category'] local_img = cd['local_img'] img_url = cd['img_url'] table_of_content = cd ['table_of_content'] abstract = cd['abstract'] modified = datetime.datetime.now() result = ItemList.objects.filter(id=itemid).update(title=title, author=author, publisher=pub, publicationDate=pub_date, isbn=isbn, editionLanguage=lang, awards=awards, summary=summary, url=url, coverImageUrl=img_url, category_id=category, modified=modified) if result: if local_img: # book_image = UploadFile.objects.filter(item_id=itemid, deleted=False) # del_img = book_image.file # os.remove(del_img) # book_image.delete() result = UploadFile.objects.filter(item_id=itemid).update(deleted=True, modified=modified) local_img = UploadFile(file = request.FILES['local_img'], created=modified, modified=modified, item_id=itemid) local_img.save() # For editing image from url. The old image from url is also deleted form folder if img_url != oldimageurl: if oldimageurl: # Removes old file if url is changed oldimagepath = settings.BASE_DIR + '/static/images/URLImages/' + oldfilename os.remove(oldimagepath) if img_url: # copies new file if url is changed filename = img_url.split('/')[-1] # Gets filename from URL urllib.request.urlretrieve( img_url, filename ) # This copies the file in project folder eg: inside F:/Bookservice # For moving the file from project folder to static/images/URLImages oldpath = settings.BASE_DIR + "/" + filename newpath = settings.BASE_DIR + '/static/images/URLImages/' shutil.move(oldpath,newpath) # if user selects new table of content pdf file if table_of_content: #set deleted = true to old record result = UploadTableofContent.objects.filter(item_id=itemid).update(deleted=True, modified=modified) table_of_content = UploadTableofContent(file = cd['table_of_content'], uploadedDate=modified, modified=modified, item_id=itemid) table_of_content.save() # if user selects new abstract pdf file if abstract: #set deleted = true to old record result = UploadAbstract.objects.filter(item_id=itemid).update(deleted=True, modified=modified) abstract = UploadAbstract(file = cd['abstract'], uploadedDate=modified, modified=modified, item_id=itemid) abstract.save() messages.add_message(request, messages.INFO, "Item Edited Successfully!") else: messages.add_message(request, messages.ERROR, "Error occured. Please Try Again.") return HttpResponseRedirect('/items/') else: # args['form'] = form return render(request, 'items/edit.html', {'form':form, 'itemid':itemid, 'imageurl':item.coverImageUrl}) else: # args['form'] = form #For selecting the uploaded local cover image and pass to templates localbook_image = UploadFile.objects.filter(item_id=itemid, deleted=False) if localbook_image: return render(request, 'items/edit.html', {'form':form, 'itemid':itemid, 'item':item, 'filename_from_url':oldfilename , 'image':localbook_image}) else: # if local cover image not available no need to pass to template return render(request, 'items/edit.html', {'form':form, 'item':item, 'itemid':itemid, 'filename_from_url':oldfilename}) except OSError: print ("No file for Delete ") except: messages.add_message(request, messages.ERROR, sys.exc_info()[1]) return render(request, 'items/index.html')
def get_context_data(self, **kwargs): kwargs.update({"statuses": STATUSES}) if self.model is Question: form = ItemForm(request=self.request, prefix="item") kwargs.update({"i_form": form}) return super(ContentFormMixin, self).get_context_data(**kwargs)
def get(self, *args, **kwargs): """Display invoice form """ context = {} context['form'] = ItemForm() return render(self.request, self.template_name, context)
def test_validation_invalid_url(self): data = { 'url': 'invalid url', } form = ItemForm(data) self.assertFalse(form.is_valid())