Deletion of private messages.

portnov [2008-06-14 08:44:02]
Deletion of private messages.
Filename
mgmt/rights.py
mgmt/views.py
settings.py
templates/delete.html
templates/private_message.html
templates/user_page.html
urls.py
diff --git a/mgmt/rights.py b/mgmt/rights.py
index 69544e8..0cd64e7 100644
--- a/mgmt/rights.py
+++ b/mgmt/rights.py
@@ -29,11 +29,14 @@ def can(user,action,object=None,target=None):
       return user in object.project.team.iterator()
   if action == 'document':
     return user in object.team.iterator()
+  if object.__class__.__name__ == 'PrivateMsg':
+    if action == 'delete':
+      return user.id == object.reciever.id
   if object.__class__.__name__ == 'Bug':
     if action == 'set_priority':
-      return user in object.project.admins.iterator()
+      return user in object.project.admins.iterator() and not object.status.id in [1,4,5]
     if action == 'set_complexity':
-      return user in object.project.team.iterator()
+      return user in object.project.team.iterator() and not object.status.id in [1,4,5]
     if action == 'change_state':
       return can_change_bug_state(user,object,target)
   return False
diff --git a/mgmt/views.py b/mgmt/views.py
index 56f97f1..440c006 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -268,7 +268,7 @@ def one_bug(request,id):
   if can(request.user,'set_priority',bug):
     priority_form = BugPriorityForm(dict(priority=bug.priority))
   else:
-    priotity_form = None
+    priority_form = None
   if can(request.user,'set_complexity',bug):
     complexity_form = BugComplexityForm(dict(complexity=bug.complexity))
   else:
@@ -395,6 +395,16 @@ def private_message(request,mid):
       {'message': msg},
       request)

+@check_auth(PrivateMsg,'delete')
+def delete_private_message(request,msg):
+  if request.method=='GET':
+    return render_it('delete.html',
+      {'message': msg},
+      request)
+  elif request.method=='POST':
+    msg.delete()
+    return HttpResponseRedirect(reverse('mgmt.views.user_page',args=(request.user.username,)))
+
 def message_preview(request):
   if request.method=='POST':
     text = request.POST['data']
diff --git a/settings.py b/settings.py
index 4238190..b079056 100644
--- a/settings.py
+++ b/settings.py
@@ -132,7 +132,7 @@ PRIORITY_CHOICES = [(-1,u'Не установлен'),
 COMPLEXITY_CHOICES = [(0,u'Тривиально'),
                       (1,u'Совсем просто'),
                       (2,u'Несложно'),
-                      (3,u'Средняя сложность'),
+                      (3,u'Средняя'),
                       (4,u'Сложно'),
                       (5,u'Очень сложно'),
                       (6,u'Потребует изменения архитектуры')]
diff --git a/templates/delete.html b/templates/delete.html
new file mode 100644
index 0000000..78eac08
--- /dev/null
+++ b/templates/delete.html
@@ -0,0 +1,16 @@
+{% extends "base.html" %}
+
+{% block title %}Удалить {{message.name}}?{% endblock %}
+
+{% block main %}
+
+<h2>Удалить {{message.name}}?</h2>
+
+<form method='post' action='.'>
+  <p><input type='submit' value='Да'/>
+     <a href='{% url mgmt.views.user_page user.username %}'>Нет</a>
+  </p>
+</form>
+
+{% endblock %}
+
diff --git a/templates/private_message.html b/templates/private_message.html
index 8b0210b..ae77da5 100644
--- a/templates/private_message.html
+++ b/templates/private_message.html
@@ -4,6 +4,10 @@
 {% block title %}Сообщение: {{message.name}}{% endblock %}

 {% block main %}
+<div class='links'>
+  <a href='{% url mgmt.views.delete_private_message message.id %}'>Удалить</a>
+</div>
+
 <h2>{{message.name}}</h2>
 <p><strong>От:</strong> <a href='{% url mgmt.views.user_page message.author.username %}'>{{message.author.username}}</a></p>
 <p><strong>Отправлено:</strong> {{message.created}}</p>
diff --git a/templates/user_page.html b/templates/user_page.html
index 78ca4ad..007f945 100644
--- a/templates/user_page.html
+++ b/templates/user_page.html
@@ -16,6 +16,7 @@
   <tr>
     <td><a href='{% url mgmt.views.private_message message.id %}'>{{message.name}}</a></td>
     <td>{{message.author.username}}</td><td>{{message.created}}</td>
+    <td><a href='{% url mgmt.views.delete_private_message message.id %}'>Удалить</a></td>
   </tr>
   {% endfor %}
   </table>
diff --git a/urls.py b/urls.py
index 2f63473..e72767d 100644
--- a/urls.py
+++ b/urls.py
@@ -16,6 +16,7 @@ urlpatterns = patterns('',
     (r'^create/doc/(\d+)/$', "mgmt.views.create_document"),
     (r'^users/(\w+)/$', 'mgmt.views.user_page'),
     (r'^message/(\d+)/$', 'mgmt.views.private_message'),
+    (r'^message/(\d+)/delete/$', 'mgmt.views.delete_private_message'),
     (r'^preview/$', 'mgmt.views.message_preview'),
     (r'^my/$', 'mgmt.views.my_page'),
ViewGit