Source code for notes.views

from django.shortcuts import render,redirect,get_object_or_404
# from .forms import NotesUserCreate,NotesListUpdate,NotesForm,NotesMediaFileForm,NotesImgForm,MyDocForm
from .forms import NotesListUpdate,NotesForm,NotesMediaFileForm,NotesImgForm,MyDocForm

from core.models import Account,Image
from .models import Notes,NotesMedia
from django.contrib import messages
from datetime import date,timedelta,datetime
from core.functions import get_account_name
from .functions import create_note,validate_uploaded_file_pdf,calc_note_score
from django.contrib.auth.decorators import login_required
import decimal 

[docs] @login_required(login_url='login') def note_update(request, pk): # Display Note for update # Update an existing note #Important a note may be updated multiple times # Remember the same note will be used for multiple wines # get account details account_name = get_account_name(request) account_id= Account.objects.get(account=account_name) myinstance = Notes.objects.get(id=pk) try: myfiles = NotesMedia.objects.filter(note=myinstance.id) #myfile_count = NotesMedia.objects.filter(note=myinstance.id).count() myfile_count=myfiles.count() except: myfile_count = '0' print('try failed') try: icon = myinstance.image.url default = 1 except: icon = '/cellar/media/wine-images/default.jpeg' default = 0 # Display an image of the wine if it exists # Check if the Notes wine url is populated - and set flag for template # Get existing Notes details for the form update_form=NotesForm(instance=myinstance) if request.method == 'POST': notes_update = NotesListUpdate(request.POST,instance=myinstance, initial={'account': account_id}) notes_update.type = myinstance.type msg = myinstance.title if notes_update.is_valid(): #Update notes with contents poted on form notes_text = request.POST['notes'] notes_update.account = account_id notes_update.save() #Auto add the score to the note just saved notes_score = Notes.objects.get(id=pk) print('notes_score id =',notes_score.id) notes_score.notes = str(calc_note_score(notes_score.id)) + notes_score.notes #print ('score = ',notes_update.notes) notes_score.save() #add_notes_score.notes = score + add_notes_score.notes #add_notes_score.save() msg = msg + ' note updated.' messages.success(request, msg) # Redirect to the main list page and display success response = redirect('notes:note_list') return response else: context = {'form':notes_update, 'item':myinstance, 'icon':icon, 'default': default, 'myfiles': myfiles, 'myfile_count':myfile_count, } return render(request, 'notes/notes-form.html',context) return render(request,'notes/notes-form.html',{ 'form':update_form, 'item':myinstance, 'icon':icon, 'default':default, 'myfiles': myfiles, 'myfile_count':myfile_count, })
[docs] @login_required(login_url='login') def note_list(request): # List all notes #Added account 8 June account_name = get_account_name(request) account_id= Account.objects.get(account=account_name) list=Notes.objects.filter(account=account_id.id).order_by('-last_update') context = {"notes": list, } return render(request, 'notes/notes-list.html',context)
[docs] @login_required(login_url='login') def note_form(request):#Create a Tasting Note - from Menu item # get account details account_name = get_account_name(request) account_id= Account.objects.get(account=account_name) # create the Note record create_note('T',account_id) # get the Note record new_note = Notes.objects.last() return redirect('notes:note_update',new_note.pk)
[docs] @login_required(login_url='login') def note_delete(request,id): # Delete a note Notes.objects.filter(id=id).delete() return redirect('notes:note_list')
[docs] @login_required(login_url='login') def upload_img_form(request,id): #Change the image for the note # get the Notes record for the update and create form my_instance = Notes.objects.get(pk=id) update_form=NotesImgForm(instance=my_instance) icon = my_instance.image.url if request.method == 'POST': form=NotesImgForm(request.POST,request.FILES) print('Post data =',request.POST,request.FILES) if form.is_valid(): #update the notes record my_instance.image=form.cleaned_data['image'] my_instance.save() msg = my_instance.title + ' image updated successfully.' messages.success(request, msg) #return redirect('note_list') return redirect('notes:note_update', pk=my_instance.pk) else: context = {'form':form} return render(request,'notes/imageform.html',context) context = {'form':update_form, 'details':my_instance, 'icon':icon } return render(request,'notes/imageform.html',context)
[docs] @login_required(login_url='login') def list_wines(request): wines = Notes.objects.all() totalsize = 0 for s in wines: totalsize = totalsize + s.image.size totalsize = totalsize/1024/1024 totalsize = str(round(decimal(totalsize), 2))+' Mb' context = {'wines':wines,'totalsize':totalsize} return render(request,'/image_list.html',context)
[docs] @login_required(login_url='login') def delete_image(request,pk): image = get_object_or_404(Notes,pk=pk) image.image.delete() return redirect('notes:list_wines')
[docs] @login_required(login_url='login') def attach_doc(request,id):# Add a PDF file to a note try: my_notes_instance = Notes.objects.get(pk=id) except: msg = 'The note id does not exist - unexpected error' messages.error(request, msg) return redirect('notes:note_list') icon = my_notes_instance.image.url if request.method == "POST": # Fetching the form data docname = request.POST["docname"] uploadedfile = request.FILES["uploadedfile"] #check mime type of uploaded file = pdf if validate_uploaded_file_pdf(uploadedfile)==True: # Add extra required fields note=my_notes_instance user =request.user # Saving the information in the database document = NotesMedia(note=note, file=uploadedfile, name=docname, user = user ) try: document.save() msg = docname + ' added successfully.' messages.success(request, msg) return redirect('notes:note_update', pk=my_notes_instance.id) except: msg = 'Unknown error saving ' + docname + ',upload failed.' messages.error(request, msg) return redirect('notes:note_update', pk=my_notes_instance.id) else: # File not a PDF msg = docname + ' not a pdf file, only valid pdf files can be uploaded.' messages.error(request, msg) return redirect('notes:note_update', pk=my_notes_instance.id) return render(request, "notes/mydocform.html",context={"icon": icon, 'details':my_notes_instance })