summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Berggren <jbn@nordu.net>2011-03-04 14:22:57 +0100
committerJohan Berggren <jbn@nordu.net>2011-03-04 14:22:57 +0100
commit6613bbae1b7d3262fec64ae1c8da7d772c2e2b66 (patch)
tree6418e55f8c8d228bc9faab7f70bd35a0751a1413
parenteee6cedbf9c1b3189d36b238613a47b0631a0666 (diff)
Added tagging on Memberships
-rw-r--r--coip/apps/membership/models.py5
-rw-r--r--coip/apps/tag/views.py13
-rw-r--r--templates/apps/name/name.html5
-rw-r--r--templates/apps/tag/add.html33
-rw-r--r--templates/base.html2
5 files changed, 50 insertions, 8 deletions
diff --git a/coip/apps/membership/models.py b/coip/apps/membership/models.py
index 0dc06ca..324c736 100644
--- a/coip/apps/membership/models.py
+++ b/coip/apps/membership/models.py
@@ -10,6 +10,7 @@ import datetime
from pprint import pformat
import logging
from coip.apps.entity.models import Entity
+import tagging
class Membership(models.Model):
'''
@@ -74,4 +75,6 @@ def has_member(name,member_name):
if isinstance(member_name,User):
return Membership.objects.filter(name=name,user=member_name)
else:
- return Membership.objects.filter(name=name,entity=member_name) \ No newline at end of file
+ return Membership.objects.filter(name=name,entity=member_name)
+
+tagging.register(Membership) \ No newline at end of file
diff --git a/coip/apps/tag/views.py b/coip/apps/tag/views.py
index bcccae3..a08d696 100644
--- a/coip/apps/tag/views.py
+++ b/coip/apps/tag/views.py
@@ -4,16 +4,23 @@ Created on Mar 3, 2011
@author: jbn
'''
from django.core.exceptions import ObjectDoesNotExist
-from django.http import HttpResponseNotFound, HttpResponseForbidden, HttpResponseRedirect, Http404
+from django.http import HttpResponse, HttpResponseNotFound, HttpResponseForbidden, HttpResponseRedirect, Http404
from django.contrib.auth.decorators import login_required
from coip.multiresponse import respond_to, json_response, render403
import logging
from django.shortcuts import get_object_or_404
from django.contrib.auth.models import User
from coip.apps.membership.models import Membership
+from forms import *
+from tagging.models import Tag
def add(request, type, id):
if type == "membership":
tagobj = get_object_or_404(Membership, pk=id)
- else: return HttpResponseNotFound()
- return respond_to(request,{'text/html': 'apps/tag/add.html'},{'tagobj': tagobj, 'type': type}) \ No newline at end of file
+ else: return HttpResponseNotFound()
+ if request.method == 'POST':
+ if tagobj.user == request.user:
+ for tag in request.POST.getlist('item[tags][]'):
+ Tag.objects.add_tag(tagobj, tag)
+ return HttpResponseRedirect(request.META["HTTP_REFERER"])
+ return respond_to(request,{'text/html': 'apps/tag/add.html'},{'tagobj': tagobj, 'type': type, 'name': tagobj.name}) \ No newline at end of file
diff --git a/templates/apps/name/name.html b/templates/apps/name/name.html
index f1442be..2489004 100644
--- a/templates/apps/name/name.html
+++ b/templates/apps/name/name.html
@@ -1,6 +1,7 @@
{% extends "tree.html" %}
{% load datehumanize %}
{% load userdisplay %}
+{% load tagging_tags %}
{% block widgets %}
$("#memberships").accordion({
header: 'h3',
@@ -62,8 +63,10 @@
<div class="rlist">
<ul>
{% if user == m.user %}
+ <b>Role{{ m.tags|pluralize }} in this group</b><br>
+ {% for tag in m.tags %}<ul>{{ tag|escape }}</ul>{% endfor %}
<li class="button"><a href="/name/{{name.id}}/leave/{{m.user.username}}">Leave Group</a></li>
- <li class="button"><a href="/tag/membership/{{m.id}}/add">Tag</a></li>
+ <li class="button"><a href="/tag/membership/{{m.id}}/add">Add role</a></li>
{% else %}
{% if render.kick %}
<li class="button"><a href="/name/{{name.id}}/leave/{{m.user.username}}">Remove from Group</a></li>
diff --git a/templates/apps/tag/add.html b/templates/apps/tag/add.html
index 378ebee..1325929 100644
--- a/templates/apps/tag/add.html
+++ b/templates/apps/tag/add.html
@@ -1,7 +1,34 @@
{% extends "tree.html" %}
+{% block js %}
+<script>
+ $(document).ready(function(){
+ $("#taglist").tagit({
+ existingTags: [{% for t in tagobj.tags %}'{{t}}',{% endfor%}],
+ namePrefix: 'tags'
+ });
+ });
+</script>
+{% endblock %}
+
{% block content %}
- <h1>Add tag to {{ type|escape }}</h1>
+ <h1>Add role to {{ type|escape }} {{ name }}</h1>
<div class="ui-widget ui-widget-content ui-helper-reset ui-corner-all infopanel">
-{{ tagobj }}
-</div>
+ <h3 class="altheader">Current role{{ tagobj.tags|pluralize }} in this group</h3>
+ {% for tag in tagobj.tags %}<b>{{ tag|escape }} </b>{% endfor %}
+ <h3>Add</h3>
+ <div class="altcontent">
+ <form method="POST" action="">{% csrf_token %}
+ <div style="margin-top: 20px;">
+ <ul id="taglist"></ul>
+ </div>
+ <br/>
+ <div class="button">
+ <input type="submit" value="Save Changes" />
+ <input type="button" onClick="history.go(-1)" value="Cancel"/>
+ </div>
+ </form>
+ </div>
+ </div>
+
+
{% endblock %} \ No newline at end of file
diff --git a/templates/base.html b/templates/base.html
index 4f93552..fddbc95 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -6,6 +6,7 @@
<link type="text/css" href="/site-media/css/jquery.tooltip.css" rel="stylesheet" />
<link type="text/css" href="/site-media/css/jquery.tagInput.css" rel="stylesheet" />
<link type="text/css" href="/site-media/css/jquery.multiselect2side.css" rel="stylesheet" /-->
+ <link type="text/css" href="/site-media/css/jquery.ui.autocomplete.custom.css" rel="stylesheet" />
<link type="text/css" href="/site-media/css/jquery.wysiwyg.css" rel="stylesheet" />
<link type="text/css" href="/site-media/css/style.css" rel="stylesheet"/>
<script type="text/javascript" src="/site-media/js/jquery-1.4.4.min.js"></script>
@@ -24,6 +25,7 @@
<script type="text/javascript" src="/site-media/js/jquery.validate.js"></script>
<script type="text/javascript" src="/site-media/js/bbq.js"></script>
<script type="text/javascript" src="/site-media/js/jquery.form.wizard-3.0.4.js"></script>
+ <script type="text/javascript" src="/site-media/js/tag-it.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}{% endblock %}</title>
<script type="text/javascript">