Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
        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)
Пример #4
0
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))
Пример #5
0
        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)
Пример #6
0
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))