diff options
author | Johan Berggren <jbn@nordu.net> | 2011-03-04 14:22:57 +0100 |
---|---|---|
committer | Johan Berggren <jbn@nordu.net> | 2011-03-04 14:22:57 +0100 |
commit | 6613bbae1b7d3262fec64ae1c8da7d772c2e2b66 (patch) | |
tree | 6418e55f8c8d228bc9faab7f70bd35a0751a1413 | |
parent | eee6cedbf9c1b3189d36b238613a47b0631a0666 (diff) |
Added tagging on Memberships
-rw-r--r-- | coip/apps/membership/models.py | 5 | ||||
-rw-r--r-- | coip/apps/tag/views.py | 13 | ||||
-rw-r--r-- | templates/apps/name/name.html | 5 | ||||
-rw-r--r-- | templates/apps/tag/add.html | 33 | ||||
-rw-r--r-- | templates/base.html | 2 |
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"> |