Esempio n. 1
0
 def get_related_where(self, fk_name, using, type):
     related_where = ["%s=%s.%s" % (self.model._meta.pk.get_attname_column()[1], type, fk_name)]
     related_query = Query(self.manager.related.model)
     for name, value in self.filter.iteritems():
         related_query.add_filter((name, value))
     related_query.add_extra(None, None,
         ["%s=%s.%s" % (self.model._meta.pk.get_attname_column()[1], type, self.manager.related.field.m2m_column_name())],
         None, None, None)
     related_query.add_count_column()
     related_query.clear_ordering(force_empty=True)
     related_query.default_cols = False
     related_filter_where, related_where_params = related_query.get_compiler(using=using,
         connection=connection).as_sql()
     if related_filter_where is not None:
         related_where.append('(' + related_filter_where + ') > 0')
     return related_where, related_where_params
Esempio n. 2
0
 def get_related_where(self, fk_name, using, type):
     related_where = [
         "%s=%s.%s" %
         (self.model._meta.pk.get_attname_column()[1], type, fk_name)
     ]
     related_query = Query(self.manager.related.model)
     for name, value in self.filter.iteritems():
         related_query.add_filter((name, value))
     related_query.add_extra(None, None, [
         "%s=%s.%s" % (self.model._meta.pk.get_attname_column()[1], type,
                       self.manager.related.field.m2m_column_name())
     ], None, None, None)
     related_query.add_count_column()
     related_query.clear_ordering(force_empty=True)
     related_query.default_cols = False
     related_filter_where, related_where_params = related_query.get_compiler(
         using=using, connection=connection).as_sql()
     if related_filter_where is not None:
         related_where.append('(' + related_filter_where + ') > 0')
     return related_where, related_where_params
Esempio n. 3
0
def replace_media_urls(old='stories', new='news/old',
                       app_label='news', model='newsitem', field='full_text', new_path='/media/'):
    from django.db.models import get_model
    from django.db.models.query import  QuerySet
    from django.db.models.sql import  Query
    BASE_NEW_PATH = new_path
    BASE_OLD_RE = r'http:\/\/w{3}\.otdohniomsk\.ru\/images\/'
    BASE_OLD_PATH = 'http://www.otdohniomsk.ru/images/'

    old_path = BASE_OLD_PATH + old
    new_path = BASE_NEW_PATH + new
    p = re.compile(BASE_OLD_RE + old)

    total_count = 0
    m = get_model(app_label, model)
    q = Query(m)
    q.add_filter(('%s__contains' % field, old_path))
    qs = QuerySet(m, q)

    for item in qs:
        item.__dict__[field], count = p.subn(new_path, item.__dict__[field])
        total_count += count
        item.save()
    return total_count