rendered paste bodydef detail(request, file_id):
file = cache.get('file_%s' % file_id)
if not file:
file = get_object_or_404(File, visible=True, pk=file_id)
cache.set('file_%d' % (file.id), file, 60*600)
file_data = cache.get('file_data_%s_%s' % (request.LANGUAGE_CODE, file_id))
if not file_data:
file_data = Data.objects.get(file=file_id, lang=request.LANGUAGE_CODE)
cache.set('file_data_%s_%s' % (request.LANGUAGE_CODE, file_id), file_data, 60*600)
version_list = cache.get('version_list_%s' % file_id)
if not version_list:
version_list = Version.objects.filter(file=file_id).order_by('-post_date')[0:5]
cache.set('version_list_%s' % file_id, version_list, 60*600)
OBJECT = {'app': 'files', 'view': 'file', 'id': file_id}
extra_context = {'file': file, 'version_list': version_list, 'file_data': file_data, 'OBJECT': OBJECT}
context = template.RequestContext(request)
context.update(extra_context)
return render_to_response('files/detail.html', context_instance=context)
class File(models.Model, ScoreManager, LabelManager, MirrorManager):
category = models.ForeignKey(Category, related_name="file_category", db_index=True)
name = models.CharField(maxlength=200, core=True)
author = models.ForeignKey(User, raw_id_admin=True, db_index=True)
contributors = models.ManyToManyField(User, related_name="file_contributors", db_index=True, filter_interface=models.HORIZONTAL, blank=True, null=True)
visible = models.BooleanField(default=True)
post_date = models.DateTimeField(auto_now_add=True)
last_post_date = models.DateTimeField(auto_now_add=True)
parent = models.ForeignKey('self', related_name="file_parent", db_index=True, blank=True, null=True, raw_id_admin=True)
parent_type = models.ForeignKey(ParentType, db_index=True, blank=True, null=True)
required_files = models.ManyToManyField('self', related_name="required_files_rel", db_index=True, blank=True, null=True)
optional_files = models.ManyToManyField('self', related_name="optional_files_rel", db_index=True, blank=True, null=True)
downloads_total = models.PositiveIntegerField(default=0)
downloads_today = models.PositiveIntegerField(default=0)
game = models.ForeignKey(Game, db_index=True)
ratings_score = models.IntegerField(default=0, editable=False)
ratings_votes = models.IntegerField(default=0, editable=False)
labels = models.TextField(null=True, editable=False)
comments_total = models.PositiveIntegerField(default=0, editable=False)
def __str__(self):
return self.name
def get_absolute_url(self):
return "/%s/files/details/%d/%s/" % (threadlocals.get_current_lang(), self.id, safe_name(self.name))
def get_edit_url(self):
return "/%s/files/edit/%d/" % (threadlocals.get_current_lang(), self.id)
def save(self, new_data):
super(self, new_data)
self.propagate()
class Admin:
list_display = ('name', 'post_date', 'author', 'category', 'game',)
list_filter = ('post_date', 'category',)
search_fields = ['name', 'game',]
class Meta:
verbose_name = _('File')
verbose_name_plural = _('Files')
ordering = ('-post_date',)
unique_together = (('name', 'game',),)
class History:
pass
class Version(models.Model):
file = models.ForeignKey(File, db_index=True)
md5 = models.CharField(null=True, maxlength=32, blank=True)
name = models.CharField(maxlength=200)
post_date = models.DateTimeField(auto_now_add=True)
archive = models.FileField(upload_to='files/')
game = models.ManyToManyField(Game)
change_log = models.TextField(blank=True, null=True)
author = models.ForeignKey(User, raw_id_admin=True, db_index=True)
downloads = models.PositiveIntegerField()
type = models.ForeignKey(Type, db_index=True)
def __str__(self):
return "%s %s" % (self.file.name, self.name)
def get_absolute_url(self):
return self.file.get_absolute_url()
def get_download_url(self):
return "/files/downloads/%d/" % self.id
class Admin:
list_display = ('file', 'name', 'post_date',)
list_filter = ('post_date',)
search_fields = ['file', 'name',]
class Meta:
verbose_name = _('File Version')
verbose_name_plural = _('File Versions')
ordering = ('-post_date',)
unique_together = (('name', 'file',),)
class History:
pass