[Patchew-devel] [PATCH] Change "mbox" to use getters and setters instead of SerializerMethodField - Rename the existing "mbox" field to e.g. "mbox_blob" - Add getters and setters for "mbox" to api.models.Message
Paolo Bonzini
pbonzini at redhat.com
Wed May 2 10:01:04 UTC 2018
On 01/05/2018 09:35, Shubham Jain wrote:
> ---
> api/models.py | 24 ++++++++++++++----------
> api/rest.py | 5 +----
> 2 files changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/api/models.py b/api/models.py
> index 4cc2b74..13ec44e 100644
> --- a/api/models.py
> +++ b/api/models.py
> @@ -245,12 +245,12 @@ class MessageManager(models.Manager):
> self.delete_subthread(r)
> msg.delete()
>
> - def add_message_from_mbox(self, mbox, user, project_name=None):
> + def add_message_from_mbox(self, mbox_blob, user, project_name=None):
>
> def find_message_projects(m):
> return [p for p in Project.objects.all() if p.recognizes(m)]
>
> - m = MboxMessage(mbox)
> + m = MboxMessage(mbox_blob)
> msgid = m.get_message_id()
> if project_name:
> projects = [Project.object.get(name=project_name)]
> @@ -272,7 +272,7 @@ class MessageManager(models.Manager):
> msg.project = p
> if self.filter(message_id=msgid, project__name=p.name).first():
> raise self.DuplicateMessageError(msgid)
> - msg.save_mbox(mbox)
> + msg.save_mbox(mbox_blob)
> msg.save()
> emit_event("MessageAdded", message=msg)
> self.update_series(msg)
> @@ -318,20 +318,24 @@ class Message(models.Model):
> num_patches = models.IntegerField(null=False, default=-1, blank=True)
>
> objects = MessageManager()
> + def _get_mbox_blob(self):
> + return self.get_mbox()
>
> - def save_mbox(self, mbox):
> - save_blob(mbox, self.message_id)
> + mbox = property(_get_mbox_blob)
This can be simply "mbox = property(get_mbox)", right? There should be
no need to add _get_mbox_blob. After this is changed, we can look at
adding a setter for the mbox property.
Fam, could you please review this patch? It's more your area. :)
Paolo
> + def save_mbox(self, mbox_blob):
> + save_blob(mbox_blob, self.message_id)
> def get_mbox_obj(self):
> self.get_mbox()
> return self._mbox_obj
>
> def get_mbox(self):
> - if hasattr(self, "mbox"):
> - return self.mbox
> - self.mbox = load_blob(self.message_id)
> - self._mbox_obj = MboxMessage(self.mbox)
> - return self.mbox
> + if hasattr(self, "mbox_blob"):
> + return self.mbox_blob
> + self.mbox_blob = load_blob(self.message_id)
> + self._mbox_obj = MboxMessage(self.mbox_blob)
> + return self.mbox_blob
>
> def get_num(self):
> assert self.is_patch or self.is_series_head
> diff --git a/api/rest.py b/api/rest.py
> index 5610844..a2ab004 100644
> --- a/api/rest.py
> +++ b/api/rest.py
> @@ -287,10 +287,7 @@ class MessageSerializer(BaseMessageSerializer):
> class Meta:
> model = Message
> fields = BaseMessageSerializer.Meta.fields + ('mbox', )
> - def get_mbox(self, obj):
> - return obj.get_mbox()
> - mbox = SerializerMethodField()
> -
> +
> def get_fields(self):
> fields = super(MessageSerializer, self).get_fields()
> request = self.context['request']
>
More information about the Patchew-devel
mailing list