|
2 | 2 | import graphene
|
3 | 3 |
|
4 | 4 |
|
5 |
| -def _resolve_type_coordinates(self, info): |
6 |
| - return self['coordinates'] |
7 |
| - |
8 |
| - |
9 |
| -def _resolve_fs_field(field, name, default_value=None): |
10 |
| - v = getattr(field.instance, field.key) |
11 |
| - return getattr(v, name, default_value) |
12 |
| - |
13 |
| - |
14 |
| -def _resolve_content_type(self, info): |
15 |
| - return _resolve_fs_field(self, 'content_type') |
16 |
| - |
17 |
| - |
18 |
| -def _resolve_md5(self, info): |
19 |
| - return _resolve_fs_field(self, 'md5') |
20 |
| - |
21 |
| - |
22 |
| -def _resolve_chunk_size(self, info): |
23 |
| - return _resolve_fs_field(self, 'chunk_size', 0) |
| 5 | +class FileFieldType(graphene.ObjectType): |
24 | 6 |
|
| 7 | + content_type = graphene.String() |
| 8 | + md5 = graphene.String() |
| 9 | + chunk_size = graphene.Int() |
| 10 | + length = graphene.Int() |
| 11 | + data = graphene.String() |
25 | 12 |
|
26 |
| -def _resolve_length(self, info): |
27 |
| - return _resolve_fs_field(self, 'length', 0) |
| 13 | + @classmethod |
| 14 | + def _resolve_fs_field(cls, field, name, default_value=None): |
| 15 | + v = getattr(field.instance, field.key) |
| 16 | + return getattr(v, name, default_value) |
28 | 17 |
|
| 18 | + def resolve_content_type(self, info): |
| 19 | + return FileFieldType._resolve_fs_field(self, 'content_type') |
29 | 20 |
|
30 |
| -def _resolve_data(self, info): |
31 |
| - v = getattr(self.instance, self.key) |
32 |
| - data = v.read() |
33 |
| - if data is not None: |
34 |
| - return base64.b64encode(data) |
35 |
| - return None |
| 21 | + def resolve_md5(self, info): |
| 22 | + return FileFieldType._resolve_fs_field(self, 'md5') |
36 | 23 |
|
| 24 | + def resolve_chunk_size(self, info): |
| 25 | + return FileFieldType._resolve_fs_field(self, 'chunk_size', 0) |
37 | 26 |
|
38 |
| -class FileFieldType(graphene.ObjectType): |
| 27 | + def resolve_length(self, info): |
| 28 | + return FileFieldType._resolve_fs_field(self, 'length', 0) |
39 | 29 |
|
40 |
| - content_type = graphene.String(resolver=_resolve_content_type) |
41 |
| - md5 = graphene.String(resolver=_resolve_md5) |
42 |
| - chunk_size = graphene.Int(resolver=_resolve_chunk_size) |
43 |
| - length = graphene.Int(resolver=_resolve_length) |
44 |
| - data = graphene.String(resolver=_resolve_data) |
| 30 | + def resolve_data(self, info): |
| 31 | + v = getattr(self.instance, self.key) |
| 32 | + data = v.read() |
| 33 | + if data is not None: |
| 34 | + return base64.b64encode(data) |
| 35 | + return None |
45 | 36 |
|
46 | 37 |
|
47 |
| -class _TypeField(graphene.ObjectType): |
| 38 | +class _CoordinatesTypeField(graphene.ObjectType): |
48 | 39 |
|
49 | 40 | type = graphene.String()
|
50 | 41 |
|
51 | 42 | def resolve_type(self, info):
|
52 | 43 | return self['type']
|
53 | 44 |
|
| 45 | + def resolve_coordinates(self, info): |
| 46 | + return self['coordinates'] |
54 | 47 |
|
55 |
| -class PointFieldType(_TypeField): |
56 | 48 |
|
57 |
| - coordinates = graphene.List( |
58 |
| - graphene.Float, resolver=_resolve_type_coordinates) |
| 49 | +class PointFieldType(_CoordinatesTypeField): |
| 50 | + |
| 51 | + coordinates = graphene.List(graphene.Float) |
59 | 52 |
|
60 | 53 |
|
61 |
| -class PolygonFieldType(_TypeField): |
| 54 | +class PolygonFieldType(_CoordinatesTypeField): |
62 | 55 |
|
63 | 56 | coordinates = graphene.List(
|
64 | 57 | graphene.List(
|
65 |
| - graphene.List(graphene.Float)), |
66 |
| - resolver=_resolve_type_coordinates |
| 58 | + graphene.List(graphene.Float)) |
67 | 59 | )
|
68 | 60 |
|
69 | 61 |
|
70 |
| -class MultiPolygonFieldType(_TypeField): |
| 62 | +class MultiPolygonFieldType(_CoordinatesTypeField): |
71 | 63 |
|
72 | 64 | coordinates = graphene.List(
|
73 | 65 | graphene.List(
|
74 | 66 | graphene.List(
|
75 |
| - graphene.List(graphene.Float))), |
76 |
| - resolver=_resolve_type_coordinates) |
| 67 | + graphene.List(graphene.Float))) |
| 68 | + ) |
0 commit comments