Fix issue #4832: 'OneToOneField' object has no attribute 'related'

remotes/origin/github-import
David Barragán Merino 2016-12-14 15:33:55 +01:00
parent e53fd22919
commit c53530f6e2
8 changed files with 19 additions and 26 deletions

View File

@ -44,11 +44,11 @@ class MembershipAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name in ["user", "invited_by"] and getattr(self, 'obj', None): if db_field.name in ["user", "invited_by"] and getattr(self, 'obj', None):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
elif db_field.name in ["role"] and getattr(self, 'obj', None): elif db_field.name in ["role"] and getattr(self, 'obj', None):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.obj.project) project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)
@ -59,17 +59,17 @@ class MembershipInline(admin.TabularInline):
extra = 0 extra = 0
def get_formset(self, request, obj=None, **kwargs): def get_formset(self, request, obj=None, **kwargs):
# Hack! Hook parent obj just in time to use in formfield_for_manytomany # Hack! Hook parent obj just in time to use in formfield_for_foreignkey
self.parent_obj = obj self.parent_obj = obj
return super(MembershipInline, self).get_formset(request, obj, **kwargs) return super(MembershipInline, self).get_formset(request, obj, **kwargs)
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["user", "invited_by"]): if (db_field.name in ["user", "invited_by"]):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.parent_obj) memberships__project=self.parent_obj)
elif (db_field.name in ["role"]): elif (db_field.name in ["role"]):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.parent_obj) project=self.parent_obj)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)
@ -152,25 +152,18 @@ class ProjectAdmin(admin.ModelAdmin):
"default_priority", "default_severity", "default_priority", "default_severity",
"default_issue_status", "default_issue_type"]): "default_issue_status", "default_issue_type"]):
if getattr(self, 'obj', None): if getattr(self, 'obj', None):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.obj) project=self.obj)
else: else:
kwargs["queryset"] = db_field.related.model.objects.none() kwargs["queryset"] = db_field.related_model.objects.none()
elif (db_field.name in ["owner"] elif (db_field.name in ["owner"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj)
return super().formfield_for_manytomany(db_field, request, **kwargs)
def delete_model(self, request, obj): def delete_model(self, request, obj):
obj.delete_related_content() obj.delete_related_content()
super().delete_model(request, obj) super().delete_model(request, obj)

View File

@ -34,7 +34,7 @@ class AttachmentAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["owner"]and getattr(self, 'obj', None)): if (db_field.name in ["owner"]and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -44,10 +44,10 @@ class EpicAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status"] and getattr(self, 'obj', None)): if (db_field.name in ["status"] and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter(project=self.obj.project) kwargs["queryset"] = db_field.related_model.objects.filter(project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"] and getattr(self, 'obj', None)): elif (db_field.name in ["owner", "assigned_to"] and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter(memberships__project=self.obj.project) kwargs["queryset"] = db_field.related_model.objects.filter(memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -39,11 +39,11 @@ class IssueAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "priority", "severity", "type", "milestone"] if (db_field.name in ["status", "priority", "severity", "type", "milestone"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.obj.project) project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"] elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -34,7 +34,7 @@ class MilestoneInline(admin.TabularInline):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["owner"]): if (db_field.name in ["owner"]):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.parent_obj) memberships__project=self.parent_obj)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -39,11 +39,11 @@ class TaskAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "milestone", "user_story"] if (db_field.name in ["status", "milestone", "user_story"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.obj.project) project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"] elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -54,11 +54,11 @@ class UserStoryAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "milestone", "generated_from_issue"] if (db_field.name in ["status", "milestone", "generated_from_issue"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
project=self.obj.project) project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"] elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)): and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)

View File

@ -38,7 +38,7 @@ class WikiPageAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs): def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["owner", "last_modifier"] and getattr(self, 'obj', None)): if (db_field.name in ["owner", "last_modifier"] and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.model.objects.filter( kwargs["queryset"] = db_field.related_model.objects.filter(
memberships__project=self.obj.project) memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs) return super().formfield_for_foreignkey(db_field, request, **kwargs)