def get_note_attachment(request, file_id): if request.user.is_authenticated(): try: note_file = ZornaNoteFile.objects.get(pk=file_id) note = note_file.note if note.owner != request.user: check = get_acl_for_model(ZornaNoteCategory) if not check.viewer_zornanotecategory(note.category, request.user): return HttpResponseForbidden() except: return HttpResponseForbidden() path = "%s/%s" % (get_upload_notes_attachments(), note_file.file.name) fp = open(path, 'rb') content_type = note_file.mimetype response = HttpResponse(fp.read(), content_type=content_type) response['Content-Length'] = os.path.getsize(path) response['Content-Disposition'] = "attachment; filename=%s" % os.path.basename( note_file.file.name) return response else: return HttpResponseForbidden()
def get_note_attachment(request, file_id): if request.user.is_authenticated(): try: note_file = ZornaNoteFile.objects.get(pk=file_id) note = note_file.note if note.owner != request.user: check = get_acl_for_model(ZornaNoteCategory) if not check.viewer_zornanotecategory(note.category, request.user): return HttpResponseForbidden() except: return HttpResponseForbidden() path = "%s/%s" % (get_upload_notes_attachments(), note_file.file.name) fp = open(path, 'rb') content_type = note_file.mimetype response = HttpResponse(fp.read(), content_type=content_type) response['Content-Length'] = os.path.getsize(path) response[ 'Content-Disposition'] = "attachment; filename=%s" % os.path.basename( note_file.file.name) return response else: return HttpResponseForbidden()
ordering = ['-time_updated'] db_table = settings.TABLE_PREFIX + "notes" def __unicode__(self): return u"[%s] %s" % (self.owner.username, self.title) def delete(self): # Deleting all asociated tags. Tag.objects.update_tags(self, None) super(ZornaNote, self).delete() def get_tag_list(self): return parse_tag_input(self.tags) fs = FileSystemStorage(location=get_upload_notes_attachments(), base_url='') def get_note_filepath(instance, filename): s = os.path.splitext(filename) filename = u"%s%s" % (slugify(s[0]), s[1]) return os.path.join(u"u%s/%s" % (str(instance.note.pk), filename)) class ZornaNoteFile(models.Model): note = models.ForeignKey(ZornaNote, blank=True, editable=False) file = models.FileField( storage=fs, max_length=1024, upload_to=get_note_filepath, blank=True) description = models.CharField(max_length=255) mimetype = models.CharField(max_length=255, editable=False)
def notes_edit_note(request): ret = {} if request.user.is_authenticated(): note = request.REQUEST.get("note", 0) try: note = ZornaNote.objects.get(pk=note, owner=request.user) except: ret['status'] = 'error' ret['message'] = gettext(u'Invalid note') return HttpResponse(simplejson.dumps(ret)) attachments = note.zornanotefile_set.all() nbinitialfiles = len(attachments) if request.method == 'POST': if request.POST.has_key('bdelnote'): category = note.category.pk try: shutil.rmtree(u"%s/u%s" % (get_upload_notes_attachments(), note.pk)) except: pass note.zornanotefile_set.all().delete() Tag.objects.update_tags(note, None) note.delete() ret['status'] = 'success' ret['message'] = gettext(u'Note deleted successfully') ret['data'] = notes_get_content(request, {}, category) return HttpResponse(simplejson.dumps(ret)) fa_set = formset_factory(ZornaNoteFileForm, extra=2 - nbinitialfiles) form_attachments_set = fa_set(request.POST, request.FILES) form_note = ZornaNoteForm(request, request.POST, instance=note) if form_note.is_valid() and form_attachments_set.is_valid(): if nbinitialfiles and request.POST.has_key( 'selected_attachments'): att = request.POST.getlist('selected_attachments') for f in att: ZornaNoteFile.objects.get(pk=f).delete() note = form_note.save(commit=False) note.owner = request.user note.save() bupload = False for i in range(0, form_attachments_set.total_form_count()): form = form_attachments_set.forms[i] try: note_file = request.FILES['form-' + str(i) + '-file'] attachment = ZornaNoteFile( description=form.cleaned_data['description'], mimetype=note_file.content_type) attachment.note = note attachment.save() attachment.file.save(note_file.name, note_file) except: pass ret['status'] = 'success' ret['message'] = gettext(u'Note updated successfully') ret['data'] = notes_get_content(request, {}, note.category.pk) return HttpResponse('<textarea>' + simplejson.dumps(ret) + '</textarea>') else: extra_context = { "form_note": form_note, 'form_attachments': form_attachments_set, 'attachments': attachments, } extra_context['category'] = note.category extra_context[ 'category_ancestors'] = note.category.get_ancestors() extra_context['url_action'] = reverse( 'notes_edit_note') + '?note=' + str(note.pk) ret['status'] = 'error' t = loader.get_template('notes/notes_edit_note.html') c = RequestContext(request, extra_context) ret['data'] = t.render(c) return HttpResponse('<textarea>' + simplejson.dumps(ret) + '</textarea>') else: fa_set = formset_factory(ZornaNoteFileForm, extra=2 - nbinitialfiles) form_attachments_set = fa_set() form_note = ZornaNoteForm(request, instance=note, initial={'tags': note.tags}) extra_context = { "form_note": form_note, 'form_attachments': form_attachments_set, 'attachments': attachments, } extra_context['category'] = note.category extra_context['category_ancestors'] = note.category.get_ancestors() extra_context['url_action'] = reverse( 'notes_edit_note') + '?note=' + str(note.pk) t = loader.get_template('notes/notes_edit_note.html') c = RequestContext(request, extra_context) ret['data'] = t.render(c) ret['status'] = 'success' else: ret['status'] = 'error' ret['message'] = gettext(u'Access denied') return HttpResponse(simplejson.dumps(ret))
ordering = ['-time_updated'] db_table = settings.TABLE_PREFIX + "notes" def __unicode__(self): return u"[%s] %s" % (self.owner.username, self.title) def delete(self): # Deleting all asociated tags. Tag.objects.update_tags(self, None) super(ZornaNote, self).delete() def get_tag_list(self): return parse_tag_input(self.tags) fs = FileSystemStorage(location=get_upload_notes_attachments(), base_url='') def get_note_filepath(instance, filename): s = os.path.splitext(filename) filename = u"%s%s" % (slugify(s[0]), s[1]) return os.path.join(u"u%s/%s" % (str(instance.note.pk), filename)) class ZornaNoteFile(models.Model): note = models.ForeignKey(ZornaNote, blank=True, editable=False) file = models.FileField(storage=fs, max_length=1024, upload_to=get_note_filepath, blank=True) description = models.CharField(max_length=255)
def notes_edit_note(request): ret = {} if request.user.is_authenticated(): note = request.REQUEST.get("note", 0) try: note = ZornaNote.objects.get(pk=note, owner=request.user) except: ret['status'] = 'error' ret['message'] = gettext(u'Invalid note') return HttpResponse(simplejson.dumps(ret)) attachments = note.zornanotefile_set.all() nbinitialfiles = len(attachments) if request.method == 'POST': if request.POST.has_key('bdelnote'): category = note.category.pk try: shutil.rmtree(u"%s/u%s" % ( get_upload_notes_attachments(), note.pk)) except: pass note.zornanotefile_set.all().delete() Tag.objects.update_tags(note, None) note.delete() ret['status'] = 'success' ret['message'] = gettext(u'Note deleted successfully') ret['data'] = notes_get_content(request, {}, category) return HttpResponse(simplejson.dumps(ret)) fa_set = formset_factory( ZornaNoteFileForm, extra=2 - nbinitialfiles) form_attachments_set = fa_set(request.POST, request.FILES) form_note = ZornaNoteForm(request, request.POST, instance=note) if form_note.is_valid() and form_attachments_set.is_valid(): if nbinitialfiles and request.POST.has_key('selected_attachments'): att = request.POST.getlist('selected_attachments') for f in att: ZornaNoteFile.objects.get(pk=f).delete() note = form_note.save(commit=False) note.owner = request.user note.save() bupload = False for i in range(0, form_attachments_set.total_form_count()): form = form_attachments_set.forms[i] try: note_file = request.FILES['form-' + str(i) + '-file'] attachment = ZornaNoteFile(description=form.cleaned_data[ 'description'], mimetype=note_file.content_type) attachment.note = note attachment.save() attachment.file.save(note_file.name, note_file) except: pass ret['status'] = 'success' ret['message'] = gettext(u'Note updated successfully') ret['data'] = notes_get_content(request, {}, note.category.pk) return HttpResponse('<textarea>' + simplejson.dumps(ret) + '</textarea>') else: extra_context = {"form_note": form_note, 'form_attachments': form_attachments_set, 'attachments': attachments, } extra_context['category'] = note.category extra_context[ 'category_ancestors'] = note.category.get_ancestors() extra_context['url_action'] = reverse( 'notes_edit_note') + '?note=' + str(note.pk) ret['status'] = 'error' t = loader.get_template('notes/notes_edit_note.html') c = RequestContext(request, extra_context) ret['data'] = t.render(c) return HttpResponse('<textarea>' + simplejson.dumps(ret) + '</textarea>') else: fa_set = formset_factory( ZornaNoteFileForm, extra=2 - nbinitialfiles) form_attachments_set = fa_set() form_note = ZornaNoteForm( request, instance=note, initial={'tags': note.tags}) extra_context = {"form_note": form_note, 'form_attachments': form_attachments_set, 'attachments': attachments, } extra_context['category'] = note.category extra_context['category_ancestors'] = note.category.get_ancestors() extra_context['url_action'] = reverse( 'notes_edit_note') + '?note=' + str(note.pk) t = loader.get_template('notes/notes_edit_note.html') c = RequestContext(request, extra_context) ret['data'] = t.render(c) ret['status'] = 'success' else: ret['status'] = 'error' ret['message'] = gettext(u'Access denied') return HttpResponse(simplejson.dumps(ret))