diff --git a/roms/migrations/0009_rom_download_count.py b/roms/migrations/0009_rom_download_count.py
new file mode 100644
index 0000000..0df8c20
--- /dev/null
+++ b/roms/migrations/0009_rom_download_count.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.5 on 2017-05-25 11:02
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('roms', '0008_auto_20170525_1256'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='rom',
+ name='download_count',
+ field=models.IntegerField(default=0),
+ preserve_default=False,
+ ),
+ ]
diff --git a/roms/models.py b/roms/models.py
index 6699f12..1fcb6f5 100644
--- a/roms/models.py
+++ b/roms/models.py
@@ -33,6 +33,7 @@ class Rom(models.Model):
approved = models.BooleanField("approved", default=False)
tags = TaggableManager(blank = True)
user = models.ForeignKey(User, blank=True, null=True)
+ download_count = models.IntegerField()
creation_time = models.DateTimeField("creation time", auto_now_add = True)
edit_time = models.DateTimeField("edit time", auto_now = True)
@@ -51,6 +52,7 @@ class Rom(models.Model):
'tags' : self.tag_list(),
'low_binary' : self.low_binary.url,
'high_binary' : self.high_binary.url,
+ 'download_count' : self.download_count,
'creation_time' : self.creation_time,
'edit_time' : self.edit_time
}
diff --git a/roms/templates/roms/details.html b/roms/templates/roms/details.html
index c06933f..7dc32ed 100644
--- a/roms/templates/roms/details.html
+++ b/roms/templates/roms/details.html
@@ -31,6 +31,7 @@
{% endif %}
am {{rom.creation_time}}.
Zuletzt geupdated am {{rom.edit_time}}
+ Bisher wurde dieses Rom {{rom.download_count}} heruntergeladen.
{% for tag in rom.tags.all %}
{{tag.name}}
diff --git a/roms/views.py b/roms/views.py
index 321bbd5..0f6d654 100644
--- a/roms/views.py
+++ b/roms/views.py
@@ -21,7 +21,7 @@ class RomList(ListView):
def get_queryset(self):
tag = self.kwargs.get('tag', None)
- queryset = Rom.objects.all().filter(approved = True)
+ queryset = Rom.objects.all().filter(approved = True).order_by('-download_count')
if tag != None:
queryset = queryset.filter(tags__slug = tag)
@@ -90,7 +90,7 @@ class RomListJson(ListView):
def get_queryset(self):
tag = self.kwargs.get('tag', None)
- queryset = Rom.objects.all().filter(approved = True)
+ queryset = Rom.objects.all().filter(approved = True).order_by('-download_count')
if tag != None:
queryset = queryset.filter(tags__slug = tag)
@@ -127,5 +127,8 @@ class RomDetailViewJson(DetailView):
def render_to_response(self, context, **response_kwargs):
rom = self.get_object()
+ rom.download_count += 1
+ rom.save()
+
response_kwargs['safe'] = False
return JsonResponse(rom.to_json(), **response_kwargs)