Exemple #1
0
 def applyfilters(self, variables, filterscs):
     '''
     This method applies the filters to the files by taking in the two list, one of which contains
     the files checked to apply, the other one contains the filters checked to apply, and this
     method will change the state string accordingly
     '''
     if GUI.fileObj == []:
         for thefile in GUI.fileName:
             GUI.fileObj.append(Document(thefile))
         for D in GUI.fileObj:
             D.generateWhole()
     elif len(GUI.fileObj) != len(GUI.fileName):
         lengthD = len(GUI.fileName) - len(GUI.fileObj)
         for i in range(lengthD)[::-1]:
             GUI.fileObj.append(Document(GUI.fileName[-(1 + i)]))
             GUI.fileObj[-1].generateWhole()
     empty = True
     for i in range(len(variables)):
         if variables[i].get() == 1:
             dofil = TextFilter(GUI.fileObj[i])
             dofil.apply([
                 self.filters[j]
                 for j in range(len(filterscs)) if filterscs[j].get() == 1
             ], GUI.fileObj[i])
             empty = False
     if empty == True:
         self.sti = 'Nothing applied'
     else:
         self.sti = 'Successfully applied'
     self.sti_text.set(self.sti)
Exemple #2
0
class OrderStatusListView(PicotableListView):
    model = OrderStatus
    default_columns = [
        Column("identifier", _("Identifier"), linked=True, filter_config=TextFilter(operator="startswith")),
        Column(
            "name",
            _("Name"),
            linked=True,
            filter_config=TextFilter(
                operator="startswith",
                filter_field="translations__name"
            )
        ),
        Column(
            "public_name",
            _("Public Name"),
            linked=False,
            filter_config=TextFilter(
                operator="startswith",
                filter_field="translations__name"
            )
        ),
        Column("role", _("Role"), linked=False, filter_config=ChoicesFilter(choices=OrderStatusRole.choices)),
        Column(
            "default", _("Default"), linked=False, filter_config=ChoicesFilter([(False, _("yes")), (True, _("no"))])),
        Column(
            "is_active", _("Active"), linked=False, filter_config=ChoicesFilter([(False, _("yes")), (True, _("no"))])),
    ]
Exemple #3
0
class StocksListView(PicotableListView):
    template_name = "E-Commerce/simple_supplier/admin/base_picotable.jinja"
    model = Product
    default_columns = [
        Column(
            "sku", _("SKU"), sort_field="product__sku", display="product__sku", linked=True,
            filter_config=TextFilter(filter_field="product__sku", placeholder=_("Filter by SKU..."))
        ),
        Column(
            "name", _("Name"), sort_field="product__translations__name", display="product__name", linked=True,
            filter_config=TextFilter(filter_field="product__translations__name", placeholder=_("Filter by name..."))
        ),
        Column(
            "supplier", _("Supplier"), display="supplier", linked=False,
            filter_config=ChoicesFilter(Supplier.objects.enabled().filter(module_identifier="simple_supplier"))
        ),
        Column(
            "stock_information", _("Stock information"), display="get_stock_information",
            linked=False, sortable=False, raw=True
        ),
        Column(
            "adjust_stock", _("Adjust stock"), display="get_stock_adjustment_form",
            sortable=False, linked=False, raw=True
        )
    ]

    def __init__(self):
        super(StocksListView, self).__init__()
        self.columns = self.default_columns

    def get_object_abstract(self, instance, item):
        item.update({"_linked_in_mobile": False, "_url": ""})
        return [
            {"text": item.get("name"), "class": "header"},
            {"title": "", "text": item.get("sku")},
            {"title": "", "text": " ", "raw": item.get("stock_information")},
            {"title": "", "text": " ", "raw": item.get("adjust_stock")},
        ]

    def get_queryset(self):
        return StockCount.objects.filter(
            supplier__module_identifier="simple_supplier",
            supplier__enabled=True,
            supplier__stock_managed=True,
            product__deleted=False
        ).order_by("product__id")

    def get_context_data(self, **kwargs):
        context = super(PicotableListView, self).get_context_data(**kwargs)
        context["toolbar"] = None
        context["title"] = _("Stock management")
        return context

    def get_stock_information(self, instance):
        return get_stock_information_html(instance.supplier, instance.product)

    def get_stock_adjustment_form(self, instance):
        return get_stock_adjustment_div(self.request, instance.supplier, instance.product)
 def applyFilter(self,method):
     '''Adds filter to list of filter methods if the button pressed is not "Apply Filter". If the button is Apply Filter,
         then the list of filters will subsequently be applied to the documents.'''
     if method == "apply filters":
         for doc in self.fileL:
             newtext = TextFilter(doc.fileName, self.filtL)
             newtext.apply()
             doc.doc = newtext.doc
     else:
         if method not in self.filtL:
             self.filtL.append(str(method))
Exemple #5
0
class UserListView(PicotableListView):
    model = settings.AUTH_USER_MODEL
    default_columns = [
        Column("username", _(u"Username"), filter_config=TextFilter()),
        Column("email", _(u"Email"), filter_config=TextFilter()),
        Column("first_name", _(u"First Name"), filter_config=TextFilter()),
        Column("last_name", _(u"Last Name"), filter_config=TextFilter()),
        Column(
            "is_active",
            _(u"Active"),
            filter_config=ChoicesFilter([(False, _("no")), (True, _("yes"))], default=True)
        ),
        Column("is_staff", _(u"Staff"), filter_config=true_or_false_filter),
        Column("is_superuser", _(u"Superuser"), filter_config=true_or_false_filter),
    ]
    toolbar_buttons_provider_key = "user_list_toolbar_provider"
    mass_actions_provider_key = "user_list_mass_actions_provider"

    def get_model(self):
        return get_user_model()

    def get_queryset(self):
        model = self.get_model()
        qs = self.get_model().objects.all()
        if "date_joined" in [f.name for f in model._meta.get_fields()]:
            qs = qs.order_by("-date_joined")

        # non superusers can't see superusers
        if not self.request.user.is_superuser:
            qs = qs.filter(is_superuser=False)

        return qs

    def get_context_data(self, **kwargs):
        context = super(UserListView, self).get_context_data(**kwargs)
        context["title"] = force_text(self.get_model()._meta.verbose_name_plural).title()
        return context

    def get_object_abstract(self, instance, item):
        bits = filter(None, [
            _("First Name: %s") % (getattr(instance, 'first_name', None) or "\u2014"),
            _("Last Name: %s") % (getattr(instance, 'last_name', None) or "\u2014"),
            _("Active") if instance.is_active else _(u"Inactive"),
            _("Email: %s") % (getattr(instance, 'email', None) or "\u2014"),
            _("Staff") if getattr(instance, 'is_staff', None) else None,
            _("Superuser") if getattr(instance, 'is_superuser', None) else None
        ])
        return [
            {"text": instance.get_username() or _("User"), "class": "header"},
            {"text": ", ".join([force_text(bit) for bit in bits])}
        ]
Exemple #6
0
class PageListView(PicotableListView):
    url_identifier = "simple_cms.page"
    model = Page
    default_columns = [
        Column(
            "title",
            _(u"Title"),
            sort_field="translations__title",
            display="title",
            linked=True,
            filter_config=TextFilter(
                operator="startswith",
                filter_field="translations__title"
            )
        ),
        Column("available_from", _(u"Available from")),
        Column("available_to", _(u"Available to")),
        Column("created_by", _(u"Created by")),
        Column("created_on", _(u"Date created")),
    ]

    def get_object_abstract(self, instance, item):
        return [
            {"text": "%s" % (instance or _("Page")), "class": "header"},
            {"title": _(u"Available from"), "text": item.get("available_from")},
            {"title": _(u"Available to"), "text": item.get("available_to")} if instance.available_to else None
        ]

    def get_queryset(self):
        return super(PageListView, self).get_queryset().for_shop(get_shop(self.request)).not_deleted()
Exemple #7
0
class AvailabilityExceptionListView(PicotableListView):
    model = AvailabilityException
    url_identifier = "discounts_availability_exception"

    default_columns = [
        Column(
            "name", _("Exception Name"), sort_field="name", display="name",
            filter_config=TextFilter(filter_field="name", placeholder=_("Filter by name..."))
        ),
        Column(
            "start_datetime", _("Start Date and Time"), display="format_start_datetime", filter_config=DateRangeFilter()
        ),
        Column(
            "end_datetime", _("End Date and Time"), display="format_end_datetime", filter_config=DateRangeFilter()
        )
    ]

    def get_queryset(self):
        return AvailabilityException.objects.filter(shops=get_shop(self.request))

    def format_start_datetime(self, instance, *args, **kwargs):
        return get_locally_formatted_datetime(instance.start_datetime) if instance.start_datetime else ""

    def format_end_datetime(self, instance, *args, **kwargs):
        return get_locally_formatted_datetime(instance.end_datetime) if instance.end_datetime else ""
Exemple #8
0
    def _get_column(self, model, field, known_names, identifier):
        if not self._valid_field(field.name):
            return None

        field_name = field.verbose_name.title()
        if field_name in known_names:
            field_name = "%s %s" % (model.__name__, field_name)

        display = "%s__%s" % (identifier, field.name) if identifier else field.name

        column = Column(
            "%s_%s" % (model.__name__.lower(), field.name),
            field_name,
            display=display
        )

        column, is_special = self.handle_special_column(field, column)
        if not is_special:
            if isinstance(field, CharField):
                column.filter_config = TextFilter(placeholder=field_name)
            if isinstance(field, EnumIntegerField):
                column.filter_config = ChoicesFilter(field.choices)
            if isinstance(field, BooleanField):
                column.filter_config = true_or_false_filter
        return column
Exemple #9
0
class CurrencyListView(PicotableListView):
    model = Currency

    default_columns = [
        Column("name", _("Name"), display="get_currency_display", sortable=False),
        Column(
            "code", _(u"Code"), sort_field="code",
            filter_config=TextFilter(
                filter_field="code",
                placeholder=_("Filter by code"),
            )
        ),
        Column(
            "decimal_places",
            _("Decimal places"),
            display="format_decimal_places",
        )
    ]
    toolbar_buttons_provider_key = "currency_list_toolbar_provider"
    mass_actions_provider_key = "currency_list_mass_actions_provider"

    def format_decimal_places(self, instance):
        return "{0}".format(instance.decimal_places)

    def get_currency_display(self, instance):
        locale = get_current_babel_locale()
        return locale.currencies.get(instance.code, instance.code)
Exemple #10
0
class CampaignListView(PicotableListView):
    default_columns = [
        Column(
            "name", _(u"Title"), sort_field="name", display="name", linked=True,
            filter_config=TextFilter(operator="startswith")
        ),
        Column("start_datetime", _("Starts")),
        Column("end_datetime", _("Ends")),
        Column("active", _("Active"), filter_config=ChoicesFilter(choices=[(0, _("No")), (1, _("Yes"))])),
    ]
    toolbar_buttons_provider_key = "campaign_list_toolbar_provider"
    mass_actions_provider_key = "campaign_list_actions_provider"

    def get_queryset(self):
        return self.model.objects.filter(shop=get_shop(self.request))

    def start_datetime(self, instance, *args, **kwargs):
        if not instance.start_datetime:
            return ""
        return self._formatted_datetime(instance.start_datetime)

    def end_datetime(self, instance, *args, **kwargs):
        if not instance.end_datetime:
            return ""
        return self._formatted_datetime(instance.end_datetime)

    def _formatted_datetime(self, dt):
        return format_datetime(localtime(dt), locale=get_current_babel_locale())

    def get_object_abstract(self, instance, item):
        return [
            {"text": "%s" % (instance or _("CatalogCampaign")), "class": "header"},
        ]
Exemple #11
0
class SupplierListView(PicotableListView):
    model = Supplier
    default_columns = [
        Column(
            "name",
            _(u"Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(
                filter_field="name",
                placeholder=_("Filter by name...")
            )
        ),
        Column("type", _(u"Type")),
        Column("module_identifier", _(u"Module"), display="get_module_display", sortable=True)
    ]
    toolbar_buttons_provider_key = "supplier_list_toolbar_provider"
    mass_actions_provider_key = "supplier_list_mass_actions_provider"

    def get_queryset(self):
        return Supplier.objects.filter(Q(shops=get_shop(self.request)) | Q(shops__isnull=True)).not_deleted()

    def get_module_display(self, instance):
        return instance.module.name or _("No %s module") % self.model._meta.verbose_name

    def get_toolbar(self):
        if settings.E-Commerce_ENABLE_MULTIPLE_SUPPLIERS:
            return super(SupplierListView, self).get_toolbar()
        else:
            return Toolbar.for_view(self)
Exemple #12
0
class ManufacturerListView(PicotableListView):
    model = Manufacturer
    default_columns = [
        Column(
            "logo",
            _(u"Logo"),
            display="logo",
            class_name="text-center",
            raw=True,
            ordering=1,
            sortable=False),
        Column(
            "name",
            _(u"Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(
                filter_field="name",
                placeholder=_("Filter by name...")
            )
        ),
    ]
    toolbar_buttons_provider_key = "manufacturer_list_toolbar_provider"
    mass_actions_provider_key = "manufacturer_list_mass_actions_provider"

    def get_queryset(self):
        return Manufacturer.objects.filter(Q(shops=get_shop(self.request)) | Q(shops__isnull=True))
Exemple #13
0
class ServiceListView(PicotableListView):
    model = None  # Override in subclass
    columns = []
    base_columns = [
        Column(
            "name", _("Name"), sort_field="translations__name",
            filter_config=TextFilter(filter_field="translations__name", placeholder=_("Filter by name..."))
        ),
        Column(
            "choice_identifier", _(u"Service choice"), display="format_service_choice",
            sortable=False,
        ),
        Column("enabled", _(u"Enabled"), filter_config=true_or_false_filter),
        Column("shop", _(u"Shop"))
    ]
    toolbar_buttons_provider_key = "service_list_toolbar_provider"
    mass_actions_provider_key = "service_list_mass_actions_provider"

    def get_object_abstract(self, instance, item):
        return [
            {"text": "%s" % instance, "class": "header"},
        ]

    def format_service_choice(self, instance, *args, **kwargs):
        if instance.provider:
            for choice in instance.provider.get_service_choices():
                if choice.identifier == instance.choice_identifier:
                    return force_text(choice.name)

    def get_queryset(self):
        return super(ServiceListView, self).get_queryset().filter(shop=self.request.shop)
Exemple #14
0
class PermissionGroupListView(PicotableListView):
    model = PermissionGroup
    default_columns = [
        Column(
            "name",
            _(u"Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(filter_field="name", placeholder=_("Filter by name..."))
        ),
    ]
    toolbar_buttons_provider_key = "permission_group_list_toolbar_provider"
    mass_actions_provider_key = "permission_group_list_mass_actions_provider"

    def get_context_data(self, **kwargs):
        context = super(PermissionGroupListView, self).get_context_data(**kwargs)
        context["title"] = _("Permission Groups")
        if self.request.user.is_superuser:
            settings_button = SettingsActionButton.for_model(self.model, return_url="permission_group")
        else:
            settings_button = None
        context["toolbar"] = Toolbar([
            NewActionButton("E-Commerce_admin:permission_group.new", text=_("Create new Permission Group")),
            settings_button
        ], view=self)
        return context
Exemple #15
0
    def applyFilters(self):

        i = 0
        while i < self.numFiles:
            self.tFilterDictionary[i] = TextFilter(self.docDictionary[i], self.pList[i])
            self.tFilterDictionary[i].apply()
            i += 1
        print("Applied Filters")
Exemple #16
0
class TaskListView(PicotableListView):
    model = Task
    default_columns = [
        Column(
            "name",
            _("Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(
                filter_field="name",
                placeholder=_("Filter by name...")
            )
        ),
        Column(
            "creator",
            _("Creator"),
            display="get_creator_name_display",
            filter_config=TextFilter(
                filter_field="creator__name",
                placeholder=_("Filter by creator...")
            )
        ),
        Column("status", _("Status"), filter_config=ChoicesFilter(TaskStatus.choices), class_name="text-center"),
        Column("priority", _("Priority"), display="get_priority_display", class_name="text-center"),
        Column("comments", _("Comments"), sort_field="comments", display="get_comments_count", class_name="text-center")
    ]
    toolbar_buttons_provider_key = "task_list_toolbar_provider"
    mass_actions_provider_key = "task_list_actions_provider"

    def get_comments_count(self, instance, **kwargs):
        return instance.comments.for_contact(get_person_contact(self.request.user)).count()

    def get_queryset(self):
        return Task.objects.for_shop(get_shop(self.request))

    def get_creator_name_display(self, instance, **kwargs):
        if not len(instance.creator.name):
            return "No name set (id: %d)" % instance.creator.id
        return instance.creator.name

    def get_priority_display(self, instance, **kwargs):
        return "%s" % instance.priority
Exemple #17
0
class TaxClassListView(PicotableListView):
    model = TaxClass

    default_columns = [
        Column(
            "name", _("Name"), sort_field="translations__name",
            filter_config=TextFilter(
                filter_field="translations__name",
                placeholder=_("Filter by name..."),
            ),
        ),
    ]
Exemple #18
0
class HappyHourListView(PicotableListView):
    model = HappyHour
    url_identifier = "discounts_happy_hour"

    default_columns = [
        Column(
            "name", _("Happy Hour Name"), sort_field="name", display="name",
            filter_config=TextFilter(filter_field="name", placeholder=_("Filter by name..."))
        )
    ]

    def get_queryset(self):
        return HappyHour.objects.filter(shops=get_shop(self.request))
Exemple #19
0
class CarouselListView(PicotableListView):
    model = Carousel
    default_columns = [
        Column(
            "name",
            _("Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(filter_field="name", placeholder=_("Filter by name..."))
        ),
    ]

    def get_queryset(self):
        return super(CarouselListView, self).get_queryset().filter(shops=get_shop(self.request))
Exemple #20
0
class ProductTypeListView(PicotableListView):
    model = ProductType
    default_columns = [
        Column(
            "name",
            _(u"Name"),
            sort_field="translations__name",
            display="name",
            filter_config=TextFilter(filter_field="translations__name", placeholder=_("Filter by name..."))),
        Column("n_attributes", _(u"Number of Attributes")),
    ]
    toolbar_buttons_provider_key = "product_type_list_toolbar_provider"
    mass_actions_provider_key = "product_type_list_mass_actions_provider"

    def get_queryset(self):
        return ProductType.objects.all().annotate(n_attributes=Count("attributes"))
Exemple #21
0
class TaskTypeListView(PicotableListView):
    model = TaskType
    default_columns = [
        Column(
            "name",
            _("Name"),
            sort_field="name",
            display="name",
            filter_config=TextFilter(
                filter_field="translations__name",
                placeholder=_("Filter by name...")
            )
        )
    ]

    def get_queryset(self):
        return TaskType.objects.filter(shop=get_shop(self.request))
Exemple #22
0
def test_choice_filter_with_default(rf, admin_user, regular_user):
    columns = [
        Column("id", "Id", filter_config=Filter(), display=instance_id),
        Column("username", "Username", sortable=False, filter_config=MultiFieldTextFilter(filter_fields=("username", "email"), operator="iregex")),
        Column("email", "Email", sortable=False, filter_config=TextFilter()),
        Column("is_superuser", "Is Superuser", display="superuser_display", filter_config=ChoicesFilter(choices=false_and_true())),
        Column("date_joined", "Date Joined", filter_config=DateRangeFilter())
    ]

    is_active = [Column("is_active", "Is Active", filter_config=ChoicesFilter(choices=false_and_true))]
    is_active_with_default = [Column("is_active", "Is Active", filter_config=ChoicesFilter(choices=false_and_true, default=True))]

    query = {"perPage": 100, "page": 1, "sort": "+id"}

    pico_no_defaults = get_pico(rf, admin_user, columns=(columns + is_active))
    data = pico_no_defaults.get_data(query)

    superuser_field = data["columns"][3]
    assert superuser_field["id"] == "is_superuser"
    assert len(superuser_field["filter"]["choices"]) == 3
    assert superuser_field["filter"]["defaultChoice"] == "_all"
    assert superuser_field["filter"]["choices"][0][0] == superuser_field["filter"]["defaultChoice"]

    user_data = data["items"][0]
    user = get_user_model().objects.get(id=user_data["id"])
    assert user.is_active

    pico_with_defaults = get_pico(rf, admin_user, columns=(columns + is_active_with_default))
    data = pico_with_defaults.get_data(query)
    user_data = data["items"][0]
    user_with_defaults = get_user_model().objects.get(id=user_data["id"])
    assert user_with_defaults == user

    user.is_active = False
    user.save()

    data = pico_no_defaults.get_data(query)
    user_data = data["items"][0]
    new_user = get_user_model().objects.get(id=user_data["id"])
    assert new_user == user

    data = pico_with_defaults.get_data(query)
    user_data = data["items"][0]
    new_user_with_defaults = get_user_model().objects.get(id=user_data["id"])
    assert new_user_with_defaults != user_with_defaults
Exemple #23
0
class TaxListView(PicotableListView):
    model = Tax

    default_columns = [
        Column(
            "name", _("Name"), sort_field="translations__name",
            filter_config=TextFilter(
                filter_field="translations__name",
                placeholder=_("Filter by name..."),
            ),
        ),
        Column("code", _(u"Code")),
        Column("rate", _("Rate"), display=_format_rate),
        # Column("amount", _(u"Amount")),
        Column("enabled", _(u"Enabled"), filter_config=true_or_false_filter),
    ]
    toolbar_buttons_provider_key = "tax_list_toolbar_provider"
    mass_actions_provider_key = "tax_list_mass_actions_provider"
Exemple #24
0
class ScriptListView(PicotableListView):
    template_name = "notify/admin/list_script.jinja"

    model = Script
    default_columns = [
        Column("name", _("Name"), linked=True, filter_config=TextFilter(operator="startswith")),
        Column("event_identifier", _("Event"), display="get_event_identifier_text"),
        Column("enabled", _("Enabled"), filter_config=true_or_false_filter),
    ]
    toolbar_buttons_provider_key = "notify_list_toolbar_provider"
    mass_actions_provider_key = "notify_list_actions_provider"

    def get_object_url(self, instance):
        return reverse("E-Commerce_admin:notify.script.edit", kwargs={"pk": instance.pk})

    def get_event_identifier_text(self, instance):
        if not hasattr(self, "_event_identifier_names"):
            self._event_identifier_names = dict(get_name_map("notify_event"))
        return self._event_identifier_names.get(instance.event_identifier, instance.event_identifier)

    def get_toolbar(self):
        return Toolbar([
            URLActionButton(
                text=_("New Script"), icon="fa fa-plus", extra_css_class="btn-success",
                url=reverse("E-Commerce_admin:notify.script.new")
            ),
            JavaScriptActionButton(
                text=_("New From Template"), icon="fa fa-book",
                onclick="showScriptTemplates()"
            )
        ], view=self)

    def get_object_abstract(self, instance, item):
        return [
            {"text": "%s" % instance, "class": "header"},
            {"title": _("Event"), "text": item.get("event_identifier")},
            {"title": _("Enabled"), "text": item.get("enabled")}
        ]

    def get_queryset(self):
        return super(ScriptListView, self).get_queryset().filter(shop=get_shop(self.request))
Exemple #25
0
class ServiceProviderListView(PicotableListView):
    model = ServiceProvider
    default_columns = [
        Column(
            "name", _("Name"), sort_field="base_translations__name",
            filter_config=TextFilter(
                filter_field="base_translations__name",
                placeholder=_("Filter by name..."))),
        Column("type", _(u"Type"), display="get_type_display", sortable=False),
    ]
    toolbar_buttons_provider_key = "service_provider_list_toolbar_provider"
    mass_actions_provider_key = "service_provider_mass_actions_provider"

    def get_type_display(self, instance):
        return instance._meta.verbose_name.capitalize()

    def get_object_abstract(self, instance, item):
        return [
            {"text": "%s" % instance, "class": "header"},
            {"text": self.get_type_display(instance)},
        ]
Exemple #26
0
class AttributeListView(PicotableListView):
    model = Attribute
    default_columns = [
        Column("identifier", _("Identifier"), filter_config=TextFilter(
            filter_field="identifier",
            placeholder=_("Filter by identifier...")
        )),
        Column("name", _("Name"), sort_field="translations__name", display="name", filter_config=TextFilter(
            filter_field="translations__name",
            placeholder=_("Filter by name...")
        )),
        Column("type", _("Type"), filter_config=ChoicesFilter(AttributeType.choices)),
        Column("visibility_mode", _("Visibility Mode"), filter_config=ChoicesFilter(AttributeVisibility.choices)),
        Column("searchable", _("Searchable")),
        Column("n_product_types", _("Used in # Product Types")),
    ]
    toolbar_buttons_provider_key = "attribute_list_toolbar_provider"
    mass_actions_provider_key = "attribute_list_mass_actions_provider"

    def get_queryset(self):
        return Attribute.objects.all().annotate(n_product_types=Count("product_types"))
Exemple #27
0
def get_pico(rf, admin_user, model=None, columns=None):
    shop = get_default_shop()
    model = model or get_user_model()
    columns = columns or [
        Column("id", "Id", filter_config=Filter(), display=instance_id),
        Column("username", "Username", sortable=False, filter_config=MultiFieldTextFilter(filter_fields=("username", "email"), operator="iregex")),
        Column("email", "Email", sortable=False, filter_config=TextFilter()),
        Column("is_superuser", "Is Superuser", display="superuser_display", filter_config=ChoicesFilter(choices=false_and_true())),
        Column("is_active", "Is Active", filter_config=ChoicesFilter(choices=false_and_true)),  # `choices` callable
        Column("date_joined", "Date Joined", filter_config=DateRangeFilter())
    ]
    admin_user.is_staff = True
    admin_user.save()
    shop.staff_members.add(admin_user)
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    return Picotable(
        request=request,
        columns=columns,
        mass_actions=[],
        queryset=model.objects.all(),
        context=PicoContext(request)
    )
Exemple #28
0
class CouponCodeListView(PicotableListView):
    model = CouponCode
    url_identifier = "discounts_coupon_codes"

    default_columns = [
        Column(
            "code", _("Code"), sort_field="code", display="code", linked=True,
            filter_config=TextFilter(operator="startswith")
        ),
        Column("usages", _("Usages"), display="get_usages"),
        Column("usage_limit_customer", _("Usages Limit per contact")),
        Column("usage_limit", _("Usage Limit")),
        Column("active", _("Active")),
        Column("created_by", _("Created by")),
        Column("created_on", _("Date created")),
    ]

    def get_usages(self, instance, *args, **kwargs):
        return instance.usages.count()

    def get_queryset(self):
        return CouponCode.objects.filter(shops=get_shop(self.request))
Exemple #29
0
class CouponListView(PicotableListView):
    model = Coupon
    default_columns = [
        Column(
            "code", _(u"Code"), sort_field="code", display="code", linked=True,
            filter_config=TextFilter(operator="startswith")
        ),
        Column("usages", _("Usages"), display="get_usages"),
        Column("usage_limit_customer", _("Usages Limit per contact")),
        Column("usage_limit", _("Usage Limit")),
        Column("active", _("Active")),
        Column("created_by", _(u"Created by")),
        Column("created_on", _(u"Date created")),
    ]

    def get_usages(self, instance, *args, **kwargs):
        return instance.usages.count()

    def get_context_data(self, **kwargs):
        context = super(CouponListView, self).get_context_data(**kwargs)
        if self.request.user.is_superuser:
            settings_button = SettingsActionButton.for_model(self.model, return_url="coupon")
        else:
            settings_button = None
        context["toolbar"] = Toolbar([
            NewActionButton("E-Commerce_admin:coupon.new", text=_("Create new Coupon")),
            settings_button
        ], view=self)
        return context

    def get_queryset(self):
        queryset = super(CouponListView, self).get_queryset()
        if not self.request.user.is_superuser:
            queryset = queryset.filter(shop=get_shop(self.request))

        supplier = get_supplier(self.request)
        if supplier:
            queryset = queryset.filter(supplier=supplier)
        return queryset
Exemple #30
0
    def _get_translated_column(self, model, field, known_names, identifier):
        field_name = field.verbose_name.title()
        if field_name in known_names:
            field_name = "%s %s" % (model.__name__, field_name)

        # take the first extension, usually we should not have more then one
        translation_rel_name = model._parler_meta._extensions[0].rel_name

        if model != self.model:
            filter_field = "%s__%s__%s" % (identifier, translation_rel_name, field.name) if identifier else field.name
        else:
            filter_field = "%s__%s" % (translation_rel_name, field.name)

        display = "%s__%s" % (identifier, field.name) if identifier else field.name

        column = Column(
            "%s_%s" % (model.__name__.lower(), field.name),
            field_name,
            sort_field=display,
            display=display,
            filter_config=TextFilter(filter_field=filter_field, placeholder=field_name)
        )
        return self.handle_special_column(field, column)[0]