Skip to content

Instantly share code, notes, and snippets.

@ljesparis
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ljesparis/bf38a3c687c7578a84a3 to your computer and use it in GitHub Desktop.
Save ljesparis/bf38a3c687c7578a84a3 to your computer and use it in GitHub Desktop.
django -->> mixin to get the lastest photo uploaded
from django.views.generic import TemplateView
from sorl.thumbnail import get_thumbnail
from collections import OrderedDict
from django.db import models
# Model
class Something(models.Model):
photo = models.ImageField(upload_to='somewhere', blank=True)
date_time = models.DateTimeField(auto_now=True)
#view
class Home(LastPhotoUploadedMixIn, TemplateView):
template_name = 'home.html'
model = PhotosProfiles
photo_size = '50x50'
#mixin
class LastPhotoUploadedMixIn(object):
model = None
photo_size = None # example '50x50'
def query(self):
queryset = self.model.objects.get(date_time=self.last_uploaded())
return queryset
def get_model_objs(self):
queryset = self.model.objects.filter(user=self.request.user or request.user)
return queryset
def last_uploaded(self):
date_time_obj = self.get_model_objs()
if not date_time_obj:
return None
DATETIME = {}
for n, obj in enumerate(date_time_obj):
DATETIME.update({
n : str(obj.date_time),
})
ordtime = OrderedDict(DATETIME)
return ordtime.values()[-1]
def get_context_data(self, **kwargs):
context = super(LastPhotoUploadedMixIn, self).get_context_data(**kwargs)
if self.request.user.is_authenticated():
try:
if self.query():
context = {
'photo': get_thumbnail(
self.query().photo,
self.photo_size,
format='PNG'
).url,
}
except self.model.DoesNotExist:
pass
return context
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment