def view_contact_actions(request, contact_id, set_id): """view""" contact = get_object_or_404(models.Contact, id=contact_id) filters = [] if int(set_id): action_set = get_object_or_404(models.ActionSet, id=set_id) filters.append(Q(type__set=action_set)) title = action_set.name else: filters.append(Q(type__set=None)) title = _("Other kind of actions") if models.ActionSet.objects.count( ) else _("Actions") actions = contact.action_set.filter(*filters).order_by( "planned_date", "priority") page_obj = paginate(request, actions, 50) request.session["redirect_url"] = reverse('crm_contact_actions', args=[contact_id, set_id]) return render( request, 'Crm/entity_actions.html', { 'contact': contact, 'action_set': action_set, 'actions': list(page_obj), 'page_obj': page_obj, 'all_actions': True, 'title': title, })
def view_entities_list(request): """view""" letter_filter = request.GET.get("filter", "*") queryset = models.Entity.objects.all() if re.search(r"\w+", letter_filter): if is_unaccent_filter_supported(): queryset = queryset.extra( where=[u"UPPER(unaccent(name)) LIKE UPPER(unaccent(%s))"], params=[u"{0}%".format(letter_filter)] ) else: queryset = queryset.filter(name__istartswith=letter_filter) elif letter_filter == "~": queryset = queryset.filter(name__regex=r'^\W|^\d') queryset = queryset.extra(select={'lower_name':'lower(name)'}).order_by('lower_name') page_obj = paginate(request, queryset, 50) entities = list(page_obj) return render_to_response( 'Crm/all_entities.html', { 'entities': entities, 'letter_filter': letter_filter, 'page_obj': page_obj, }, context_instance=RequestContext(request) )
def view_contact_actions(request, contact_id, set_id): """view""" contact = get_object_or_404(models.Contact, id=contact_id) filters = [] if int(set_id): action_set = get_object_or_404(models.ActionSet, id=set_id) filters.append(Q(type__set=action_set)) title = action_set.name else: filters.append(Q(type__set=None)) title = _(u"Other kind of actions") if models.ActionSet.objects.count() else _(u"Actions") actions = contact.action_set.filter(*filters).order_by("planned_date", "priority") page_obj = paginate(request, actions, 50) request.session["redirect_url"] = reverse('crm_contact_actions', args=[contact_id, set_id]) return render_to_response( 'Crm/entity_actions.html', { 'contact': contact, 'action_set': action_set, 'actions': list(page_obj), 'page_obj': page_obj, 'all_actions': True, 'title': title, }, context_instance=RequestContext(request) )
def view_all_opportunities(request, ordering=None): """view""" opportunities = models.Opportunity.objects.all() if not ordering: ordering = 'date' if ordering == 'name': opportunities = opportunities.order_by('name') elif ordering == 'status': opportunities = opportunities.order_by('status__ordering', 'status') elif ordering == 'type': opportunities = opportunities.order_by('type') elif ordering == 'date': opportunities = list(opportunities) opportunities.sort(key=lambda o: o.get_start_date() or datetime(1970, 1, 1)) opportunities.reverse() request.session["redirect_url"] = reverse('crm_all_opportunities') page_obj = paginate(request, opportunities, 50) return render( request, 'Crm/all_opportunities.html', { "opportunities": list(page_obj), 'page_obj': page_obj, "ordering": ordering, "all_opportunities": True, }, )
def see_my_groups(request): """view""" ordering = request.GET.get('ordering', 'name') groups = models.Group.objects.all() if ordering == 'name': try: # may fail for some databases groups = groups.extra(select={ 'lower_name': 'lower(name)' }).order_by('lower_name') # pylint: disable=broad-except except Exception: groups = list(models.Group.objects.all()) #order groups with case-independant name groups.sort(key=lambda group: group.name.lower()) else: groups = groups.order_by('-modified') page_obj = paginate(request, groups, 50) return render(request, 'Crm/my_groups.html', { 'groups': list(page_obj), 'page_obj': page_obj, 'ordering': ordering, })
def see_my_groups(request): """view""" ordering = request.GET.get('ordering', 'name') groups = models.Group.objects.all() if ordering == 'name': try: # may fail for some databases groups = groups.extra(select={'lower_name': 'lower(name)'}).order_by('lower_name') # pylint: disable=broad-except except Exception: groups = list(models.Group.objects.all()) #order groups with case-independant name groups.sort(key=lambda group: group.name.lower()) else: groups = groups.order_by('-modified') page_obj = paginate(request, groups, 50) return render_to_response( 'Crm/my_groups.html', { 'groups': list(page_obj), 'page_obj': page_obj, 'ordering': ordering, }, context_instance=RequestContext(request) )
def view_entity_actions(request, entity_id, set_id): """view""" entity = get_object_or_404(models.Entity, id=entity_id) filters = [] if int(set_id): action_set = get_object_or_404(models.ActionSet, id=set_id) filters.append(Q(type__set=action_set)) title = action_set.name else: filters.append(Q(type__set=None)) title = _("Other kind of actions") if models.ActionSet.objects.count( ) else _("Actions") actions = models.Action.objects.filter( Q(entity=entity) | Q(contact__entity=entity) | Q(opportunity__entity=entity), *filters).order_by("planned_date", "priority") request.session["redirect_url"] = reverse('crm_entity_actions', args=[entity_id, set_id]) page_obj = paginate(request, actions, 50) return render( request, 'Crm/entity_actions.html', { 'title': title, 'entity': entity, 'action_set': action_set, 'all_actions': True, 'actions': list(page_obj), 'page_obj': page_obj, 'filters': filters, })
def view_entities_list(request): """view""" letter_filter = request.GET.get("filter", "*") queryset = models.Entity.objects.all() if re.search(r"\w+", letter_filter): if is_unaccent_filter_supported(): queryset = queryset.extra( where=["UPPER(unaccent(name)) LIKE UPPER(unaccent(%s))"], params=["{0}%".format(letter_filter)] ) else: queryset = queryset.filter(name__istartswith=letter_filter) elif letter_filter == "~": queryset = queryset.filter(name__regex=r'^\W|^\d') queryset = queryset.extra(select={'lower_name': 'lower(name)'}).order_by('lower_name') page_obj = paginate(request, queryset, 50) entities = list(page_obj) return render( request, 'Crm/all_entities.html', { 'entities': entities, 'letter_filter': letter_filter, 'page_obj': page_obj, }, )
def view_search_list(request): searches = Search.objects.all() page_obj = paginate(request, searches, 50) return render(request, 'Search/search_list.html', { 'searches': list(page_obj), 'page_obj': page_obj, })
def newsletter_list(request): """display list of newsletters""" newsletters = Newsletter.objects.all().order_by('-id') page_obj = paginate(request, newsletters, 10) return render(request, 'Emailing/newsletter_list.html', { 'newsletters': list(page_obj), 'page_obj': page_obj })
def view_search_list(request): searches = Search.objects.all() page_obj = paginate(request, searches, 50) return render_to_response( 'Search/search_list.html', { 'searches': list(page_obj), 'page_obj': page_obj, }, context_instance=RequestContext(request) )
def newsletter_list(request): """display list of newsletters""" newsletters = Newsletter.objects.all().order_by('-id') page_obj = paginate(request, newsletters, 10) return render_to_response( 'Emailing/newsletter_list.html', { 'newsletters': list(page_obj), 'page_obj': page_obj }, context_instance=RequestContext(request) )
def get_context_data(self, **kwargs): """context""" context_data = super(ArticlesByCategoryView, self).get_context_data() category = self.get_category() if not self.request.user.has_perm('can_view_category', category): raise PermissionDenied() articles = self.get_articles(category) page_obj = paginate(self.request, articles, get_articles_category_page_size(category)) context_data.update({ 'category': category, "articles": list(page_obj), 'page_obj': page_obj, }) return context_data
def get_context_data(self, **kwargs): """context""" context_data = super(ArticlesByCategoryView, self).get_context_data() category = self.get_category() if not self.request.user.has_perm('can_view_category', category): raise PermissionDenied() articles = self.get_articles(category) page_obj = paginate(self.request, articles, get_articles_category_page_size(category)) context_data.update({ 'category': category, "articles": list(page_obj), 'page_obj': page_obj, }) return context_data
def search(request, search_id=0, group_id=0, opportunity_id=0, city_id=0): message = '' results = [] search_obj = None field_choice_form = FieldChoiceForm() contains_refuse_newsletter = False data = None contacts_count = 0 has_empty_entities = False group = opportunity = city = None contacts_display = False if request.method == "POST": data = request.POST elif group_id: group = get_object_or_404(Group, id=group_id) data = {"gr0-_-group-_-0": group_id} elif opportunity_id: opportunity = get_object_or_404(Opportunity, id=opportunity_id) data = {"gr0-_-opportunity-_-0": opportunity_id} elif city_id: city = get_object_or_404(City, id=city_id) data = {"gr0-_-city-_-0": city_id} if data: search_form = SearchForm(data) if search_form.is_valid(): contacts_display = search_form.contacts_display if not contacts_display: results, contacts_count, has_empty_entities = search_form.get_contacts_by_entity( ) contains_refuse_newsletter = search_form.contains_refuse_newsletter else: results = search_form.get_contacts() contacts_count, has_empty_entities = len(results), False contains_refuse_newsletter = search_form.contains_refuse_newsletter if not results: message = _('Sorry, no results found') else: search_obj = get_object_or_404(Search, id=search_id) if search_id else None search_form = SearchForm(instance=search_obj) entities_count = 0 if contacts_display else len(results) page_obj = paginate( request, results, getattr(settings, 'BALAFON_SEARCH_NB_IN_PAGE', None) or 50) return render( request, 'Search/search.html', { 'page_obj': page_obj, 'results': list(page_obj), 'field_choice_form': field_choice_form, 'message': message, 'has_empty_entities': has_empty_entities, 'search_form': search_form, 'search': search_obj, 'contacts_count': contacts_count, 'entities_count': entities_count, 'contains_refuse_newsletter': contains_refuse_newsletter, 'group': group, 'opportunity': opportunity, 'city': city, 'contacts_display': contacts_display, })
def show_media(request, media_type): """show media library""" try: if not request.user.is_staff: raise PermissionDenied try: page = int(request.GET.get('page', 0) or 0) except ValueError: page = 1 is_ajax = page > 0 media_filter = request.GET.get('media_filter', 0) skip_media_filter = False if request.session.get("coop_cms_media_doc", False): # force the doc media_type = 'document' del request.session["coop_cms_media_doc"] if media_type == 'image': queryset = models.Image.objects.all().order_by("ordering", "-created") context = { 'media_url': reverse('coop_cms_media_images'), 'media_slide_template': 'coop_cms/medialib/slide_images_content.html', } elif media_type == 'photologue': queryset, context = _get_photologue_media(request) skip_media_filter = True else: media_type = "document" queryset = models.Document.objects.all().order_by("ordering", "-created") context = { 'media_url': reverse('coop_cms_media_documents'), 'media_slide_template': 'coop_cms/medialib/slide_docs_content.html', } context['is_ajax'] = is_ajax context['media_type'] = media_type if not skip_media_filter: # list of lists of media_filters media_filters = [media.filters.all() for media in queryset.all()] # flat list of media_filters media_filters = itertools.chain(*media_filters) # flat list of unique media filters sorted by alphabetical order (ignore case) context['media_filters'] = sorted( list(set(media_filters)), key=lambda mf: mf.name.upper() ) if int(media_filter): queryset = queryset.filter(filters__id=media_filter) context['media_filter'] = int(media_filter) page_obj = paginate(request, queryset, 12) context[media_type+'s'] = list(page_obj) context['page_obj'] = page_obj context["allow_photologue"] = "photologue" in settings.INSTALLED_APPS if int(media_filter): context["media_url"] += '?media_filter={0}'.format(media_filter) template = get_template('coop_cms/medialib/slide_base.html') html = template.render(make_context(request, context)) if is_ajax: data = { 'html': html, 'media_type': media_type, 'media_url': context["media_url"], } return HttpResponse(json.dumps(data), content_type="application/json") else: return HttpResponse(html) except Exception: logger.exception("show_media") raise
def show_media(request, media_type): """show media library""" try: if not request.user.is_staff: raise PermissionDenied try: page = int(request.GET.get('page', 0) or 0) except ValueError: page = 1 is_ajax = page > 0 media_filter = request.GET.get('media_filter', 0) skip_media_filter = False if request.session.get("coop_cms_media_doc", False): # force the doc media_type = 'document' del request.session["coop_cms_media_doc"] if media_type == 'image': queryset = models.Image.objects.all().order_by("ordering", "-created") context = { 'media_url': reverse('coop_cms_media_images'), 'media_slide_template': 'coop_cms/medialib/slide_images_content.html', } elif media_type == 'photologue': queryset, context = _get_photologue_media(request) skip_media_filter = True else: media_type = "document" queryset = models.Document.objects.all().order_by("ordering", "-created") context = { 'media_url': reverse('coop_cms_media_documents'), 'media_slide_template': 'coop_cms/medialib/slide_docs_content.html', } context['is_ajax'] = is_ajax context['media_type'] = media_type if not skip_media_filter: # list of lists of media_filters media_filters = [media.filters.all() for media in queryset.all()] # flat list of media_filters media_filters = itertools.chain(*media_filters) # flat list of unique media filters sorted by alphabetical order (ignore case) context['media_filters'] = sorted( list(set(media_filters)), key=lambda mf: mf.name.upper() ) if int(media_filter): queryset = queryset.filter(filters__id=media_filter) context['media_filter'] = int(media_filter) page_obj = paginate(request, queryset, 12) context[media_type+'s'] = list(page_obj) context['page_obj'] = page_obj context["allow_photologue"] = "photologue" in settings.INSTALLED_APPS if int(media_filter): context["media_url"] += '?media_filter={0}'.format(media_filter) template = get_template('coop_cms/medialib/slide_base.html') html = template.render(make_context(request, context)) if is_ajax: data = { 'html': html, 'media_type': media_type, 'media_url': context["media_url"], } return HttpResponse(json.dumps(data), content_type="application/json") else: return HttpResponse(html) except Exception: logger.exception("show_media") raise
def search(request, search_id=0, group_id=0, opportunity_id=0, city_id=0): message = '' results = [] search_obj = None field_choice_form = FieldChoiceForm() contains_refuse_newsletter = False data = None contacts_count = 0 has_empty_entities = False group = opportunity = city = None contacts_display = False if request.method == "POST": data = request.POST elif group_id: group = get_object_or_404(Group, id=group_id) data = {"gr0-_-group-_-0": group_id} elif opportunity_id: opportunity = get_object_or_404(Opportunity, id=opportunity_id) data = {"gr0-_-opportunity-_-0": opportunity_id} elif city_id: city = get_object_or_404(City, id=city_id) data = {"gr0-_-city-_-0": city_id} if data: search_form = SearchForm(data) if search_form.is_valid(): contacts_display = search_form.contacts_display if not contacts_display: results, contacts_count, has_empty_entities = search_form.get_contacts_by_entity() contains_refuse_newsletter = search_form.contains_refuse_newsletter else: results = search_form.get_contacts() contacts_count, has_empty_entities = len(results), False contains_refuse_newsletter = search_form.contains_refuse_newsletter if not results: message = _(u'Sorry, no results found') else: search_obj = get_object_or_404(Search, id=search_id) if search_id else None search_form = SearchForm(instance=search_obj) entities_count = 0 if contacts_display else len(results) page_obj = paginate(request, results, getattr(settings, 'BALAFON_SEARCH_NB_IN_PAGE', None) or 50) return render_to_response( 'Search/search.html', { 'page_obj': page_obj, 'results': list(page_obj), 'field_choice_form': field_choice_form, 'message': message, 'has_empty_entities': has_empty_entities, 'search_form': search_form, 'search': search_obj, 'contacts_count': contacts_count, 'entities_count': entities_count, 'contains_refuse_newsletter': contains_refuse_newsletter, 'group': group, 'opportunity': opportunity, 'city': city, 'contacts_display': contacts_display, }, context_instance=RequestContext(request) )