Remove proxies
- Legacy-Id: 6826
This commit is contained in:
parent
ae2b0e2bcc
commit
3e709e3f24
1038
ietf/doc/proxy.py
1038
ietf/doc/proxy.py
File diff suppressed because it is too large
Load diff
|
@ -1,271 +0,0 @@
|
|||
from ietf.utils.proxy import TranslatingManager, proxy_role_email
|
||||
|
||||
from models import *
|
||||
|
||||
class Acronym(Group):
|
||||
class LazyIndividualSubmitter(object):
|
||||
def __get__(self, obj, type=None):
|
||||
return Group.objects.get(acronym="none").id
|
||||
|
||||
INDIVIDUAL_SUBMITTER = LazyIndividualSubmitter()
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
#acronym_id = models.AutoField(primary_key=True)
|
||||
@property
|
||||
def acronym_id(self):
|
||||
return self.id
|
||||
#acronym = models.CharField(max_length=12) # same name
|
||||
#name = models.CharField(max_length=100) # same name
|
||||
#name_key = models.CharField(max_length=50, editable=False)
|
||||
@property
|
||||
def name_key(self):
|
||||
return self.name.upper()
|
||||
|
||||
@property
|
||||
def ietfwg(self):
|
||||
return IETFWG().from_object(self)
|
||||
|
||||
def __str__(self):
|
||||
return self.acronym
|
||||
|
||||
def __unicode__(self):
|
||||
return self.acronym
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class Area(Group):
|
||||
objects = TranslatingManager(dict(area_acronym__acronym="acronym",
|
||||
area_acronym__name="name",
|
||||
status=lambda v: ("state", {1: "active", 2: "dormant", 3: "conclude"}[v] )),
|
||||
always_filter=dict(type="area"))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
ACTIVE=1
|
||||
#area_acronym = models.OneToOneField(Acronym, primary_key=True)
|
||||
@property
|
||||
def area_acronym(self):
|
||||
return Acronym().from_object(self)
|
||||
|
||||
#start_date = models.DateField(auto_now_add=True)
|
||||
#concluded_date = models.DateField(null=True, blank=True)
|
||||
#status = models.ForeignKey(AreaStatus)
|
||||
@property
|
||||
def status_id(self):
|
||||
return { "active": 1, "dormant": 2, "conclude": 3, "proposed": 4 }[self.state_id]
|
||||
#comments = models.TextField(blank=True)
|
||||
#last_modified_date = models.DateField(auto_now=True)
|
||||
@property
|
||||
def last_modified_date(self):
|
||||
return self.time.date()
|
||||
#extra_email_addresses = models.TextField(blank=True,null=True)
|
||||
|
||||
#def additional_urls(self):
|
||||
# return AreaWGURL.objects.filter(name=self.area_acronym.name)
|
||||
def active_wgs(self):
|
||||
return IETFWG.objects.filter(type="wg", state="active", parent=self).select_related('type', 'state', 'parent').order_by("acronym")
|
||||
|
||||
@property
|
||||
def areadirector_set(self):
|
||||
return proxied_role_emails(Email.objects.filter(role__group=self, role__name="ad"))
|
||||
|
||||
@staticmethod
|
||||
def active_areas():
|
||||
return Area.objects.filter(type="area", state="active").select_related('type', 'state', 'parent').order_by('acronym')
|
||||
|
||||
def __str__(self):
|
||||
return self.acronym
|
||||
def __unicode__(self):
|
||||
return self.acronym
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
def proxied_role_emails(emails):
|
||||
for e in emails:
|
||||
proxy_role_email(e)
|
||||
return emails
|
||||
|
||||
class WGDelegateProxy(Role):
|
||||
#person = models.ForeignKey(PersonOrOrgInfo) # same name
|
||||
#wg = models.ForeignKey(IETFWG)
|
||||
@property
|
||||
def wg(self):
|
||||
return self.group
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s" % self.person
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class IETFWG(Group):
|
||||
objects = TranslatingManager(dict(group_acronym="id",
|
||||
group_acronym__acronym="acronym",
|
||||
group_acronym__acronym__in="acronym__in",
|
||||
group_acronym__acronym__contains="acronym__contains",
|
||||
email_archive__startswith="list_archive__startswith",
|
||||
group_type=lambda v: ("type__in", { 1: ("wg",), 2: ("wg", "rg") }[int(v)]),
|
||||
status=lambda v: ("state__in", { 1: ("active", "bof") }[int(v)]),
|
||||
areagroup__area__status=lambda v: ("parent__state", { 1: "active" }[v]),
|
||||
start_date__isnull=lambda v: None if v else ("groupevent__changestategroupevent__state__slug", "active"),
|
||||
),
|
||||
always_filter=dict(type__in=("wg", "rg", "individ", "area")))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
ACTIVE=1
|
||||
#group_acronym = models.OneToOneField(Acronym, primary_key=True, editable=False)
|
||||
@property
|
||||
def group_acronym(self):
|
||||
return Acronym().from_object(self)
|
||||
|
||||
#group_type = models.ForeignKey(WGType)
|
||||
#proposed_date = models.DateField(null=True, blank=True)
|
||||
#start_date = models.DateField(null=True, blank=True)
|
||||
@property
|
||||
def start_date(self):
|
||||
e = GroupEvent.objects.filter(group=self, type="changed_state", changestategroupevent__state="active").order_by('time')[:1]
|
||||
return e[0].time.date() if e else None
|
||||
|
||||
#dormant_date = models.DateField(null=True, blank=True)
|
||||
#concluded_date = models.DateField(null=True, blank=True)
|
||||
#status = models.ForeignKey(WGStatus)
|
||||
@property
|
||||
def status_id(self):
|
||||
return { "active": 1, "dormant": 2, "conclude": 3, "bof-conc": 3, "proposed": 4, "bof": 4, "abandon": 4, "replaced": 4}[self.state_id]
|
||||
#area_director = models.ForeignKey(AreaDirector, null=True)
|
||||
#meeting_scheduled = models.CharField(blank=True, max_length=3)
|
||||
@property
|
||||
def meeting_scheduled(self):
|
||||
from ietf.meeting.models import Meeting
|
||||
latest_meeting = Meeting.objects.order_by('-date')[0]
|
||||
return "YES" if self.session_set.filter(meeting=latest_meeting) else "NO"
|
||||
#email_address = models.CharField(blank=True, max_length=60)
|
||||
@property
|
||||
def email_address(self):
|
||||
return self.list_email
|
||||
#email_subscribe = models.CharField(blank=True, max_length=120)
|
||||
@property
|
||||
def email_subscribe(self):
|
||||
return self.list_subscribe
|
||||
#email_keyword = models.CharField(blank=True, max_length=50)
|
||||
#email_archive = models.CharField(blank=True, max_length=95)
|
||||
@property
|
||||
def email_archive(self):
|
||||
return self.list_archive
|
||||
#comments = models.TextField(blank=True)
|
||||
#last_modified_date = models.DateField()
|
||||
@property
|
||||
def last_modified_date(self):
|
||||
return self.time.date()
|
||||
#meeting_scheduled_old = models.CharField(blank=True, max_length=3)
|
||||
#area = FKAsOneToOne('areagroup', reverse=True)
|
||||
@property
|
||||
def area(self):
|
||||
if self.parent:
|
||||
areagroup = AreaGroup().from_object(self)
|
||||
return areagroup
|
||||
else:
|
||||
return None
|
||||
|
||||
def __str__(self):
|
||||
return self.group_acronym.acronym
|
||||
|
||||
def __unicode__(self):
|
||||
return self.group_acronym.acronym
|
||||
|
||||
def active_drafts(self):
|
||||
from ietf.doc.proxy import InternetDraft
|
||||
return InternetDraft.objects.filter(group=self, states__type="draft", states__slug="active")
|
||||
# def choices():
|
||||
# return [(wg.group_acronym_id, wg.group_acronym.acronym) for wg in IETFWG.objects.all().filter(group_type__type='WG').select_related().order_by('acronym.acronym')]
|
||||
# choices = staticmethod(choices)
|
||||
def area_acronym(self):
|
||||
return Area().from_object(self.parent) if self.parent else None
|
||||
def area_directors(self):
|
||||
if not self.parent:
|
||||
return None
|
||||
return proxied_role_emails(sorted(Email.objects.filter(role__group=self.parent, role__name="ad"), key=lambda e: e.person.name_parts()[3]))
|
||||
def chairs(self): # return a set of WGChair objects for this work group
|
||||
return proxied_role_emails(sorted(Email.objects.filter(role__group=self, role__name="chair"), key=lambda e: e.person.name_parts()[3]))
|
||||
# def secretaries(self): # return a set of WGSecretary objects for this group
|
||||
# return WGSecretary.objects.filter(group_acronym__exact=self.group_acronym)
|
||||
# def milestones(self): # return a set of GoalMilestone objects for this group
|
||||
# return GoalMilestone.objects.filter(group_acronym__exact=self.group_acronym)
|
||||
# def rfcs(self): # return a set of Rfc objects for this group
|
||||
# return Rfc.objects.filter(group_acronym__exact=self.group_acronym)
|
||||
# def drafts(self): # return a set of Rfc objects for this group
|
||||
# return InternetDraft.objects.filter(group__exact=self.group_acronym)
|
||||
def charter_text(self): # return string containing WG description read from file
|
||||
from ietf.group.utils import get_charter_text
|
||||
return get_charter_text(self)
|
||||
def additional_urls(self):
|
||||
return self.groupurl_set.all().order_by("name")
|
||||
def clean_email_archive(self):
|
||||
return self.list_archive
|
||||
@property
|
||||
def wgchair_set(self):
|
||||
# gross hack ...
|
||||
class Dummy: pass
|
||||
d = Dummy()
|
||||
d.all = self.chairs
|
||||
return d
|
||||
@property
|
||||
def wgdelegate_set(self):
|
||||
return WGDelegateProxy.objects.filter(group=self, name="delegate")
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class IRTF(Group):
|
||||
objects = TranslatingManager(dict(),
|
||||
always_filter=dict(type="rg"))
|
||||
|
||||
#irtf_id = models.AutoField(primary_key=True)
|
||||
@property
|
||||
def irtf_id(self):
|
||||
return self.pk
|
||||
#acronym = models.CharField(blank=True, max_length=25, db_column='irtf_acronym') # same name
|
||||
#name = models.CharField(blank=True, max_length=255, db_column='irtf_name') # same name
|
||||
#charter_text = models.TextField(blank=True,null=True)
|
||||
#meeting_scheduled = models.BooleanField(blank=True)
|
||||
def __str__(self):
|
||||
return self.acronym
|
||||
def __unicode__(self):
|
||||
return self.acronym
|
||||
#def chairs(self): # return a set of IRTFChair objects for this work group
|
||||
# return IRTFChair.objects.filter(irtf=self)
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class AreaGroup(Group):
|
||||
objects = TranslatingManager(dict(group=lambda v: ("pk", v.pk)),
|
||||
always_filter=dict(type="wg"))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
@property
|
||||
def area(self):
|
||||
return Area().from_object(self.parent)
|
||||
|
||||
@property
|
||||
def group(self):
|
||||
return self
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
|
@ -1,63 +0,0 @@
|
|||
from ietf.utils.proxy import TranslatingManager
|
||||
from models import *
|
||||
|
||||
class IDSubStateManager(TranslatingManager):
|
||||
def __init__(self, *args):
|
||||
super(IDSubStateManager, self).__init__(*args)
|
||||
|
||||
def all(self):
|
||||
return self.filter(slug__in=['extpty', 'need-rev', 'ad-f-up', 'point'])
|
||||
|
||||
class IDSubState(DocTagName):
|
||||
objects = IDSubStateManager(dict(pk="order"))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
#sub_state_id = models.AutoField(primary_key=True)
|
||||
@property
|
||||
def sub_state_id(self):
|
||||
return self.order
|
||||
|
||||
#sub_state = models.CharField(max_length=55, db_column='sub_state_val')
|
||||
@property
|
||||
def sub_state(self):
|
||||
return self.name
|
||||
|
||||
#description = models.TextField(blank=True, db_column='sub_state_desc')
|
||||
@property
|
||||
def description(self):
|
||||
return self.desc
|
||||
|
||||
def __str__(self):
|
||||
return self.sub_state
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
|
||||
class AnnotationTagObjectRelationProxy(DocTagName):
|
||||
objects = TranslatingManager(dict(annotation_tag__name="name"))
|
||||
|
||||
@property
|
||||
def annotation_tag(self):
|
||||
return self
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
class StreamProxy(StreamName):
|
||||
def get_chairs(self):
|
||||
from ietf.group.models import Role
|
||||
from ietf.utils.proxy import proxy_personify_role
|
||||
return [proxy_personify_role(r) for r in Role.objects.filter(group__acronym=self.slug, name="chair")]
|
||||
|
||||
def get_delegates(self):
|
||||
from ietf.group.models import Role
|
||||
from ietf.utils.proxy import proxy_personify_role
|
||||
return [proxy_personify_role(r) for r in Role.objects.filter(group__acronym=self.slug, name="delegate")]
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
|
@ -1,55 +0,0 @@
|
|||
from ietf.utils.proxy import TranslatingManager
|
||||
|
||||
from models import *
|
||||
|
||||
class IESGLogin(Person):
|
||||
objects = TranslatingManager(dict(user_level__in=None,
|
||||
first_name="name"
|
||||
))
|
||||
|
||||
def from_object(self, base):
|
||||
for f in base._meta.fields:
|
||||
setattr(self, f.name, getattr(base, f.name))
|
||||
return self
|
||||
|
||||
SECRETARIAT_LEVEL = 0
|
||||
AD_LEVEL = 1
|
||||
INACTIVE_AD_LEVEL = 2
|
||||
|
||||
#login_name = models.CharField(blank=True, max_length=255)
|
||||
@property
|
||||
def login_name(self): raise NotImplemented
|
||||
#password = models.CharField(max_length=25)
|
||||
@property
|
||||
def password(self): raise NotImplemented
|
||||
#user_level = models.IntegerField(choices=USER_LEVEL_CHOICES)
|
||||
@property
|
||||
def user_level(self): raise NotImplemented
|
||||
|
||||
#first_name = models.CharField(blank=True, max_length=25)
|
||||
@property
|
||||
def first_name(self):
|
||||
return self.name_parts()[1]
|
||||
|
||||
#last_name = models.CharField(blank=True, max_length=25)
|
||||
@property
|
||||
def last_name(self):
|
||||
return self.name_parts()[3]
|
||||
|
||||
# FIXME: person isn't wrapped yet
|
||||
#person = BrokenForeignKey(PersonOrOrgInfo, db_column='person_or_org_tag', unique=True, null_values=(0, 888888), null=True)
|
||||
|
||||
# apparently unused
|
||||
#pgp_id = models.CharField(blank=True, null=True, max_length=20)
|
||||
#default_search = models.NullBooleanField()
|
||||
|
||||
def __str__(self):
|
||||
return self.plain_name()
|
||||
def is_current_ad(self):
|
||||
return bool(self.role_set.filter(name="ad", group__state="active"))
|
||||
@staticmethod
|
||||
def active_iesg():
|
||||
return IESGLogin.objects.filter(role__name="ad", role__group__state="active").distinct().order_by('name')
|
||||
|
||||
class Meta:
|
||||
proxy = True
|
|
@ -1,282 +0,0 @@
|
|||
# some helpers for the proxy layer bridging the gap between the legacy
|
||||
# and the redesigned schema, eventually this should all go
|
||||
|
||||
from django.db.models.manager import Manager
|
||||
from django.db.models.query import QuerySet
|
||||
|
||||
def proxy_personify_role(role):
|
||||
"""Turn role into person with email() method using email from role."""
|
||||
p = role.person
|
||||
p.email = lambda: (p.plain_name(), role.email.address)
|
||||
return p
|
||||
|
||||
def proxy_role_email(e):
|
||||
"""Add email() method to person on email."""
|
||||
e.person.email = lambda: (e.person.plain_name(), e.address)
|
||||
return e
|
||||
|
||||
def chunks(l, n):
|
||||
"""Split list l up in chunks of max size n."""
|
||||
return (l[i:i+n] for i in xrange(0, len(l), n))
|
||||
|
||||
class TranslatingQuerySet(QuerySet):
|
||||
"""Query set that can do some simple mappings of the filter args."""
|
||||
|
||||
def translated_args(self, args):
|
||||
trans = self.translated_attrs
|
||||
res = []
|
||||
for a in args:
|
||||
if a.startswith("-"):
|
||||
prefix = "-"
|
||||
a = a[1:]
|
||||
else:
|
||||
prefix = ""
|
||||
|
||||
if a in trans:
|
||||
t = trans[a]
|
||||
if callable(t):
|
||||
t, _ = t(None)
|
||||
|
||||
if t:
|
||||
res.append(prefix + t)
|
||||
else:
|
||||
res.append(prefix + a)
|
||||
return res
|
||||
|
||||
def translated_kwargs(self, kwargs):
|
||||
trans = self.translated_attrs
|
||||
res = dict()
|
||||
for k, v in kwargs.iteritems():
|
||||
if k in trans:
|
||||
t = trans[k]
|
||||
if callable(t):
|
||||
ts = t(v)
|
||||
else:
|
||||
ts = (t, v)
|
||||
|
||||
for t, v in chunks(ts, 2):
|
||||
if t:
|
||||
res[t] = v
|
||||
else:
|
||||
res[k] = v
|
||||
return res
|
||||
|
||||
# overridden methods
|
||||
def _clone(self, *args, **kwargs):
|
||||
c = super(TranslatingQuerySet, self)._clone(*args, **kwargs)
|
||||
c.translated_attrs = self.translated_attrs
|
||||
return c
|
||||
|
||||
def dates(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).dates(*args, **kwargs)
|
||||
|
||||
def distinct(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).distinct(*args, **kwargs)
|
||||
|
||||
def extra(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).extra(*args, **kwargs)
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).get(*args, **kwargs)
|
||||
|
||||
def get_or_create(self, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).get_or_create(**kwargs)
|
||||
|
||||
def create(self, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).create(**kwargs)
|
||||
|
||||
def filter(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).filter(*args, **kwargs)
|
||||
|
||||
def aggregate(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).aggregate(*args, **kwargs)
|
||||
|
||||
def annotate(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).annotate(*args, **kwargs)
|
||||
|
||||
def complex_filter(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).complex_filter(*args, **kwargs)
|
||||
|
||||
def exclude(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).exclude(*args, **kwargs)
|
||||
|
||||
def in_bulk(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).in_bulk(*args, **kwargs)
|
||||
|
||||
def iterator(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).iterator(*args, **kwargs)
|
||||
|
||||
def latest(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).latest(*args, **kwargs)
|
||||
|
||||
def order_by(self, *args, **kwargs):
|
||||
args = self.translated_args(args)
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).order_by(*args, **kwargs)
|
||||
|
||||
def select_related(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).select_related(*args, **kwargs)
|
||||
|
||||
def values(self, *args, **kwargs):
|
||||
args = self.translated_args(args)
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).values(*args, **kwargs)
|
||||
|
||||
def values_list(self, *args, **kwargs):
|
||||
args = self.translated_args(args)
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).values_list(*args, **kwargs)
|
||||
|
||||
def update(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).update(*args, **kwargs)
|
||||
|
||||
def reverse(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).reverse(*args, **kwargs)
|
||||
|
||||
def defer(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).defer(*args, **kwargs)
|
||||
|
||||
def only(self, *args, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self).only(*args, **kwargs)
|
||||
|
||||
def _insert(self, values, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return insert_query(self.model, values, **kwargs)
|
||||
|
||||
def _update(self, values, **kwargs):
|
||||
kwargs = self.translated_kwargs(kwargs)
|
||||
return super(TranslatingQuerySet, self)._update(values, **kwargs)
|
||||
|
||||
class TranslatingManager(Manager):
|
||||
"""Translates keyword arguments for the ORM, for use in proxy
|
||||
wrapping, e.g. given trans={'foo': 'bar'} it will transform a
|
||||
lookup of the field foo to a lookup on the field bar. The right
|
||||
hand side can either be a string or a function which is called
|
||||
with the right-hand side to transform it."""
|
||||
|
||||
def __init__(self, trans, always_filter=None):
|
||||
super(TranslatingManager, self).__init__()
|
||||
self.translated_attrs = trans
|
||||
self.always_filter = always_filter
|
||||
|
||||
def get_query_set(self):
|
||||
qs = TranslatingQuerySet(self.model)
|
||||
qs.translated_attrs = self.translated_attrs
|
||||
if self.always_filter:
|
||||
qs = qs.filter(**self.always_filter)
|
||||
return qs
|
||||
|
||||
# def dates(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().dates(*args, **kwargs)
|
||||
|
||||
# def distinct(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().distinct(*args, **kwargs)
|
||||
|
||||
# def extra(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().extra(*args, **kwargs)
|
||||
|
||||
# def get(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().get(*args, **kwargs)
|
||||
|
||||
# def get_or_create(self, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().get_or_create(**kwargs)
|
||||
|
||||
# def create(self, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().create(**kwargs)
|
||||
|
||||
# def filter(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().filter(*args, **kwargs)
|
||||
|
||||
# def aggregate(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().aggregate(*args, **kwargs)
|
||||
|
||||
# def annotate(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().annotate(*args, **kwargs)
|
||||
|
||||
# def complex_filter(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().complex_filter(*args, **kwargs)
|
||||
|
||||
# def exclude(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().exclude(*args, **kwargs)
|
||||
|
||||
# def in_bulk(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().in_bulk(*args, **kwargs)
|
||||
|
||||
# def iterator(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().iterator(*args, **kwargs)
|
||||
|
||||
# def latest(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().latest(*args, **kwargs)
|
||||
|
||||
# def order_by(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().order_by(*args, **kwargs)
|
||||
|
||||
# def select_related(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().select_related(*args, **kwargs)
|
||||
|
||||
# def values(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().values(*args, **kwargs)
|
||||
|
||||
# def values_list(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().values_list(*args, **kwargs)
|
||||
|
||||
# def update(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().update(*args, **kwargs)
|
||||
|
||||
# def reverse(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().reverse(*args, **kwargs)
|
||||
|
||||
# def defer(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().defer(*args, **kwargs)
|
||||
|
||||
# def only(self, *args, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set().only(*args, **kwargs)
|
||||
|
||||
# def _insert(self, values, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return insert_query(self.model, values, **kwargs)
|
||||
|
||||
# def _update(self, values, **kwargs):
|
||||
# kwargs = self.translated_kwargs(kwargs)
|
||||
# return self.get_query_set()._update(values, **kwargs)
|
Loading…
Reference in a new issue