Source code for shoop.admin.modules.contacts
# -*- coding: utf-8 -*-
# This file is part of Shoop.
#
# Copyright (c) 2012-2016, Shoop Ltd. All rights reserved.
#
# This source code is licensed under the AGPLv3 license found in the
# LICENSE file in the root directory of this source tree.
import six
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _
from shoop.admin.base import AdminModule, MenuEntry, SearchResult
from shoop.admin.utils.permissions import (
get_default_model_permissions, get_permissions_from_urls
)
from shoop.admin.utils.urls import admin_url, derive_model_url, get_model_url
from shoop.core.models import Contact
from .dashboard import get_active_customers_block
[docs]class ContactModule(AdminModule):
name = _("Contacts")
category = name
breadcrumbs_menu_entry = MenuEntry(text=name, url="shoop_admin:contact.list")
[docs] def get_urls(self):
return [
admin_url(
"^contacts/new/$",
"shoop.admin.modules.contacts.views.ContactEditView",
kwargs={"pk": None},
name="contact.new",
permissions=["shoop.add_contact"],
),
admin_url(
"^contacts/(?P<pk>\d+)/edit/$",
"shoop.admin.modules.contacts.views.ContactEditView",
name="contact.edit",
permissions=["shoop.change_contact"],
),
admin_url(
"^contacts/(?P<pk>\d+)/$",
"shoop.admin.modules.contacts.views.ContactDetailView",
name="contact.detail",
permissions=get_default_model_permissions(Contact),
),
admin_url(
"^contacts/reset-password/(?P<pk>\d+)/$",
"shoop.admin.modules.contacts.views.ContactResetPasswordView",
name="contact.reset_password",
permissions=get_default_model_permissions(Contact),
),
admin_url(
"^contacts/$",
"shoop.admin.modules.contacts.views.ContactListView",
name="contact.list",
permissions=get_default_model_permissions(Contact),
),
]
[docs] def get_required_permissions(self):
return get_permissions_from_urls(self.get_urls()) | get_default_model_permissions(Contact)
[docs] def get_search_results(self, request, query):
minimum_query_length = 3
if len(query) >= minimum_query_length:
contacts = Contact.objects.filter(
Q(name__icontains=query) |
Q(email=query)
)
for i, contact in enumerate(contacts[:10]):
relevance = 100 - i
yield SearchResult(
text=six.text_type(contact), url=get_model_url(contact),
category=self.category, relevance=relevance
)
[docs] def get_model_url(self, object, kind):
return derive_model_url(Contact, "shoop_admin:contact", object, kind)