[Patchew-devel] [PATCH 05/12] models: extract blobs functions to a separate file

Paolo Bonzini posted 12 patches 7 years, 6 months ago
[Patchew-devel] [PATCH 05/12] models: extract blobs functions to a separate file
Posted by Paolo Bonzini 7 years, 6 months ago
They will be used by migrations, and we don't want to import
api.models there.
---
 api/blobs.py  | 45 +++++++++++++++++++++++++++++++++++++++++++++
 api/models.py | 27 ++++-----------------------
 2 files changed, 49 insertions(+), 23 deletions(-)
 create mode 100644 api/blobs.py

diff --git a/api/blobs.py b/api/blobs.py
new file mode 100644
index 0000000..7171b71
--- /dev/null
+++ b/api/blobs.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+#
+# Copyright 2018 Red Hat, Inc.
+#
+# Authors:
+#     Fam Zheng <famz@redhat.com>
+#     Paolo Bonzini <pbonzini@redhat.com>
+#
+# This work is licensed under the MIT License.  Please see the LICENSE file or
+# http://opensource.org/licenses/MIT.
+
+
+import os
+import json
+import uuid
+import logging
+
+from django.conf import settings
+import lzma
+
+def save_blob(data, name=None):
+    if not name:
+        name = str(uuid.uuid4())
+    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
+    lzma.open(fn, 'w').write(data.encode("utf-8"))
+    return name
+
+def load_blob(name):
+    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
+    return lzma.open(fn, 'r').read().decode("utf-8")
+
+def load_blob_json(name):
+    try:
+        return json.loads(load_blob(name))
+    except json.decoder.JSONDecodeError as e:
+        logging.error('Failed to load blob %s: %s' %(name, e))
+        return None
+
+def delete_blob(name):
+    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
+    try:
+        os.remove(fn)
+    except FileNotFoundError:
+        pass
+
diff --git a/api/models.py b/api/models.py
index 0f25f85..497e43c 100644
--- a/api/models.py
+++ b/api/models.py
@@ -10,39 +10,20 @@
 
 
 from collections import namedtuple
-import os
 import json
 import datetime
 import re
-import uuid
-import logging
 
-from django.conf import settings
 from django.db import models
 from django.contrib.auth.models import User
 from django.urls import reverse
 import jsonfield
-from mbox import MboxMessage
-from event import emit_event, declare_event
 import lzma
 
-def save_blob(data, name=None):
-    if not name:
-        name = str(uuid.uuid4())
-    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
-    lzma.open(fn, 'w').write(data.encode("utf-8"))
-    return name
-
-def load_blob(name):
-    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
-    return lzma.open(fn, 'r').read().decode("utf-8")
-
-def load_blob_json(name):
-    try:
-        return json.loads(load_blob(name))
-    except json.decoder.JSONDecodeError as e:
-        logging.error('Failed to load blob %s: %s' %(name, e))
-        return None
+from mbox import MboxMessage
+from event import emit_event, declare_event
+from .blobs import save_blob, load_blob, load_blob_json
+import mod
 
 class Project(models.Model):
     name = models.CharField(max_length=1024, db_index=True, unique=True,
-- 
2.17.0


_______________________________________________
Patchew-devel mailing list
Patchew-devel@redhat.com
https://www.redhat.com/mailman/listinfo/patchew-devel
Re: [Patchew-devel] [PATCH 05/12] models: extract blobs functions to a separate file
Posted by Fam Zheng 7 years, 6 months ago
On Tue, 05/22 08:57, Paolo Bonzini wrote:
> They will be used by migrations, and we don't want to import
> api.models there.

Yes, makes sense.

> ---
>  api/blobs.py  | 45 +++++++++++++++++++++++++++++++++++++++++++++
>  api/models.py | 27 ++++-----------------------
>  2 files changed, 49 insertions(+), 23 deletions(-)
>  create mode 100644 api/blobs.py
> 
> diff --git a/api/blobs.py b/api/blobs.py
> new file mode 100644
> index 0000000..7171b71
> --- /dev/null
> +++ b/api/blobs.py
> @@ -0,0 +1,45 @@
> +#!/usr/bin/env python3
> +#
> +# Copyright 2018 Red Hat, Inc.

Maybe keep the year from models.py header too.

> +#
> +# Authors:
> +#     Fam Zheng <famz@redhat.com>
> +#     Paolo Bonzini <pbonzini@redhat.com>
> +#
> +# This work is licensed under the MIT License.  Please see the LICENSE file or
> +# http://opensource.org/licenses/MIT.
> +
> +
> +import os
> +import json
> +import uuid
> +import logging
> +
> +from django.conf import settings
> +import lzma
> +
> +def save_blob(data, name=None):
> +    if not name:
> +        name = str(uuid.uuid4())
> +    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
> +    lzma.open(fn, 'w').write(data.encode("utf-8"))
> +    return name
> +
> +def load_blob(name):
> +    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
> +    return lzma.open(fn, 'r').read().decode("utf-8")
> +
> +def load_blob_json(name):
> +    try:
> +        return json.loads(load_blob(name))
> +    except json.decoder.JSONDecodeError as e:
> +        logging.error('Failed to load blob %s: %s' %(name, e))
> +        return None
> +
> +def delete_blob(name):
> +    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
> +    try:
> +        os.remove(fn)
> +    except FileNotFoundError:
> +        pass

This function is new. Please do it in a new patch after the code movement.

> +
> diff --git a/api/models.py b/api/models.py
> index 0f25f85..497e43c 100644
> --- a/api/models.py
> +++ b/api/models.py
> @@ -10,39 +10,20 @@
>  
>  
>  from collections import namedtuple
> -import os
>  import json
>  import datetime
>  import re
> -import uuid
> -import logging
>  
> -from django.conf import settings
>  from django.db import models
>  from django.contrib.auth.models import User
>  from django.urls import reverse
>  import jsonfield
> -from mbox import MboxMessage
> -from event import emit_event, declare_event
>  import lzma
>  
> -def save_blob(data, name=None):
> -    if not name:
> -        name = str(uuid.uuid4())
> -    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
> -    lzma.open(fn, 'w').write(data.encode("utf-8"))
> -    return name
> -
> -def load_blob(name):
> -    fn = os.path.join(settings.DATA_DIR, "blob", name + ".xz")
> -    return lzma.open(fn, 'r').read().decode("utf-8")
> -
> -def load_blob_json(name):
> -    try:
> -        return json.loads(load_blob(name))
> -    except json.decoder.JSONDecodeError as e:
> -        logging.error('Failed to load blob %s: %s' %(name, e))
> -        return None
> +from mbox import MboxMessage
> +from event import emit_event, declare_event
> +from .blobs import save_blob, load_blob, load_blob_json
> +import mod

mod is unused here?

Fam

>  
>  class Project(models.Model):
>      name = models.CharField(max_length=1024, db_index=True, unique=True,
> -- 
> 2.17.0
> 
> 
> _______________________________________________
> Patchew-devel mailing list
> Patchew-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/patchew-devel

_______________________________________________
Patchew-devel mailing list
Patchew-devel@redhat.com
https://www.redhat.com/mailman/listinfo/patchew-devel