aboutsummaryrefslogtreecommitdiffstats
path: root/notes
diff options
context:
space:
mode:
authorFilipp Lepalaan <f@0x00.co>2013-02-01 09:49:20 +0200
committerFilipp Lepalaan <f@0x00.co>2013-02-01 09:49:20 +0200
commit2e9cd65e869b8bd31e6e6ba66b52705c023af5ec (patch)
treefda1874e6338022ee5666330249650fe41193cf1 /notes
parentc0121b9b7f5041f6434a2e2dd24d3c68ed84b582 (diff)
downloadopus-2e9cd65e869b8bd31e6e6ba66b52705c023af5ec.tar.gz
opus-2e9cd65e869b8bd31e6e6ba66b52705c023af5ec.tar.bz2
opus-2e9cd65e869b8bd31e6e6ba66b52705c023af5ec.zip
Some improvementsHEADmaster
Diffstat (limited to 'notes')
-rw-r--r--notes/models.py8
-rw-r--r--notes/templates/edit.html13
-rw-r--r--notes/templates/view.html10
-rw-r--r--notes/views.py38
4 files changed, 55 insertions, 14 deletions
diff --git a/notes/models.py b/notes/models.py
index 2cd5ca6..25a08cf 100644
--- a/notes/models.py
+++ b/notes/models.py
@@ -14,7 +14,7 @@ class Tag(models.Model):
class Note(models.Model):
user = models.ForeignKey(User)
shared = models.BooleanField(default=True)
- title = models.CharField(max_length=140, null=True)
+ title = models.CharField(max_length=140, null=True, default=u'New Note')
tags = models.ManyToManyField(Tag, null=True, blank=True)
def get_date(self):
@@ -51,11 +51,13 @@ class Attachment(models.Model):
content = models.FileField(upload_to='uploads')
note = models.ForeignKey(Note)
+ def get_name(self):
+ import os.path
+ return os.path.basename(self.content.name)
+
@receiver(post_save, sender=Version)
def version_saved(sender, instance, created, **kwargs):
-
tags = re.findall('#(\w+)', instance.content)
-
for t in tags:
tag = Tag.objects.get_or_create(title=t)[0]
instance.note.tags.add(tag)
diff --git a/notes/templates/edit.html b/notes/templates/edit.html
index 6d2ec1e..51c1e7d 100644
--- a/notes/templates/edit.html
+++ b/notes/templates/edit.html
@@ -3,14 +3,19 @@
{% block content %}
<div data-role="page">
<div data-role="header">
- <a href="/notes/" data-icon="arrow-l">Notes</a>
- <h1>New Note</h1>
- <a href="/notes/" id="done">Done</a>
+ <a href="/notes/" data-icon="arrow-l" data-ajax="false">Notes</a>
+ <h1>{{ note.title }}</h1>
+ <a href="#" id="done">Done</a>
</div>
<div data-role="content">
- <form action="" method="post" id="noteForm" enctype="multipart/form-data">
+ <form action="" method="post" id="noteForm" enctype="multipart/form-data" data-ajax="false">
{% csrf_token %}
{{ form }}
+ <ul data-role="listview" data-inset="true">
+ {% for a in note.attachment_set.all %}
+ <li><a href="/notes/{{ note.id }}/files/{{ a.id }}/delete/">{{ a.get_name }}</a></li>
+ {% endfor %}
+ </ul>
<button type="submit" data-theme="b">Save</button>
{% if form.is_bound %}
<a href="delete/" data-role="button">Delete</a>
diff --git a/notes/templates/view.html b/notes/templates/view.html
index a6d3473..fa2a59d 100644
--- a/notes/templates/view.html
+++ b/notes/templates/view.html
@@ -6,10 +6,18 @@
<div data-role="header">
<a href="/notes/" data-icon="arrow-l">Notes</a>
<h1>{{ note.title }}</h1>
- <a href="{{ note.get_absolute_url }}edit/">Edit</a>
+ <a href="{{ note.get_absolute_url }}edit/" data-ajax="false">Edit</a>
</div>
<div data-role="content">
<p>{{ version.content|restructuredtext }}</p>
+ <ul data-role="listview" data-inset="true">
+ {% for a in note.attachment_set.all %}
+ <li><a href="/notes/{{ note.id }}/file/{{ a.id }}/">{{ a.get_name }}<span class="ui-li-aside ui-li-desc">{{ a.content.size|filesizeformat }}</span></a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ <div data-role="footer" class="ui-bar" data-position="fixed" data-theme="b">
+ <a href="delete" data-icon="delete" data-role="button">Delete</a>
</div>
</div>
{% endblock content %}
diff --git a/notes/views.py b/notes/views.py
index 386b0c0..7542cdb 100644
--- a/notes/views.py
+++ b/notes/views.py
@@ -1,4 +1,6 @@
+import mimetypes
from django import forms
+from django.http import HttpResponse
from django.shortcuts import render, redirect
from notes.models import Note, Attachment, Tag, Version
@@ -12,7 +14,7 @@ class NoteForm(forms.Form):
def edit(request, note_id=None):
note = Note(user_id=1)
-
+
if note_id:
note = Note.objects.get(pk=note_id)
@@ -20,21 +22,30 @@ def edit(request, note_id=None):
form = NoteForm(request.POST, request.FILES)
if not form.is_valid():
- return render(request, 'edit.html', {'form': form})
+ return render(request, 'edit.html', {'form': form, 'note': note})
note.title = form.cleaned_data.get('title')
note.save()
-
+
+ if request.FILES.get('attachment'):
+ a = Attachment(note=note)
+ a.content = request.FILES['attachment']
+ a.save()
+
version = Version(note=note, user_id=1)
version.content = form.cleaned_data.get('content')
version.shared = form.cleaned_data.get('shared')
version.save()
- return render(request, 'view.html', {'note': note, 'version': version})
+ return redirect(note)
- form = NoteForm(initial={'content': note.content, 'shared': note.shared})
+ form = NoteForm(initial={
+ 'content': note.content,
+ 'shared': note.shared,
+ 'title': note.title
+ })
- return render(request, 'edit.html', {'form': form})
+ return render(request, 'edit.html', {'form': form, 'note': note})
def index(request, tag_id=None):
notes = Note.objects.filter(user_id=1)
@@ -49,3 +60,18 @@ def view(request, note_id):
note = Note.objects.get(pk=note_id)
version = note.version_set.latest()
return render(request, 'view.html', {'note': note, 'version': version})
+
+def view_file(request, note_id, file_id):
+ note = Note.objects.get(pk=note_id)
+ f = note.attachment_set.get(pk=file_id)
+
+ mimetypes.init()
+ t, e = mimetypes.guess_type(f.content.name)
+
+ return HttpResponse(f.content.read(), content_type=t)
+
+def delete_file(request, note_id, file_id):
+ note = Note.objects.get(pk=note_id)
+ f = Attachment.objects.get(pk=file_id)
+ f.delete()
+ return HttpResponse('File deleted')