diff mbox

[RFC,1/3] models: Convert functions to properties

Message ID 1459527286-3043-2-git-send-email-stephen.finucane@intel.com
State Superseded
Headers show

Commit Message

Stephen Finucane April 1, 2016, 4:14 p.m. UTC
A number of models contain functions that are, semantically speaking,
actually properties. Mark them as such.

This also includes a fix for a missing python_2_unicode_compatible
decorator

Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
---
 patchwork/models.py         | 15 ++++++++++-----
 patchwork/views/__init__.py |  2 +-
 patchwork/views/patch.py    |  4 ++--
 patchwork/views/user.py     |  2 +-
 patchwork/views/xmlrpc.py   |  2 +-
 5 files changed, 15 insertions(+), 10 deletions(-)

Comments

Andy Doan April 8, 2016, 7:50 p.m. UTC | #1
On 04/01/2016 11:14 AM, Stephen Finucane wrote:
> A number of models contain functions that are, semantically speaking,
> actually properties. Mark them as such.
>
> This also includes a fix for a missing python_2_unicode_compatible
> decorator

I'm not sure I see where @python_2_unicode_compatible was added? 
Otherwise it looks fine.

> Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
> ---
>   patchwork/models.py         | 15 ++++++++++-----
>   patchwork/views/__init__.py |  2 +-
>   patchwork/views/patch.py    |  4 ++--
>   patchwork/views/user.py     |  2 +-
>   patchwork/views/xmlrpc.py   |  2 +-
>   5 files changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/patchwork/models.py b/patchwork/models.py
> index 4d454c7..9ad2bcb 100644
> --- a/patchwork/models.py
> +++ b/patchwork/models.py
> @@ -48,7 +48,7 @@ class Person(models.Model):
>                                on_delete=models.SET_NULL)
>
>       def link_to_user(self, user):
> -        self.name = user.profile.name()
> +        self.name = user.profile.name
>           self.user = user
>
>       def __str__(self):
> @@ -134,6 +134,7 @@ class UserProfile(models.Model):
>           default=100, null=False, blank=False,
>           help_text='Number of items to display per page')
>
> +    @property
>       def name(self):
>           if self.user.first_name or self.user.last_name:
>               names = list(filter(
> @@ -141,17 +142,19 @@ class UserProfile(models.Model):
>               return ' '.join(names)
>           return self.user.username
>
> +    @property
>       def contributor_projects(self):
>           submitters = Person.objects.filter(user=self.user)
>           return Project.objects.filter(id__in=Submission.objects.filter(
>               submitter__in=submitters).values('project_id').query)
>
> -    def sync_person(self):
> -        pass
> -
> +    @property
>       def n_todo_patches(self):
>           return self.todo_patches().count()
>
> +    def sync_person(self):
> +        pass
> +
>       def todo_patches(self, project=None):
>           # filter on project, if necessary
>           if project:
> @@ -165,7 +168,7 @@ class UserProfile(models.Model):
>           return qs
>
>       def __str__(self):
> -        return self.name()
> +        return self.name
>
>
>   def _user_saved_callback(sender, created, instance, **kwargs):
> @@ -278,6 +281,7 @@ class EmailMixin(models.Model):
>           r'^(Tested|Reviewed|Acked|Signed-off|Nacked|Reported)-by: .*$',
>           re.M | re.I)
>
> +    @property
>       def patch_responses(self):
>           if not self.content:
>               return ''
> @@ -379,6 +383,7 @@ class Patch(Submission):
>
>           return self.project.is_editable(user)
>
> +    @property
>       def filename(self):
>           fname_re = re.compile(r'[^-_A-Za-z0-9\.]+')
>           str = fname_re.sub('-', self.name)
> diff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py
> index ddddf63..c1fb8ff 100644
> --- a/patchwork/views/__init__.py
> +++ b/patchwork/views/__init__.py
> @@ -366,7 +366,7 @@ def patch_to_mbox(patch):
>       body += patch.patch_responses()
>
>       for comment in Comment.objects.filter(submission=patch):
> -        body += comment.patch_responses()
> +        body += comment.patch_responses
>
>       if postscript:
>           body += '---\n' + postscript + '\n'
> diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py
> index 3346568..b48cf14 100644
> --- a/patchwork/views/patch.py
> +++ b/patchwork/views/patch.py
> @@ -113,7 +113,7 @@ def content(request, patch_id):
>       response = HttpResponse(content_type="text/x-patch")
>       response.write(patch.diff)
>       response['Content-Disposition'] = 'attachment; filename=' + \
> -        patch.filename().replace(';', '').replace('\n', '')
> +        patch.filename.replace(';', '').replace('\n', '')
>       return response
>
>
> @@ -126,7 +126,7 @@ def mbox(request, patch_id):
>       else:
>           response.write(patch_to_mbox(patch).as_string(True))
>       response['Content-Disposition'] = 'attachment; filename=' + \
> -        patch.filename().replace(';', '').replace('\n', '')
> +        patch.filename.replace(';', '').replace('\n', '')
>       return response
>
>
> diff --git a/patchwork/views/user.py b/patchwork/views/user.py
> index dfbfde8..0eba67b 100644
> --- a/patchwork/views/user.py
> +++ b/patchwork/views/user.py
> @@ -87,7 +87,7 @@ def register_confirm(request, conf):
>           person = Person.objects.get(email__iexact=conf.user.email)
>       except Person.DoesNotExist:
>           person = Person(email=conf.user.email,
> -                        name=conf.user.profile.name())
> +                        name=conf.user.profile.name)
>       person.user = conf.user
>       person.save()
>
> diff --git a/patchwork/views/xmlrpc.py b/patchwork/views/xmlrpc.py
> index 1f48959..b65ae18 100644
> --- a/patchwork/views/xmlrpc.py
> +++ b/patchwork/views/xmlrpc.py
> @@ -268,7 +268,7 @@ def patch_to_dict(obj):
>       return {
>           'id': obj.id,
>           'date': six.text_type(obj.date).encode('utf-8'),
> -        'filename': obj.filename(),
> +        'filename': obj.filename,
>           'msgid': obj.msgid,
>           'name': obj.name,
>           'project': six.text_type(obj.project).encode('utf-8'),
>
Stephen Finucane April 11, 2016, 9:16 p.m. UTC | #2
On 08 Apr 14:50, Andy Doan wrote:
> On 04/01/2016 11:14 AM, Stephen Finucane wrote:
> >A number of models contain functions that are, semantically speaking,
> >actually properties. Mark them as such.
> >
> >This also includes a fix for a missing python_2_unicode_compatible
> >decorator
> 
> I'm not sure I see where @python_2_unicode_compatible was added?
> Otherwise it looks fine.

It was added, but got lost in a rebase onto 'd82ddfe0'. Removed these
lines.

Stephen
diff mbox

Patch

diff --git a/patchwork/models.py b/patchwork/models.py
index 4d454c7..9ad2bcb 100644
--- a/patchwork/models.py
+++ b/patchwork/models.py
@@ -48,7 +48,7 @@  class Person(models.Model):
                              on_delete=models.SET_NULL)
 
     def link_to_user(self, user):
-        self.name = user.profile.name()
+        self.name = user.profile.name
         self.user = user
 
     def __str__(self):
@@ -134,6 +134,7 @@  class UserProfile(models.Model):
         default=100, null=False, blank=False,
         help_text='Number of items to display per page')
 
+    @property
     def name(self):
         if self.user.first_name or self.user.last_name:
             names = list(filter(
@@ -141,17 +142,19 @@  class UserProfile(models.Model):
             return ' '.join(names)
         return self.user.username
 
+    @property
     def contributor_projects(self):
         submitters = Person.objects.filter(user=self.user)
         return Project.objects.filter(id__in=Submission.objects.filter(
             submitter__in=submitters).values('project_id').query)
 
-    def sync_person(self):
-        pass
-
+    @property
     def n_todo_patches(self):
         return self.todo_patches().count()
 
+    def sync_person(self):
+        pass
+
     def todo_patches(self, project=None):
         # filter on project, if necessary
         if project:
@@ -165,7 +168,7 @@  class UserProfile(models.Model):
         return qs
 
     def __str__(self):
-        return self.name()
+        return self.name
 
 
 def _user_saved_callback(sender, created, instance, **kwargs):
@@ -278,6 +281,7 @@  class EmailMixin(models.Model):
         r'^(Tested|Reviewed|Acked|Signed-off|Nacked|Reported)-by: .*$',
         re.M | re.I)
 
+    @property
     def patch_responses(self):
         if not self.content:
             return ''
@@ -379,6 +383,7 @@  class Patch(Submission):
 
         return self.project.is_editable(user)
 
+    @property
     def filename(self):
         fname_re = re.compile(r'[^-_A-Za-z0-9\.]+')
         str = fname_re.sub('-', self.name)
diff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py
index ddddf63..c1fb8ff 100644
--- a/patchwork/views/__init__.py
+++ b/patchwork/views/__init__.py
@@ -366,7 +366,7 @@  def patch_to_mbox(patch):
     body += patch.patch_responses()
 
     for comment in Comment.objects.filter(submission=patch):
-        body += comment.patch_responses()
+        body += comment.patch_responses
 
     if postscript:
         body += '---\n' + postscript + '\n'
diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py
index 3346568..b48cf14 100644
--- a/patchwork/views/patch.py
+++ b/patchwork/views/patch.py
@@ -113,7 +113,7 @@  def content(request, patch_id):
     response = HttpResponse(content_type="text/x-patch")
     response.write(patch.diff)
     response['Content-Disposition'] = 'attachment; filename=' + \
-        patch.filename().replace(';', '').replace('\n', '')
+        patch.filename.replace(';', '').replace('\n', '')
     return response
 
 
@@ -126,7 +126,7 @@  def mbox(request, patch_id):
     else:
         response.write(patch_to_mbox(patch).as_string(True))
     response['Content-Disposition'] = 'attachment; filename=' + \
-        patch.filename().replace(';', '').replace('\n', '')
+        patch.filename.replace(';', '').replace('\n', '')
     return response
 
 
diff --git a/patchwork/views/user.py b/patchwork/views/user.py
index dfbfde8..0eba67b 100644
--- a/patchwork/views/user.py
+++ b/patchwork/views/user.py
@@ -87,7 +87,7 @@  def register_confirm(request, conf):
         person = Person.objects.get(email__iexact=conf.user.email)
     except Person.DoesNotExist:
         person = Person(email=conf.user.email,
-                        name=conf.user.profile.name())
+                        name=conf.user.profile.name)
     person.user = conf.user
     person.save()
 
diff --git a/patchwork/views/xmlrpc.py b/patchwork/views/xmlrpc.py
index 1f48959..b65ae18 100644
--- a/patchwork/views/xmlrpc.py
+++ b/patchwork/views/xmlrpc.py
@@ -268,7 +268,7 @@  def patch_to_dict(obj):
     return {
         'id': obj.id,
         'date': six.text_type(obj.date).encode('utf-8'),
-        'filename': obj.filename(),
+        'filename': obj.filename,
         'msgid': obj.msgid,
         'name': obj.name,
         'project': six.text_type(obj.project).encode('utf-8'),