Commit ca01faad authored by gushitong's avatar gushitong

Fix logger type error

parent 1f4f2ffb
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.apps import AppConfig
class AppConfig(AppConfig):
name = 'app'
from django.db import models
from gm_serializer import fields, serializers
class UserManager(object):
class Meta:
db_column = "user_id"
verbose_name = "User Magic Field"
def __init__(self):
self.url = 'api/user/get'
def __call__(self, pk_list):
# mock return user instance from rpc call.
return [{'id': pk, 'username': "username %s" % pk} for pk in pk_list]
class Post(models.Model):
"""
This is demonstrate app model.
To explain how to use gm-serializer in your project.
`user` is more like a cross-database foreign-key relation.
"""
user = fields.MagicField(type=int, manager=UserManager, ttl=60*60)
title = models.CharField(max_length=128)
content = models.CharField(max_length=255)
create_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
class UniqueValidator(object):
def __call__(self, *args, **kwargs):
pass
class PostSerializer(serializers.MagicSerializer):
user = serializers.MagicField(validators=[
UniqueValidator
])
class Meta:
model = Post
lazy_fields = ('user',)
fields = ('user', 'title', 'content', 'create_at')
from django.test import TestCase
from .models import Post, PostSerializer
class MagicFieldTestCase(TestCase):
def setUp(self):
for i in range(10):
Post.objects.create(user=i, title="article %s" % i, content="body %s" % i)
def test_get_object(self):
post = Post.objects.first()
self.assertEqual(post.user, {'id': 0, 'username': 'username 0'})
def test_get_queryset(self):
"""
pass
:return:
"""
posts = Post.objects.all()[:10]
serializer = PostSerializer(posts, many=True)
for idx, obj in enumerate(serializer.data):
self.assertEqual(obj['user'], {'id': idx, 'username': 'username %s' % idx})
def test_get_queryset_lazy(self):
posts = Post.objects.all()[:10]
serializer = PostSerializer(posts, many=True, lazy=True)
for idx, obj in enumerate(serializer.data):
self.assertEqual(obj['user'], idx)
def test_query_column(self):
queryset = Post.objects.filter(user_id=1)
print(queryset)
obj = Post.objects.get(user_id=1)
print(obj)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from rest_framework import viewsets
from rest_framework import routers
from gm_rpcd.all import bind
from .models import Post, PostSerializer
class MagicViewSets(viewsets.ModelViewSet):
def __call__(self, *args, **kwargs):
method = kwargs.pop("__method__", "get").lower()
if method in self.http_method_names:
handler = getattr(self, method, self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(*args, **kwargs)
class PostViewSets(MagicViewSets):
def get(self, *args, **kwargs):
post = Post.objects.first()
return PostSerializer(post).data
def post(self, *args, **kwargs):
serializer = PostSerializer(data=kwargs)
if serializer.is_valid():
serializer.save()
return serializer.data
bind('gm_serializer/post')(PostViewSets())
PostViewSets()(**{'pk': 1, '__method__': 'GET'})
PostViewSets()(**{'user': 1, 'title': 'tt', 'content': 'cc', '__method__': 'POST'})
<?xml version="1.0" encoding="utf-8"?>
<gm_rpcd_config>
<info config_name="app" version="1.0"/>
<config name="application_name" value="gm_serializer"/>
<config name="service_list">
<element value="gm_serializer"/>
</config>
<config name="initializer_list">
<element value="manage"/>
<element value="app.views"/>
</config>
</gm_rpcd_config>
\ No newline at end of file
__version__ = '0.0.6' __version__ = '0.0.7'
__author__ = 'gushitong@gmei.com' __author__ = 'gushitong@gmei.com'
...@@ -32,7 +32,7 @@ class MagicDescriptor(object): ...@@ -32,7 +32,7 @@ class MagicDescriptor(object):
try: try:
lazy_obj = getattr(instance, self.cache_name) lazy_obj = getattr(instance, self.cache_name)
logger.debug("Magic Hit ObjCache: %s:%s" % (self.field.attname, lazy_obj['id'])) logger.debug("Magic Hit ObjCache: %s:%s" % (self.field.attname, related_obj_pk))
except AttributeError: except AttributeError:
# update field pk_list, or you always get the same. # update field pk_list, or you always get the same.
self.field.accessor.pk_list = [related_obj_pk] self.field.accessor.pk_list = [related_obj_pk]
......
...@@ -37,7 +37,7 @@ INSTALLED_APPS = [ ...@@ -37,7 +37,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'gm_serializer' 'app'
] ]
MIDDLEWARE = [ MIDDLEWARE = [
...@@ -153,3 +153,10 @@ LOGGING = { ...@@ -153,3 +153,10 @@ LOGGING = {
} }
}, },
} }
GM_SERIALIZER = {
'redis': {
'host': '127.0.0.1', 'port': 6379, 'db': 1
}
}
\ No newline at end of file
git+ssh://git@git.gengmei.cc/backend/gm-rpcd.git@v0.1.6b6
git+ssh://git@git.gengmei.cc/backend/gm-logging.git@v0.7.0b8
git+ssh://git@git.gengmei.cc/backend/gm-config.git@v0.1.3#egg=gm-config==0.1.3
git+ssh://git@git.gengmei.cc/backend/helios.git@v0.4.3#egg=helios==0.4.4
redis
django==1.8
djangorestframework==3.6.3
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment