예제 #1
0
 def get_content_objects(self, querysets={}, annotate=[], select_related=True):
     models = {}
     objects = {}
     results = []
     order_fields = list(self.model._meta.ordering)
     annotate_fields = list(annotate)
     extras = []
     extras.extend(order_fields)
     extras.extend(annotate_fields)
     values = self.values('pk', 'object_id', 'content_type__app_label',
         'content_type__model', *extras)
     for item in values:
         pk = item.pop('pk')
         object_id = item.pop('object_id')
         app_label = item.pop('content_type__app_label')
         model_name = item.pop('content_type__model')
         annotated = dict((k, v) for k, v in item.items() if k in annotate_fields)
         ordering = dict((k, v) for k, v in item.items() if k in order_fields)
         model = get_model(app_label, model_name)
         models.setdefault(model, {}) \
             .setdefault(object_id, []).append({
                 'ordering': ordering,
                 'annotated': annotated,
             })
     for model, objs in models.items():
         if model in querysets:
             qs = querysets[model]
         else:
             qs = model._default_manager
         if select_related:
             qs = qs.select_related()
         object_list = qs.filter(pk__in=objs.keys())
         for obj in object_list:
             objects.setdefault(model, {})[obj.pk] = obj
     for model, objs in models.items():
         for pk, options_list in objs.items():
             for options in options_list:
                 try:
                     fields = objects[model][pk].__dict__.copy()
                     private_fields = dict((k, fields.pop(k)) for k in \
                         fields.keys() if k.startswith('_'))
                     obj = model(**fields)
                     obj.__temp_ordering = options['ordering']
                     for name, annotate in options['annotated'].items():
                         k, v = convert_lookup_to_dict(name, annotate)
                         setattr(obj, k, v)
                     obj.__dict__.update(private_fields)
                     results.append(obj)
                 except KeyError:
                     pass
     for order in order_fields:
         results.sort(key=lambda i: i.__temp_ordering[order])
     for result in results:
         del result.__temp_ordering
     return results
예제 #2
0
 def forward_transition_from_minus_one_to_zero(apps, schema_editor):
     models = {
         "AutonomousSystem": {
             "filters": {"ipv4_max_prefixes": -1, "ipv6_max_prefixes": -1},
             "updates": {"ipv4_max_prefixes": 0, "ipv6_max_prefixes": 0},
         },
         "DirectPeeringSession": {
             "filters": {"advertised_prefix_count": -1, "received_prefix_count": -1},
             "updates": {"advertised_prefix_count": 0, "received_prefix_count": 0},
         },
         "InternetExchange": {
             "filters": {"peeringdb_id": -1},
             "updates": {"peeringdb_id": 0},
         },
         "InternetExchangePeeringSession": {
             "filters": {"advertised_prefix_count": -1, "received_prefix_count": -1},
             "updates": {"advertised_prefix_count": 0, "received_prefix_count": 0},
         },
     }
     db_alias = schema_editor.connection.alias
     for key, value in models.items():
         model = apps.get_model("peering", key)
         model.objects.using(db_alias).filter(**value["filters"]).update(
             **value["updates"]
         )
예제 #3
0
파일: models.py 프로젝트: gzqichang/wa
 def register(self, models={}):
     for alias, conf in models.items():
         handler = self.supported_content_type.setdefault(alias, PurifyHandler())
         handler.model = model = get_model(conf['model'])
         handler.manager = model.objects
         handler.content_type = get_contenttype(model)
         handler.methods = conf.get('methods', {})
예제 #4
0
    def execute(cls, request, params):
        search_text = params['kw'].lower()
        is_content_search = params.get('is_content_search')
        results = []
        search_models = params.get('search_models')
        if is_content_search:
            search_apps = content_search_apps
        else:
            search_apps = all_apps

        if search_models:
            for app_name in search_models:
                for model_name in search_models[app_name]:
                    fields = search_apps[app_name][model_name]
                    kwargs = {}
                    q_objects = Q()
                    for field in fields:
                        q_objects |= Q(**{field + '__contains': params['kw']})
                        kwargs.update({
                            '{0}__{1}'.format(field, 'contains'):
                            search_text
                        })
                    model_obj = apps.get_model(app_name, model_name)
                    search_result = model_obj.objects.filter(q_objects)
                    if search_result:
                        search_result = ws_methods.queryset_to_list_search(
                            search_result)
                        for result in search_result:
                            result['model'] = app_name + '.' + model_name
                        results = results + search_result
            return results
        else:
            for app, models in search_apps.items():
                for model, fields in models.items():
                    kwargs = {}
                    q_objects = Q()
                    for field in fields:
                        q_objects |= Q(**{field + '__contains': params['kw']})
                        kwargs.update({
                            '{0}__{1}'.format(field, 'contains'):
                            search_text
                        })
                    model_obj = apps.get_model(app, model)
                    search_result = model_obj.objects.filter(q_objects)
                    if search_result:
                        search_result = ws_methods.queryset_to_list_search(
                            search_result)
                        for result in search_result:
                            result['model'] = app + '.' + model
                        results = results + search_result
            return results
예제 #5
0
파일: sites.py 프로젝트: D3f0/protopy
    def export_models(self, app_label):
        try:
            models = export_remotes(self._registry[app_label])
            models = map(lambda m: (m[0]._meta.object_name, \
                            issubclass(self._registry[app_label][m[0]], RemoteModelProxy) and 'RemoteModel' or 'RemoteReadOnlyModel', \
                            m[1]), models.items())
            related_apps = get_related_apps(self._registry[app_label])
            related_apps.discard(app_label)
            return render_to_response(
                            'djangoffline/models.js',
                           {'models': models, 'apps': related_apps, 'app': app_label, 'site': self},
                           mimetype = 'text/javascript')

        except ImproperlyConfigured, e:
            return HttpResponseNotFound(str(e))
def populate_tracking_fields(apps, schema_editor):
    models = {}
    models['Phones'] = apps.get_model('hosting', 'Phone')._default_manager.all()
    models['Places'] = apps.get_model('hosting', 'Place')._default_manager.all()
    models['Profiles'] = apps.get_model('hosting', 'Profile')._default_manager.all()
    models['Websites'] = apps.get_model('hosting', 'Website')._default_manager.all()

    for name, objects in models.items():
        print(name)
        print('  deleted: ', objects.update(
            deleted_on=Case(
                When(deleted=False, then=None),
                default=F('modified'),
                output_field=DateTimeField())
        ))
        print('  checked: ', objects.update(
            checked_on=Case(
                When(checked=False, then=None),
                default=F('modified'),
                output_field=DateTimeField())
        ))
예제 #7
0
    def pretty(self, indent=0):
        indent_str = ' ' * indent
        res = '{indent}{name}:\n{indent}  Default:\n{default}\n{indent}  Models:'.format(
            indent=indent_str,
            name=type(self).__name__,
            default=self._pretty_builder(self._default_builder,
                                         indent=indent + 4),
        )

        models = self._builders_4_models
        if models:
            for model, builder in models.items():
                res += '\n{indent}    [{module}.{cls}]:\n{builder}'.format(
                    indent=indent_str,
                    module=model.__module__,
                    cls=model.__name__,
                    builder=self._pretty_builder(builder, indent=indent + 6),
                )
        else:
            res += '\n{}    (empty)'.format(indent_str)

        return res
def populate_tracking_fields(apps, schema_editor):
    models = {}
    models['Phones'] = apps.get_model('hosting',
                                      'Phone')._default_manager.all()
    models['Places'] = apps.get_model('hosting',
                                      'Place')._default_manager.all()
    models['Profiles'] = apps.get_model('hosting',
                                        'Profile')._default_manager.all()
    models['Websites'] = apps.get_model('hosting',
                                        'Website')._default_manager.all()

    for name, objects in models.items():
        print(name)
        print(
            '  deleted: ',
            objects.update(deleted_on=Case(When(deleted=False, then=None),
                                           default=F('modified'),
                                           output_field=DateTimeField())))
        print(
            '  checked: ',
            objects.update(checked_on=Case(When(checked=False, then=None),
                                           default=F('modified'),
                                           output_field=DateTimeField())))
예제 #9
0
def pprint_frozen_models(models):
    return "{\n        %s\n    }" % ",\n        ".join([
        "%r: %s" % (name, pprint_fields(fields))
        for name, fields in sorted(models.items())
    ])
예제 #10
0
파일: freezer.py 프로젝트: lmorchard/whuru
def pprint_frozen_models(models):
    return "{\n        %s\n    }" % ",\n        ".join([
        "%r: %s" % (name, pprint_fields(fields))
        for name, fields in sorted(models.items())
    ])
예제 #11
0
def models_list(request):
    models = apps.all_models['csvApp']
    models_list = []
    for key, value in models.items():
        models_list.append(key)
    return render(request, 'csvApp/models_list.html', {'models': models_list})
예제 #12
0
def set_app_test_models(models, app_label):
    """Sets the list of models in the Django test models registry."""
    register_app_models(app_label, models.items(), reset=True)
예제 #13
0
파일: mdesc.py 프로젝트: mgaitan/brooks
 def register(self, models):
     regs = []
     for model_name, model in models.items():
         reg = admin.site.register(model, admin.ModelAdmin)
         regs.append(reg)
     return regs