Ejemplo n.º 1
0
    def render(self, name, value, attrs=None):
        rel_to = self.rel.to
        if attrs is None:
            attrs = {}
        extra = []
        if rel_to in self.admin_site._registry:
            # The related object is registered with the same AdminSite
            related_url = reverse('admin:%s_%s_changelist' %
                                    (rel_to._meta.app_label,
                                    rel_to._meta.module_name),
                                    current_app=self.admin_site.name)

            params = self.url_parameters()
            if params:
                url = u'?' + u'&'.join([u'%s=%s' % (k, v) for k, v in params.items()])
            else:
                url = u''
            if "class" not in attrs:
                attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript code looks for this hook.
            # TODO: "lookup_id_" is hard-coded here. This should instead use
            # the correct API to determine the ID dynamically.
            extra.append(u'<a href="%s%s" class="related-lookup" id="lookup_id_%s" onclick="return showRelatedObjectLookupPopup(this);"> '
                            % (related_url, url, name))
            extra.append(u'<img src="%s" width="16" height="16" alt="%s" /></a>'
                            % (static('admin/img/selector-search.gif'), _('Lookup')))
        output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)] + extra
        if value:
            output.append(self.label_for_value(value))
        return mark_safe(u''.join(output))
Ejemplo n.º 2
0
    def render(self, name, value, attrs=None):
        rel_to = self.rel.to
        if attrs is None:
            attrs = {}
        extra = []
        if rel_to in self.admin_site._registry:
            # The related object is registered with the same AdminSite
            related_url = reverse(
                'admin:%s_%s_changelist' %
                (rel_to._meta.app_label, rel_to._meta.module_name),
                current_app=self.admin_site.name)

            params = self.url_parameters()
            if params:
                url = '?' + '&amp;'.join(
                    ['%s=%s' % (k, v) for k, v in params.items()])
            else:
                url = ''
            if "class" not in attrs:
                attrs[
                    'class'] = 'vForeignKeyRawIdAdminField'  # The JavaScript code looks for this hook.
            # TODO: "lookup_id_" is hard-coded here. This should instead use
            # the correct API to determine the ID dynamically.
            extra.append(
                '<a href="%s%s" class="related-lookup" id="lookup_id_%s" onclick="return showRelatedObjectLookupPopup(this);"> '
                % (related_url, url, name))
            extra.append(
                '<img src="%s" width="16" height="16" alt="%s" /></a>' %
                (static('admin/img/selector-search.gif'), _('Lookup')))
        output = [
            super(ForeignKeyRawIdWidget, self).render(name, value, attrs)
        ] + extra
        if value:
            output.append(self.label_for_value(value))
        return mark_safe(''.join(output))
Ejemplo n.º 3
0
 def _media(self):
     if 'collapse' in self.classes:
         extra = '' if settings.DEBUG else '.min'
         js = ['jquery%s.js' % extra,
               'jquery.init.js',
               'collapse%s.js' % extra]
         return forms.Media(js=[static('admin/js/%s' % url) for url in js])
     return forms.Media()
Ejemplo n.º 4
0
 def _media(self):
     if 'collapse' in self.classes:
         extra = '' if settings.DEBUG else '.min'
         js = [
             'jquery%s.js' % extra, 'jquery.init.js',
             'collapse%s.js' % extra
         ]
         return forms.Media(js=[static('admin/js/%s' % url) for url in js])
     return forms.Media()
Ejemplo n.º 5
0
 def render(self, name, value, attrs=None, choices=()):
     if attrs is None:
         attrs = {}
     attrs['class'] = 'selectfilter'
     if self.is_stacked:
         attrs['class'] += 'stacked'
     output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]
     output.append(u'<script type="text/javascript">addEvent(window, "load", function(e) {')
     # TODO: "id_" is hard-coded here. This should instead use the correct
     # API to determine the ID dynamically.
     output.append(u'SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n'
         % (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), static('admin/')))
     return mark_safe(u''.join(output))
Ejemplo n.º 6
0
 def render(self, name, value, *args, **kwargs):
     rel_to = self.rel.to
     info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
     self.widget.choices = self.choices
     output = [self.widget.render(name, value, *args, **kwargs)]
     if self.can_add_related:
         related_url = reverse('admin:%s_%s_add' % info, current_app=self.admin_site.name)
         # TODO: "add_id_" is hard-coded here. This should instead use the
         # correct API to determine the ID dynamically.
         output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> '
                       % (related_url, name))
         output.append(u'<img src="%s" width="10" height="10" alt="%s"/></a>'
                       % (static('admin/img/icon_addlink.gif'), _('Add Another')))
     return mark_safe(u''.join(output))
Ejemplo n.º 7
0
 def render(self, name, value, *args, **kwargs):
     rel_to = self.rel.to
     info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
     self.widget.choices = self.choices
     output = [self.widget.render(name, value, *args, **kwargs)]
     if self.can_add_related:
         related_url = reverse('admin:%s_%s_add' % info,
                               current_app=self.admin_site.name)
         # TODO: "add_id_" is hard-coded here. This should instead use the
         # correct API to determine the ID dynamically.
         output.append(
             '<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> '
             % (related_url, name))
         output.append(
             '<img src="%s" width="10" height="10" alt="%s"/></a>' %
             (static('admin/img/icon_addlink.gif'), _('Add Another')))
     return mark_safe(''.join(output))
Ejemplo n.º 8
0
 def render(self, name, value, attrs=None, choices=()):
     if attrs is None:
         attrs = {}
     attrs['class'] = 'selectfilter'
     if self.is_stacked:
         attrs['class'] += 'stacked'
     output = [
         super(FilteredSelectMultiple, self).render(name, value, attrs,
                                                    choices)
     ]
     output.append(
         '<script type="text/javascript">addEvent(window, "load", function(e) {'
     )
     # TODO: "id_" is hard-coded here. This should instead use the correct
     # API to determine the ID dynamically.
     output.append(
         'SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n' %
         (name, self.verbose_name.replace('"', '\\"'), int(
             self.is_stacked), static('admin/')))
     return mark_safe(''.join(output))
Ejemplo n.º 9
0
 def media(self):
     js = ["calendar.js", "admin/DateTimeShortcuts.js"]
     return forms.Media(js=[static("admin/js/%s" % path) for path in js])
Ejemplo n.º 10
0
 def media(self):
     js = ["core.js", "SelectBox.js", "SelectFilter2.js"]
     return forms.Media(js=[static("admin/js/%s" % path) for path in js])
Ejemplo n.º 11
0
 def media(self):
     js = ["calendar.js", "admin/DateTimeShortcuts.js"]
     return forms.Media(js=[static("admin/js/%s" % path) for path in js])
Ejemplo n.º 12
0
 def media(self):
     js = ["core.js", "SelectBox.js", "SelectFilter2.js"]
     return forms.Media(js=[static("admin/js/%s" % path) for path in js])
Ejemplo n.º 13
0
def _boolean_icon(field_val):
    icon_url = static("admin/img/icon-%s.gif" % {True: "yes", False: "no", None: "unknown"}[field_val])
    return mark_safe(u'<img src="%s" alt="%s" />' % (icon_url, field_val))