コード例 #1
0
ファイル: tests.py プロジェクト: ssaltzman/POET
    def test_render(self):
        band = models.Band.objects.create(name='Linkin Park')
        band.album_set.create(
            name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg'
        )
        rel = models.Album._meta.get_field('band').rel

        w = ForeignKeyRawIdWidget(rel)
        self.assertEqual(
            conditional_escape(w.render('test', band.pk, attrs={})),
            '<input type="text" name="test" value="%(bandpk)s" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/band/?t=id" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Linkin Park</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX, "bandpk": band.pk},
        )
コード例 #2
0
ファイル: tests.py プロジェクト: drawp/django-nonrel-drawp
    def test_render(self):
        band = models.Band.objects.create(name='Linkin Park')
        band.album_set.create(
            name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg'
        )
        rel = models.Album._meta.get_field('band').rel

        w = ForeignKeyRawIdWidget(rel)
        self.assertEqual(
            conditional_escape(w.render('test', band.pk, attrs={})),
            '<input type="text" name="test" value="%(bandpk)s" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/band/?t=id" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Linkin Park</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX, "bandpk": band.pk},
        )
コード例 #3
0
ファイル: tests.py プロジェクト: ssaltzman/POET
 def test_relations_to_non_primary_key(self):
     # Check that ForeignKeyRawIdWidget works with fields which aren't
     # related to the model's primary key.
     apple = models.Inventory.objects.create(barcode=86, name='Apple')
     models.Inventory.objects.create(barcode=22, name='Pear')
     core = models.Inventory.objects.create(
         barcode=87, name='Core', parent=apple
     )
     rel = models.Inventory._meta.get_field('parent').rel
     w = ForeignKeyRawIdWidget(rel)
     self.assertEqual(
         w.render('test', core.parent_id, attrs={}),
         '<input type="text" name="test" value="86" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Apple</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX},
     )
コード例 #4
0
ファイル: tests.py プロジェクト: drawp/django-nonrel-drawp
 def test_relations_to_non_primary_key(self):
     # Check that ForeignKeyRawIdWidget works with fields which aren't
     # related to the model's primary key.
     apple = models.Inventory.objects.create(barcode=86, name='Apple')
     models.Inventory.objects.create(barcode=22, name='Pear')
     core = models.Inventory.objects.create(
         barcode=87, name='Core', parent=apple
     )
     rel = models.Inventory._meta.get_field('parent').rel
     w = ForeignKeyRawIdWidget(rel)
     self.assertEqual(
         w.render('test', core.parent_id, attrs={}),
         '<input type="text" name="test" value="86" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Apple</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX},
     )
コード例 #5
0
ファイル: tests.py プロジェクト: ssaltzman/POET
    def test_proper_manager_for_label_lookup(self):
        # see #9258
        rel = models.Inventory._meta.get_field('parent').rel
        w = ForeignKeyRawIdWidget(rel)

        hidden = models.Inventory.objects.create(
            barcode=93, name='Hidden', hidden=True
        )
        child_of_hidden = models.Inventory.objects.create(
            barcode=94, name='Child of hidden', parent=hidden
        )
        self.assertEqual(
            w.render('test', child_of_hidden.parent_id, attrs={}),
            '<input type="text" name="test" value="93" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Hidden</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX},
        )
コード例 #6
0
    def test_proper_manager_for_label_lookup(self):
        # see #9258
        rel = models.Inventory._meta.get_field('parent').rel
        w = ForeignKeyRawIdWidget(rel)

        hidden = models.Inventory.objects.create(barcode=93,
                                                 name='Hidden',
                                                 hidden=True)
        child_of_hidden = models.Inventory.objects.create(
            barcode=94, name='Child of hidden', parent=hidden)
        self.assertEqual(
            w.render('test', child_of_hidden.parent_id, attrs={}),
            '<input type="text" name="test" value="93" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>&nbsp;<strong>Hidden</strong>'
            % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX},
        )
コード例 #7
0
  def __init__(self, *args, **kwargs):
    # checking for user argument here for a more
    # localized form
    self.user = None
    self.timezone = None
    if kwargs.get('instance',None):
      kwargs['initial'] = kwargs.pop('initial',{})
      kwargs['initial']['publish_dt'] = kwargs['instance'].publish_dt

    if 'user' in kwargs:
      self.user = kwargs.pop('user', None)
    super(PostForm, self).__init__(*args, **kwargs)
    self.fields['publish_dt'].widget = AdminSplitDateTime()
    self.fields['slug'].help_text = "URL will be /blog/your-name/<b>slug-goes-here</b>/"
    self.fields['tags'].help_text = "Separate tags with commas. Input will be lowercased."
    self.fields['publish_dt'].help_text = "<i>YYYY-MM-DD</i> and <i>HH:MM</i> (24-hour time)"
    self.fields['photo'].widget=ForeignKeyRawIdWidget(Post._meta.get_field("photo").rel,admin.site)
    # add span class to charfields
    for field in self.fields.values():
      if isinstance(field, forms.fields.CharField):
        if 'class' in field.widget.attrs:
          field.widget.attrs['class'] = "%s %s" % (
            field.widget.attrs['class'],
            'span8',
          )
        else:
          field.widget.attrs['class'] = 'span8'
コード例 #8
0
ファイル: admin.py プロジェクト: cnbillow/django-machina
    def __init__(self, *args, **kwargs):
        admin_site = kwargs.pop('admin_site')
        super().__init__(*args, **kwargs)

        self.fields['group'].required = False
        self.fields['group'].widget = ForeignKeyRawIdWidget(
            GroupForumPermission._meta.get_field('group').remote_field, admin_site)
コード例 #9
0
ファイル: forms.py プロジェクト: krmax44/fragdenstaat_de
 class Meta:
     model = Donor
     fields = MERGE_DONOR_FIELDS
     widgets = {
         'user':
         ForeignKeyRawIdWidget(
             Donor._meta.get_field('user').remote_field, admin_site),
     }
コード例 #10
0
 def __init__(self, *args, **kwargs):
     super(AdminActionForm, self).__init__(*args, **kwargs)
     try:
         entity_model = self.instance.content_type.model_class()
     except:
         entity_model = Org
     self.fields['entity_id'].widget = ForeignKeyRawIdWidget(
         rel=ManyToOneRel(entity_model, 'id'))
コード例 #11
0
class AuthorizationForm(forms.ModelForm):
    authorizer = AuthorizationUserChoiceForm(
        User.objects.filter(
            models.Q(is_superuser=True)
            | models.Q(groups__name='coordinators')))
    user = AuthorizationUserChoiceForm(
        queryset=User.objects.all(),
        widget=ForeignKeyRawIdWidget(
            Authorization._meta.get_field("user").rel, admin.site))
コード例 #12
0
 class ChooseTargetForm(AdminActionBase.BaseForm):
     chosen_target = forms.ModelChoiceField(
         label=_("Choose {}".format(
             self.target_model._meta.verbose_name)),
         queryset=self.target_model.objects.exclude(pk__in=queryset),
         widget=ForeignKeyRawIdWidget(
             modeladmin.model._meta.get_field(
                 self.related_field_name).rel, modeladmin.admin_site),
     )
コード例 #13
0
 def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
     if db_field.name == 'addon':
         kwargs['widget'] = ForeignKeyRawIdWidget(
             db_field.rel, self.admin_site, using=kwargs.get('using'))
         kwargs['queryset'] = Addon.objects.public()
         kwargs['help_text'] = db_field.help_text
         return SlugOrPkChoiceField(**kwargs)
     return super(DiscoveryItemAdmin, self).formfield_for_foreignkey(
         db_field, request, **kwargs)
コード例 #14
0
class ServiceForm(ReportForm):
    date_from = forms.DateField(label=_(u'Od'), required=False, widget=AdminDateWidget())
    date_to = forms.DateField(label=_(u'Do'), required=False, widget=AdminDateWidget())
    towns = forms.ModelMultipleChoiceField(label=_(u'Město'),
                                           queryset=Town.objects.all(),
                                           required=False)
    person = forms.ModelChoiceField(label=_(u'Osoba'),
        queryset=Person.objects.all(), required=False,
        widget=ForeignKeyRawIdWidget(Encounter.person.field.rel))
コード例 #15
0
ファイル: admin.py プロジェクト: cnbillow/django-machina
    def __init__(self, *args, **kwargs):
        admin_site = kwargs.pop('admin_site')
        super().__init__(*args, **kwargs)

        self.fields['user'].required = False
        self.fields['user'].widget = ForeignKeyRawIdWidget(
            UserForumPermission._meta.get_field('user').remote_field, admin_site)

        self.fields['anonymous_user'].required = False
コード例 #16
0
 def __init__(self, *args, **kwargs):
     super(find_slum, self).__init__(*args, **kwargs)
     self.fields['slumname'] = forms.ModelChoiceField(
         queryset=Slum.objects.all(),
         widget=ForeignKeyRawIdWidget(rel=ManyToOneRel(
             Slum._meta.get_field('id'), Slum, 'id'),
                                      admin_site=admin.site))
     self.fields['slumname'].widget.attrs.update(
         {'class': 'customized-form'})
     self.fields['slumname'].label = "Select slum"
コード例 #17
0
ファイル: forms.py プロジェクト: ImpulsAs/oms_cms
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     # try:
     model = self.instance.content_type.model_class()
     #     model_key = model._meta.get_field('id').rel
     # except:
     #     model = Pages
     #     model_key = 'id'
     self.fields['object_id'].widget = ForeignKeyRawIdWidget(
         model._meta.get_field('id').remote_field, site)
コード例 #18
0
    def get_form(self, request, obj=None, **kwargs):
        if 'fields' in kwargs:
            fields = kwargs.pop('fields')
        else:
            fields = flatten_fieldsets(self.get_fieldsets(request, obj))

        excluded = self.get_exclude(request, obj)
        exclude = [] if excluded is None else list(excluded)
        readonly_fields = self.get_readonly_fields(request, obj)
        exclude.extend(readonly_fields)
        if excluded is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
            # Take the custom ModelForm's Meta.exclude into account only if the
            # ModelAdmin doesn't define its own.
            exclude.extend(self.form._meta.exclude)
        # if exclude is an empty list we pass None to be consistent with the
        # default on modelform_factory
        exclude = exclude or None

        new_attrs = OrderedDict(
            (f, None) for f in readonly_fields
            if f in self.form.declared_fields
        )
        form = type(self.form.__name__, (self.form,), new_attrs)

        try:
            model = obj.content_type.model_class()
            model_key = model._meta.pk.name
        except (AttributeError, ObjectDoesNotExist):
            model = self.model.content_type.field.formfield().choices.queryset[0].model_class()
            model_key = 'id'

        defaults = {
            "form": form,
            "fields": fields,
            "exclude": exclude,
            "formfield_callback": partial(self.formfield_for_dbfield, request=request),
            "widgets": {
                'content_type': ContentTypeSelect,
                'object_id': ForeignKeyRawIdWidget(
                    rel=ManyToOneRel(model_key, model, 'id'),
                    admin_site=admin.site
                )
            }
        }
        defaults.update(kwargs)
        if defaults['fields'] is None and not modelform_defines_fields(defaults['form']):
            defaults['fields'] = forms.ALL_FIELDS

        try:
            return modelform_factory(self.model, **defaults)
        except FieldError as e:
            raise FieldError(
                '%s. Check fields/fieldsets/exclude attributes of class %s.'
                % (e, self.__class__.__name__)
            )
コード例 #19
0
 def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
     if db_field.name == 'recipe':
         db = kwargs.get('using')
         kwargs['widget'] = ForeignKeyRawIdWidget(db_field.rel,
                                                  self.admin_site,
                                                  using=db)
         return db_field.formfield(**kwargs)
     else:
         return super(IngredientInRecipeGroupAdmin,
                      self).formfield_for_foreignkey(
                          db_field, request, **kwargs)
コード例 #20
0
ファイル: forms.py プロジェクト: AleksiKnuutila/tietopyynto
def get_fk_form_class(model, field, admin_site, queryset=None):
    remote_field = model._meta.get_field(field).remote_field
    if queryset is None:
        queryset = remote_field.model.objects.all()

    widget = ForeignKeyRawIdWidget(remote_field, admin_site)

    class ForeignKeyForm(forms.Form):
        obj = forms.ModelChoiceField(queryset=queryset, widget=widget)

    return ForeignKeyForm
コード例 #21
0
 def __init__(self, *args, **kwargs):
     super(AdvertModelForm, self).__init__(*args, **kwargs)
     try:
         model = self.instance.content_type.model_class()
         model_key = model._meta.pk.name
     except (AttributeError, ObjectDoesNotExist):
         model = self.fields['content_type'].queryset[0].model_class()
         model_key = 'id'
     self.fields['object_id'].widget = ForeignKeyRawIdWidget(
         rel=ManyToOneRel(model_key, model, 'id'),
         admin_site=admin.site
     )
コード例 #22
0
class MergeSchoolForm(forms.ModelForm):
    add_to_merge = forms.ModelChoiceField(School.objects.all(), required=False, label=_("Add to merge"),
                                          widget=ForeignKeyRawIdWidget(Contestant._meta.get_field('school').remote_field, site))

    class Meta:
        model = School
        fields = ('name', 'uai', 'acronym', 'type', 'academy',
                  'address', 'postal_code', 'city', 'country',
                  'lat', 'lng', 'approved', 'imported')

    # hack to include the JS for ForeignKeyRawIdWidget
    media = ModelAdmin(School, site).media
コード例 #23
0
ファイル: forms.py プロジェクト: ashubhu123/Shubhangi
 def __init__(self, *args, **kwargs):
     super(account_find_slum, self).__init__(*args, **kwargs)
     self.fields['account_slumname'] = forms.ModelChoiceField(
         queryset=Slum.objects.all(),
         widget=ForeignKeyRawIdWidget(rel=ManyToOneRel(
             Slum._meta.get_field('id'), Slum, 'id'),
                                      admin_site=admin.site))
     self.fields['account_cityname'] = forms.ModelChoiceField(
         queryset=City.objects.all())
     self.fields['account_slumname'].widget.attrs.update(
         {'class': 'customized-form'})
     self.fields['account_slumname'].widget.attrs.update({
         'name':
         'account_slumname',
         'id':
         'id_account_slumname'
     })
     self.fields['account_slumname'].label = "Select slum"
     self.fields['account_cityname'].widget.attrs.update(
         {'class': 'customized-form'})
     self.fields['account_cityname'].widget.attrs.update({
         'name':
         'account_cityname',
         'id':
         'account_cityname'
     })
     self.fields['account_cityname'].label = "Select city"
     self.fields['account_start_date'] = forms.DateField(
         widget=AdminTimeWidget())
     self.fields['account_start_date'].label = "From"
     self.fields['account_start_date'].widget.attrs.update({
         'name':
         'account_start_date',
         'class':
         'datepicker',
         'style':
         'width:80px;'
     })
     self.fields['account_end_date'] = forms.DateField(
         widget=AdminTimeWidget())  #extras.SelectDateWidget())
     self.fields['account_end_date'].label = "To"
     self.fields['account_end_date'].widget.attrs.update({
         'name':
         'account_end_date',
         'class':
         'datepicker',
         'style':
         'width:80px;'
     })
コード例 #24
0
    def __init__(self, *args, **kwargs):
        if getattr(self, 'raw_id_fields', None):
            for field_name in self.raw_id_fields:
                self.base_fields[field_name].widget = ForeignKeyRawIdWidget(
                    rel=self._meta.model._meta.get_field(field_name).rel,
                    admin_site=admin.site)
        if getattr(self, 'filter_horizontal', None):
            for field_name in self.filter_horizontal:
                self.base_fields[field_name].widget = FilteredSelectMultiple(
                    field_name, 0)

        super(FormWithAdminFeatures, self).__init__(*args, **kwargs)
        if hasattr(self, 'content_field_name') \
                and self.content_field_name in self.fields:
            self.fields.insert(1, self.content_field_name,
                               self.fields.pop(self.content_field_name))
コード例 #25
0
ファイル: admin.py プロジェクト: Python3pkg/Django-Pizza
 def form_field (self, etype, initial=None):
   if etype == 'image':
     return forms.ModelChoiceField(
       queryset=Image.objects.all(),
       required=False, label='Content',
       widget=ForeignKeyRawIdWidget(ManyToOneRel(Image, 'id'), admin.site),
       initial=initial
     )
     
   elif etype == 'rich':
     return forms.CharField(required=False, label='Content', widget=RichText, initial=initial)
     
   elif etype == 'plain':
     return forms.CharField(required=False, label='Content', widget=forms.Textarea, initial=initial)
     
   return forms.CharField(max_length=255, required=False, label='Content', initial=initial, widget=forms.TextInput(attrs={'class': 'vTextField'}))
コード例 #26
0
ファイル: forms.py プロジェクト: fredericosachweh/amostra1
 def __init__(self, *args, **kwargs):
     super(GenericRelationForm, self).__init__(*args, **kwargs)
     try:
         model = self.instance.content_type.model_class()
         model_key = model._meta.pk.name
     except Exception:
         model = self._meta.model
         model_key = 'id'
     self.fields['object_id'].widget = ForeignKeyRawIdWidget(
         rel=ManyToOneRel('object_id', model, model_key),
         admin_site=admin.site
     )
     self.fields['content_type'].widget.widget = ContentTypeSelect(
         'lookup_id_object_id',
         self.fields['content_type'].widget.widget.attrs,
         self.fields['content_type'].widget.widget.choices)
コード例 #27
0
class NuevoAlumno2(ModelForm):
    Aspirante = forms.ModelChoiceField(
        Aspirantes.objects.all(),
        widget=ForeignKeyRawIdWidget(
            Estudiante._meta.get_field("Aspirante").rel, admin.site))

    class Meta:
        model = Estudiante

        fields = '__all__'
        #labels = {
        #'fechaCreacionRegistro': ('Fecha de registro'),
        #'plantelRegistro': ('Plantel de informes'),
        #'aspirante': ('Aspirante'),
        #'numerocontrol': ('Numero de Control interno'),
        #}
        readonly_fields = ['numeroControl']
コード例 #28
0
 def form_field (self, etype, name, initial=None, req=False):
   field = models.ForeignKey(Image, blank=True, null=True)
   
   if etype == 'image':
     return forms.ModelChoiceField(
       queryset=Image.objects.all(),
       required=req, label=name,
       widget=ForeignKeyRawIdWidget(ManyToOneRel(field, Image, 'id', related_name='+'), admin.site),
       initial=initial
     )
     
   elif etype == 'rich':
     return forms.CharField(required=req, label=name, widget=RichText, initial=initial)
     
   elif etype == 'plain':
     return forms.CharField(required=req, label=name, widget=forms.Textarea, initial=initial)
     
   return forms.CharField(max_length=255, required=req, label=name, initial=initial, widget=forms.TextInput(attrs={'class': 'vTextField'}))
コード例 #29
0
 def formfield(self, **kwargs):
     defaults = {
         "widget": ForeignKeyRawIdWidget(self.rel, admin.site),
     }
     return super(FileRefField, self).formfield(**defaults)
コード例 #30
0
 def formfield(self, **kwargs):
     defaults = {
         'widget': ForeignKeyRawIdWidget(self.remote_field, admin.site),
     }
     return super().formfield(**defaults)
コード例 #31
0
 def formfield(self, **kwargs):
     kwargs.setdefault('widget',
                       ForeignKeyRawIdWidget(self.remote_field, admin.site))
     return super().formfield(**kwargs)
コード例 #32
0
ファイル: admin.py プロジェクト: 3etechinns/Church-Source
class GroupMemberForm (forms.ModelForm):
  person = AutoCompleteSelectField('personbd', required=True)
  promote = forms.ModelChoiceField(queryset=pmodels.Group.objects.all(), required=False, label="Promote To", widget=ForeignKeyRawIdWidget(pmodels.Person._meta.get_field('groups').rel))
  
  class Meta:
    model = pmodels.Person.groups.through