Skip to content

Commit 028f691

Browse files
committed
WIP
1 parent 98111fd commit 028f691

File tree

11 files changed

+253
-222
lines changed

11 files changed

+253
-222
lines changed

mygpo/administration/group.py

Lines changed: 0 additions & 48 deletions
This file was deleted.

mygpo/administration/tasks.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,24 @@
33

44
from mygpo.podcasts.models import Podcast
55
from mygpo.celery import celery
6-
from mygpo.maintenance.merge import PodcastMerger
76
from mygpo.maintenance.models import MergeTask
87

98
from celery.utils.log import get_task_logger
109
logger = get_task_logger(__name__)
1110

1211

1312
@celery.task
14-
def merge_podcasts(podcast_ids, num_groups, queue_id=''):
13+
def merge_podcasts(task_id):
1514
""" Task to merge some podcasts"""
1615

17-
logger.info('merging podcast ids %s', podcast_ids)
16+
task = MergeTask.objects.get(id=task_id)
1817

19-
podcasts = list(Podcast.objects.filter(id__in=podcast_ids))
18+
logger.info('Processing merge task {}'.format(task_id))
2019

21-
logger.info('merging podcasts %s', podcasts)
22-
23-
pm = PodcastMerger(podcasts, num_groups)
24-
podcast = pm.merge()
20+
podcast = task.merge()
2521

2622
logger.info('merging successful')
2723

28-
if queue_id:
29-
qid = uuid.UUID(queue_id)
30-
logger.info('Deleting merge queue entry {}'.format(qid))
31-
MergeTask.objects.filter(id=qid).delete()
24+
task.delete()
3225

33-
return podcast
26+
return podcast.pk

mygpo/administration/templates/admin/merge-grouping.html

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ <h1>{% trans "Merge Podcasts and Episodes" %}</h1>
2424
{% trans "Episodes that have the same number will be merged. Please verify all your changes by clicking on 'Renew Groups' before starting the Merge." %}
2525
</div>
2626

27-
<form method="post" action="{% url "admin-merge-process" %}">
27+
<form method="post" action="{% url "admin-merge-process" task.pk %}">
2828
{% csrf_token %}
2929

3030
{% for podcast in podcasts %}
@@ -39,18 +39,21 @@ <h1>{% trans "Merge Podcasts and Episodes" %}</h1>
3939
{% endfor %}
4040
</tr>
4141

42-
{% for n, episodes in groups %}
42+
{% for line in groups %}
4343
<tr>
44-
<th>{{ n }}</th>
44+
<th>{{ forloop.counter }}</th>
4545

46-
{% for podcast in podcasts %}
46+
{% for episode in line %}
4747
<td>
48-
{% for episode in episodes %}
49-
{% if episode.podcast.get_id == podcast.get_id %}
50-
<input type="text" name="episode_{{ episode.get_id }}" value="{{ n }}" size="2"/>
51-
{% episode_link episode podcast %}<br />
52-
{% endif %}
53-
{% endfor %}
48+
{% if episode %}
49+
<input
50+
type="text"
51+
name="episode_{{ episode.get_id }}"
52+
value="{{ forloop.parentloop.counter }}"
53+
size="2"
54+
/>
55+
{% episode_link episode episode.podcast %}<br />
56+
{% endif %}
5457
</td>
5558
{% endfor %}
5659

@@ -59,14 +62,12 @@ <h1>{% trans "Merge Podcasts and Episodes" %}</h1>
5962

6063
<tr>
6164
<td></td>
62-
<td><input type="submit" name="renew" value="Renew Groups" /></td>
63-
<td><input type="submit" name="merge" value="Merge!" /></td>
65+
<td><button formaction="{% url "admin-merge-update" task.pk %}">Renew Groups</button></td>
66+
<td><button>Merge</button></td>
6467
</tr>
6568

6669
</table>
6770

68-
<input type="hidden" name="queue_id" value="{{ queue_id }}" />
69-
7071
</form>
7172

7273

mygpo/administration/templates/admin/merge-select.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ <h1>{% trans "Merge Podcasts and Episodes" %}</h1>
1313
{% endblock %}
1414

1515
{% block content %}
16-
{% if queue_length > 0 %}
1716
<div>
18-
Queue Length: {{ queue_length }} -
19-
<a href="{% url "admin-merge" %}?queue=1">Take from Queue</a>
17+
Queue Length: {{ queue_length }}
18+
{% if task %}
19+
- <a href="{% url "admin-merge-verify" task.pk %}">Take from Queue</a>
20+
{% endif %}
2021
</div>
21-
{% endif %}
2222

23-
<form method="post" action="{% url "admin-merge-verify" %}" role="form">
23+
<form method="post" action="{% url "admin-merge-create" %}" role="form">
2424
{% csrf_token %}
2525
{% for url in urls %}
2626
<div class="form-group">

mygpo/administration/templates/admin/task-status.html

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,6 @@ <h1>
3434

3535
{% if ready %}
3636

37-
<p>{% trans "The following actions were recorded:" %}
38-
<ul>
39-
{% for action, count in actions %}
40-
<li>{{ action }}: {{ count }}</li>
41-
{% empty %}
42-
<li><em>{% trans "none" %}</em></li>
43-
{% endfor %}
44-
</ul>
45-
</p>
46-
4737
<p>{% trans "Go to podcast" %} {% podcast_group_link podcast %}</p>
4838
{% else %}
4939
<p>{% trans "The operation is still ongoing..." %}</p>

mygpo/administration/tests.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from mygpo.podcasts.models import Podcast, Episode
1717
from mygpo.users.models import Client
1818
from mygpo.history.models import EpisodeHistoryEntry
19-
from mygpo.maintenance.merge import PodcastMerger
19+
from mygpo.maintenance.models import MergeTask
2020
from mygpo.subscriptions import subscribe, unsubscribe
2121

2222

@@ -67,11 +67,17 @@ def test_merge(self):
6767
e3_id = e3.pk
6868

6969
# decide which episodes to merge
70-
groups = [(0, [e1]), (1, [e2, e3]), (2, [e4])]
70+
groups = [
71+
[e1.id.hex],
72+
[e2.id.hex, e3.id.hex],
73+
[e4.id.hex],
74+
]
7175

7276
# carry out the merge
73-
pm = PodcastMerger([p1, p2], groups)
74-
pm.merge()
77+
task = MergeTask.objects.create_from_podcasts([p1, p2])
78+
task.groups = groups
79+
task.save()
80+
task.merge()
7581

7682
e1 = Episode.objects.get(pk=e1.pk)
7783
history1 = EpisodeHistoryEntry.objects.filter(episode=e1, user=user)

mygpo/administration/urls.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@
1616
views.MergeSelect.as_view(),
1717
name='admin-merge'),
1818

19-
url(r'^merge/verify$',
19+
url(r'^merge/create$',
20+
views.CreateMergeTask.as_view(),
21+
name='admin-merge-create'),
22+
23+
url(r'^merge/verify/(?P<task_id>[^/]+)$',
2024
views.MergeVerify.as_view(),
2125
name='admin-merge-verify'),
2226

23-
url(r'^merge/process$',
27+
url(r'^merge/update/(?P<task_id>[^/]+)$',
28+
views.UpdateMergeTask.as_view(),
29+
name='admin-merge-update'),
30+
31+
url(r'^merge/process/(?P<task_id>[^/]+)$',
2432
views.MergeProcess.as_view(),
2533
name='admin-merge-process'),
2634

0 commit comments

Comments
 (0)