diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index 9020d50eee..4b349e012e 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -26,6 +26,7 @@ register_permission(PERMISSION_TAG_EDIT) register_permission(PERMISSION_TAG_VIEW) tag_list = {'text': _(u'tag list'), 'view': 'tag_list', 'famfam': 'tag_blue'} +tag_create = {'text': _(u'create new tag'), 'view': 'tag_create', 'famfam': 'tag_blue_add'} tag_add_attach = {'text': _(u'attach tag'), 'view': 'tag_add_attach', 'args': 'object.pk', 'famfam': 'tag_blue_add', 'permission': [PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH]} tag_document_remove = {'text': _(u'remove'), 'view': 'tag_remove', 'args': ['object.id', 'document.id'], 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} tag_document_remove_multiple = {'text': _(u'remove'), 'view': 'tag_multiple_remove', 'args': 'document.id', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]} @@ -50,7 +51,7 @@ register_links(Tag, [tag_tagged_item_list, tag_edit, tag_delete]) register_multi_item_links(['tag_list'], [tag_multiple_delete]) -register_links(['tag_list', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete'], [tag_list], menu_name='secondary_menu') +register_links(['tag_list', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete', 'tag_create'], [tag_list, tag_create], menu_name='secondary_menu') #register_sidebar_template(['document_tags'], 'tags_sidebar_template.html') diff --git a/apps/tags/urls.py b/apps/tags/urls.py index c5b553032e..d649819642 100644 --- a/apps/tags/urls.py +++ b/apps/tags/urls.py @@ -2,6 +2,7 @@ from django.conf.urls.defaults import patterns, url urlpatterns = patterns('tags.views', url(r'^list/$', 'tag_list', (), 'tag_list'), + url(r'^create/$', 'tag_create', (), 'tag_create'), url(r'^(?P\d+)/delete/$', 'tag_delete', (), 'tag_delete'), url(r'^(?P\d+)/edit/$', 'tag_edit', (), 'tag_edit'), url(r'^(?P\d+)/tagged_item/list/$', 'tag_tagged_item_list', (), 'tag_tagged_item_list'), diff --git a/apps/tags/views.py b/apps/tags/views.py index 88ee2b9872..45d91c1921 100644 --- a/apps/tags/views.py +++ b/apps/tags/views.py @@ -19,10 +19,40 @@ from tags import PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH, \ from tags import tag_tagged_item_list as tag_tagged_item_list_link +def tag_create(request): + #check_permissions(request.user, [PERMISSION_TAG_EDIT]) + redirect_url = reverse('tag_list') + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_url))) + + if request.method == 'POST': + form = TagForm(request.POST) + if form.is_valid(): + tag_name = form.cleaned_data['name'] + + if tag_name in Tag.objects.values_list('name', flat=True): + messages.error(request, _(u'Tag already exists.')) + return HttpResponseRedirect(previous) + + tag = Tag(name=tag_name) + tag.save() + TagProperties(tag=tag, color=form.cleaned_data['color']).save() + + messages.success(request, _(u'Tag created succesfully.')) + return HttpResponseRedirect(redirect_url) + else: + form = TagForm() + + return render_to_response('generic_form.html', { + 'title': _(u'create tag'), + 'form': form, + }, + context_instance=RequestContext(request)) + + def tag_add_sidebar(request, document_id): document = get_object_or_404(Document, pk=document_id) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse('tag_list')))) if request.method == 'POST': previous = request.META.get('HTTP_REFERER', '/') @@ -116,7 +146,7 @@ def tag_list(request): 'multi_select_as_buttons': True, 'extra_columns': [ { - 'name': _(u'count'), + 'name': _(u'tagged items'), 'attribute': encapsulate(lambda x: x.taggit_taggeditem_items.count()) } ]