aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patchwork/forms.py5
-rw-r--r--patchwork/migrations/0019_userprofile_show_ids.py20
-rw-r--r--patchwork/models.py3
-rw-r--r--patchwork/templates/patchwork/patch-list.html25
4 files changed, 52 insertions, 1 deletions
diff --git a/patchwork/forms.py b/patchwork/forms.py
index f42a224..0dd1185 100644
--- a/patchwork/forms.py
+++ b/patchwork/forms.py
@@ -107,7 +107,10 @@ class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
- fields = ['items_per_page']
+ fields = ['items_per_page', 'show_ids']
+ labels = {
+ 'show_ids': 'Show Patch IDs:'
+ }
def _get_delegate_qs(project, instance=None):
diff --git a/patchwork/migrations/0019_userprofile_show_ids.py b/patchwork/migrations/0019_userprofile_show_ids.py
new file mode 100644
index 0000000..d924184
--- /dev/null
+++ b/patchwork/migrations/0019_userprofile_show_ids.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.6 on 2017-03-26 20:59
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('patchwork', '0018_add_event_model'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='userprofile',
+ name='show_ids',
+ field=models.BooleanField(default=False, help_text=b'Show click-to-copy patch IDs in the list view'),
+ ),
+ ]
diff --git a/patchwork/models.py b/patchwork/models.py
index 05c6976..a336219 100644
--- a/patchwork/models.py
+++ b/patchwork/models.py
@@ -138,6 +138,9 @@ class UserProfile(models.Model):
items_per_page = models.PositiveIntegerField(
default=100, null=False, blank=False,
help_text='Number of items to display per page')
+ show_ids = models.BooleanField(
+ default=False,
+ help_text='Show click-to-copy patch IDs in the list view')
@property
def name(self):
diff --git a/patchwork/templates/patchwork/patch-list.html b/patchwork/templates/patchwork/patch-list.html
index 4b979ac..cdc368f 100644
--- a/patchwork/templates/patchwork/patch-list.html
+++ b/patchwork/templates/patchwork/patch-list.html
@@ -50,6 +50,18 @@ $(document).ready(function() {
e.preventDefault();
});
});
+
+{% if user.is_authenticated and user.profile.show_ids %}
+function copyToClipboard(patch_id) {
+ input = document.createElement('input');
+ input.setAttribute('type', 'text');
+ input.setAttribute('value', patch_id);
+ input = document.body.appendChild(input);
+ input.select();
+ document.execCommand('copy');
+ input.remove();
+}
+{% endif %}
</script>
<form method="post">
{% csrf_token %}
@@ -65,6 +77,12 @@ $(document).ready(function() {
</th>
{% endif %}
+ {% if user.is_authenticated and user.profile.show_ids %}
+ <th>
+ ID
+ </th>
+ {% endif %}
+
<th>
{% ifequal order.name "name" %}
<a class="colactive" href="{% listurl order=order.reversed_name %}">
@@ -175,6 +193,13 @@ $(document).ready(function() {
<input type="checkbox" name="patch_id:{{patch.id}}"/>
</td>
{% endif %}
+ {% if user.is_authenticated and user.profile.show_ids %}
+ <td>
+ <button type="button" class="btn btn-xs"
+ onClick="javascript:copyToClipboard('{{patch.id}}');"
+ title="Copy to Clipboard">{{ patch.id }}</button>
+ </td>
+ {% endif %}
<td>
<a href="{% url 'patch-detail' patch_id=patch.id %}">
{{ patch.name|default:"[no subject]"|truncatechars:100 }}