def tagged_items(self, selection=None): """ Returns a dict of objects tagged with this tag, keys of the dict are model names. The 'selection' parameter can be used to pass a restrictive list of models names as strings. """ TaggedItem = get_class('taggeditem') items = {} for item in TaggedItem.objects.filter(tag=self): if item.content_object: cls = item.content_object._meta.verbose_name_plural if not selection or cls in selection: if not cls in items: items[cls] = [] items[cls].append(item.content_object) return items
from django.db.models.related import RelatedObject from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ from coop_tag.forms import TagField from coop_tag.models import GenericTaggedItemBase from coop_tag.utils import require_instance_manager from coop_tag.widgets import TagAutoSuggest from django.conf import settings # we use the default TaggedItem model if it's not customized if not hasattr(settings, 'TAGGER_TAGGEDITEM_MODEL'): from coop_tag.models import TaggedItem else: from coop_tag.settings import get_class TaggedItem = get_class('taggeditem') try: all except NameError: # 2.4 compat try: from django.utils.itercompat import all except ImportError: # 1.1.X compat def all(iterable): for item in iterable: if not item: return False return True
from django.contrib import admin from coop_tag.settings import get_class #from feincms.admin import tree_editor class TaggedItemInline(admin.StackedInline): model = get_class('taggeditem') # We just override the TreeEditor template to add some custom CSS # and put the move cursor before the object title # class TagTreeAdmin(tree_editor.TreeEditor): # def __init__(self, *args, **kwargs): # super(TagTreeAdmin, self).__init__(*args, **kwargs) # self.change_list_template = [ # 'admin/feincms/tag_tree_editor.html', # ] # def changelist_view(self, request, extra_context=None, *args, **kwargs): # if 'actions_column' not in self.list_display: # self.list_display.insert(0, 'actions_column') # return super(TagTreeAdmin, self).changelist_view(request, extra_context) # inlines = [ # TaggedItemInline # ] admin.site.register(get_class('tag')) #, TagTreeAdmin)
class TaggedItemInline(admin.StackedInline): model = get_class('taggeditem')
if "coop.exchange" in settings.INSTALLED_APPS: from coop.exchange.admin import ExchangeAdmin admin.site.register(ExchangeMethod) admin.site.register(Exchange, ExchangeAdmin) if "coop_cms" in settings.INSTALLED_APPS: from coop.article.admin import CoopArticleAdmin from coop_cms.settings import get_article_class article_model = get_article_class() admin.site.unregister(article_model) admin.site.register(article_model, CoopArticleAdmin) if "coop_tag" in settings.INSTALLED_APPS: from coop_tag.settings import get_class from coop.tag.admin import TagAdmin admin.site.unregister(get_class('tag')) admin.site.register(get_class('tag'), TagAdmin) # TODO find out why this hack has to be there !!! if 'forms_builder.forms' in settings.INSTALLED_APPS: from coop.admin import CoopFormAdmin from forms_builder.forms.models import Form admin.site.unregister(Form) admin.site.register(Form, CoopFormAdmin) if "coop.agenda" in settings.INSTALLED_APPS: from coop.agenda.admin import EventAdmin, EventCategoryAdmin admin.site.register(Event, EventAdmin) admin.site.register(EventCategory, EventCategoryAdmin) admin.site.register(Calendar)
from coop_tag.settings import get_class #from feincms.admin import tree_editor class TaggedItemInline(admin.StackedInline): model = get_class('taggeditem') # We just override the TreeEditor template to add some custom CSS # and put the move cursor before the object title # class TagTreeAdmin(tree_editor.TreeEditor): # def __init__(self, *args, **kwargs): # super(TagTreeAdmin, self).__init__(*args, **kwargs) # self.change_list_template = [ # 'admin/feincms/tag_tree_editor.html', # ] # def changelist_view(self, request, extra_context=None, *args, **kwargs): # if 'actions_column' not in self.list_display: # self.list_display.insert(0, 'actions_column') # return super(TagTreeAdmin, self).changelist_view(request, extra_context) # inlines = [ # TaggedItemInline # ] admin.site.register(get_class('tag'))#, TagTreeAdmin)
# -*- coding:utf-8 -*- from django.contrib.contenttypes.models import ContentType from django.shortcuts import get_object_or_404 from django.views.generic.list_detail import object_list from django.template import RequestContext from django.shortcuts import render_to_response from coop_tag.settings import get_class, TAGGER_MAX_SUGGESTIONS Tag = get_class('tag') TaggedItem = get_class('taggeditem') def tagged_object_list(request, slug, queryset, **kwargs): if callable(queryset): queryset = queryset() tag = get_object_or_404(Tag, slug=slug) qs = queryset.filter(pk__in=TaggedItem.objects.filter( tag=tag, content_type=ContentType.objects.get_for_model(queryset.model) ).values_list("object_id", flat=True)) if "extra_context" not in kwargs: kwargs["extra_context"] = {} kwargs["extra_context"]["tag"] = tag return object_list(request, qs, **kwargs) # PB : n'est bon que si on passe le queryset d'un modèle spécifique def tag_detail(request, slug): context = {}
admin.site.register(MailingList, MailingListAdmin) admin.site.register(Newsletter, NewsletterAdmin) if "coop.exchange" in settings.INSTALLED_APPS: from coop.exchange.admin import ExchangeAdmin admin.site.register(ExchangeMethod) admin.site.register(Exchange, ExchangeAdmin) if "coop_cms" in settings.INSTALLED_APPS: from coop.article.admin import CoopArticleAdmin from coop_cms.settings import get_article_class article_model = get_article_class() admin.site.unregister(article_model) admin.site.register(article_model, CoopArticleAdmin) if "coop_tag" in settings.INSTALLED_APPS: from coop_tag.settings import get_class admin.site.unregister(get_class("tag")) admin.site.register(get_class("tag")) # TODO find out why this hack has to be there !!! if "forms_builder.forms" in settings.INSTALLED_APPS: from coop.admin import CoopFormAdmin from forms_builder.forms.models import Form admin.site.unregister(Form) admin.site.register(Form, CoopFormAdmin)
# 23 - Ville # 24 - Jours d’ouverture # 25 - longitude # 26 - latitude # 27 - Email de la structure # 28 - Teléphone # 29 - Fax # 30 - Mobile current_time = datetime.datetime.now() logging.basicConfig(filename='%(date)s_structure_migration.log' % {'date': current_time.strftime("%Y-%m-%d")}, level=logging.DEBUG, format='%(asctime)s %(levelname)s - %(message)s', datefmt='%d/%m/%Y %H:%M:%S',) Tag = get_class('tag') class Command(BaseCommand): args = '<import_file>' help = 'Import structure file' def handle(self, *args, **options): for import_file in args: errors_array = [] dest_file = csv.DictReader(open(import_file, 'rb'), delimiter=',', quotechar='"') for row in dest_file: title = row['Raison sociale']