Skip to content

Commit

Permalink
Bugfix in association with facebook.
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelcaricio committed Jul 31, 2011
1 parent cd0088e commit 6c570f7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 16 deletions.
33 changes: 19 additions & 14 deletions myimgat/apps/wall/models.py
Expand Up @@ -26,10 +26,10 @@
class Provider(models.Model):
username = models.CharField(default=DEFAULT_USER_WALL, blank=True, max_length=100, db_index=True)
provider_name = models.CharField(max_length=100)
update_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField()

def is_expired(self):
return datetime.now() > self.update_at
return datetime.now() >= self.update_at

def mark_as_updated(self):
self.update_at = datetime.now() + timedelta(days=UPDATE_ALBUMS_DAYS_INTERVAL)
Expand All @@ -38,7 +38,7 @@ def create_provider(provider_type):
def _create_provider(sender, instance, created, **kwargs):
if created and provider_type.lower() == instance.provider.lower():
Provider.objects.create(username=instance.user.username, provider_name=provider_type,
update_at=datetime.now() + timedelta(days=UPDATE_ALBUMS_DAYS_INTERVAL))
update_at=datetime.now() - timedelta(minutes=1))
return True
return _create_provider

Expand All @@ -55,7 +55,7 @@ def get_username_and_providers(self, username):
username = user.username
providers = Provider.objects.filter(username=user.username)
except User.DoesNotExist:
providers = [Provider(provider_name='Google', update_at=datetime.now() - timedelta(days=1))]
providers = []
return username, providers

class AlbumManager(models.Manager, ProvidersHelper):
Expand All @@ -64,19 +64,24 @@ def load(self, username, force_update=False):
albums = Album.objects.filter(username=username)
if not force_update:
providers = filter(lambda p: p.is_expired(), providers)
if (not albums or force_update) and providers:

if not providers and not albums:
providers = [Provider(provider_name='Google')]

if not albums or force_update or providers:
albums = []
for provider in providers:
try:
remote_provider = providers_classes['%sImageProvider' % provider.provider_name](username)
for album_base in remote_provider.load_albums():
album, created = Album.objects.get_or_create(identifier=album_base.identifier, defaults={
'username': username,
album, created = Album.objects.get_or_create(
identifier=album_base.identifier,
username=username,
defaults={
'url': album_base.url,
'title': album_base.title,
})
albums.append(album)
provider.mark_as_updated()
except:
logging.error("Problem on loading info from provider [%s]" % str(provider))
return albums
Expand All @@ -94,30 +99,30 @@ class Meta:
proxy = True

class PhotoManager(models.Manager, ProvidersHelper):

def load(self, album, force_update=False):
username, providers = self.get_username_and_providers(album.username)
photos = Photo.objects.filter(album=album)
if not force_update:
providers = filter(lambda p: p.is_expired(), providers)
if (not photos or force_update) and providers:
if not photos or force_update or providers:
photos = []
for provider in providers:
try:
remote_provider = providers_classes['%sImageProvider' % provider.provider_name](username)
for photo_base in remote_provider.load_photos(album):
photo, created = Photo.objects.get_or_create(url=photo_base.url, defaults={
photo, created = Photo.objects.get_or_create(
url=photo_base.url,
album=album,
defaults={
'title': photo_base.title,
'width': photo_base.width,
'height': photo_base.height,
'thumbnail': photo_base.thumbnail,
'album': album,
})
photos.append(photo)
provider.mark_as_updated()
except:
logging.error("Problem on loading photos from provider [%s]" % str(provider.provider_name))
return photos
return photos


class Photo(models.Model):
Expand Down
7 changes: 6 additions & 1 deletion myimgat/apps/wall/views.py
Expand Up @@ -11,7 +11,7 @@

from providers.base import format_url

from models import AlbumProxy, PhotoProxy, Photo, CroppedPhoto
from models import AlbumProxy, PhotoProxy, Photo, CroppedPhoto, Provider

DEFAULT_USER_WALL = getattr(settings, "DEFAULT_USER_WALL", "heynemann")
THUMBOR_SERVER = getattr(settings, "THUMBOR_SERVER", 'http://%d.thby.nl')
Expand Down Expand Up @@ -70,6 +70,11 @@ def albums(request, username=None, extension="json"):
data.append(album_data)
data = dumps(data)

providers = Provider.objects.filter(username=request.user.username)
for provider in providers:
provider.mark_as_updated()
provider.save()

if extension == "json":
return HttpResponse(data, mimetype="application/json")
elif extension == "jsonp":
Expand Down
2 changes: 1 addition & 1 deletion myimgat/providers/fb.py
Expand Up @@ -19,7 +19,7 @@ def __init__(self, username, token=None):
self.username = username
self.token = token
if not self.token:
user_auth = UserSocialAuth.objects.get(user__username=self.username)
user_auth = UserSocialAuth.objects.get(user__username=self.username, provider="facebook")
self.token = user_auth.extra_data['access_token']

def load_albums(self):
Expand Down

0 comments on commit 6c570f7

Please sign in to comment.