Advertisement
clime

Untitled

Nov 7th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     #urls
  2.           url(r'^media/images/(?P<rel_model_tag>(event|member|crag))/(?P<rel_object_id>\d+)/(?P<action>(view|edit))/$', views.video_list, name='image-list')
  3.           url(r'^media/videos/(?P<rel_model_tag>(event|member|crag))/(?P<rel_object_id>\d+)/(?P<action>(view|edit))/$', views.image_list, name='video-list')
  4.    
  5.    
  6.     #views
  7. def image_list(request, rel_model_tag, rel_object_id, action):
  8.     return media_list(request, Image, rel_model_tag, rel_object_id, action)
  9.  
  10.  
  11. def video_list(request, rel_model_tag, rel_object_id, action):
  12.     return media_list(request, Video, rel_model_tag, rel_object_id, action)
  13.  
  14.  
  15. def media_list(request, model, rel_model_tag, rel_object_id, action):
  16.     rel_model = tag_to_model(rel_model_tag)
  17.     rel_object = get_object_or_404(rel_model, pk=rel_object_id)
  18.  
  19.     if model == Image:
  20.         star_media = rel_object.star_image
  21.     else:
  22.         star_media = rel_object.star_video
  23.  
  24.     filter_params = {}
  25.     if rel_model == Event:
  26.         filter_params['media__event'] = rel_object_id
  27.     elif rel_model == Member:
  28.         filter_params['media__members'] = rel_object_id
  29.     elif rel_model == Crag:
  30.         filter_params['media__crag'] = rel_object_id
  31.  
  32.     media_list = model.objects.filter(~Q(id=star_media.id)).filter(**filter_params).order_by('media__date_added').all()
  33.  
  34.     context = {
  35.         'media_list': media_list,
  36.         'star_media': star_media,
  37.     }
  38.  
  39.     if action == 'edit':
  40.         return media_edit_list(request, model, rel_model_tag, rel_model_id, context)
  41.  
  42.     return media_view_list(request, model, rel_model_tag, rel_model_id, context)
  43.  
  44.  
  45. def media_view_list(request, model, rel_model_tag, rel_object_id, context):
  46.     if request.is_ajax():
  47.         context['base_template'] = 'boxes/base-lite.html'
  48.     return render(request, 'media/list-items.html', context)
  49.  
  50.  
  51. def media_edit_list(request, model, rel_model_tag, rel_object_id, context):
  52.     if model == Image:
  53.         get_media_record = get_image_record
  54.     else:
  55.         get_media_record = get_video_record
  56.  
  57.     media_list = [get_media_record(media, rel_model_tag, rel_object_id) for media in context['media_list']]
  58.  
  59.     if context['star_media']:
  60.         star_media = get_media_record(star_media, rel_model_tag, rel_object_id)
  61.         star_media['starred'] = True
  62.     else:
  63.         star_media = None
  64.  
  65.     json = simplejson.dumps({
  66.         'star_media': star_media,
  67.         'media_list': media_list,
  68.     })
  69.     return HttpResponse(json, content_type=json_response_mimetype(request))
  70.  
  71.     # models
  72.     class Media(models.Model, WebModel):
  73.         title = models.CharField('title', max_length=128, default='', db_index=True, blank=True)
  74.         event = models.ForeignKey(Event, null=True, default=None, blank=True)
  75.         crag = models.ForeignKey(Crag, null=True, default=None, blank=True)
  76.         members = models.ManyToManyField(Member, blank=True)
  77.         added_by = models.ForeignKey(Member, related_name='added_images')
  78.         date_added = models.DateTimeField('date added', auto_now_add=True, null=True, default=None, editable=False)
  79.    
  80.         def __unicode__(self):
  81.             return self.title
  82.    
  83.         def get_absolute_url(self):
  84.             return self.image.url if self.image else self.video.embed_url
  85.    
  86.    
  87.     class Image(Media):
  88.         image = ProcessedImageField(upload_to='uploads',
  89.                                     processors=[ResizeToFit(width=1024, height=1024, upscale=False)],
  90.                                     format='JPEG',
  91.                                     options={'quality': 75})
  92.         thumbnail_1 = ImageSpecField(source='image',
  93.                                     processors=[SmartResize(width=178, height=134)],
  94.                                     format='JPEG',
  95.                                     options={'quality': 75})
  96.         thumbnail_2 = ImageSpecField(source='image',
  97.                                     #processors=[SmartResize(width=256, height=192)],
  98.                                     processors=[ResizeToFit(height=164)],
  99.                                     format='JPEG',
  100.                                     options={'quality': 75})
  101.    
  102.    
  103.     class Video(Media):
  104.         url = models.URLField('url', max_length=256, default='')
  105.         embed_url = models.URLField('embed url', max_length=256, default='', blank=True)
  106.         author = models.CharField('author', max_length=64, default='', blank=True)
  107.         thumbnail = ProcessedImageField(upload_to='uploads',
  108.                                     processors=[ResizeToFit(width=1024, height=1024, upscale=False)],
  109.                                     format='JPEG',
  110.                                     options={'quality': 75}, null=True, default=None, blank=True)
  111.         thumbnail_1 = ImageSpecField(source='thumbnail',
  112.                                     processors=[SmartResize(width=178, height=134)],
  113.                                     format='JPEG',
  114.                                     options={'quality': 75})
  115.         thumbnail_2 = ImageSpecField(source='thumbnail',
  116.                                     #processors=[SmartResize(width=256, height=192)],
  117.                                     processors=[ResizeToFit(height=164)],
  118.                                     format='JPEG',
  119.                                     options={'quality': 75})
  120.    
  121.       class Crag(models.Model, WebModel):
  122.           name = models.CharField('name', max_length=64, default='', db_index=True)
  123.           normalized_name = models.CharField('normalized name', max_length=64, default='', editable=False)
  124.           type = models.IntegerField('crag type', null=True, default=None, choices=crag_types)
  125.           description = models.TextField('description', default='', blank=True)
  126.           country = models.ForeignKey('country', null=True, default=None) #TODO: make this not null when db enables it
  127.           latitude = models.FloatField('latitude', null=True, default=None)
  128.           longitude = models.FloatField('longitude', null=True, default=None)
  129.           location_index = FixedCharField('location index', length=24, default='', editable=False, db_index=True) # handled by db, used for marker clustering
  130.           added_by = models.ForeignKey('member', null=True, default=None)
  131.           #route_count = models.IntegerField('route count', null=True, default=None, editable=False)
  132.           date_created = models.DateTimeField('date created', auto_now_add=True, null=True, default=None, editable=False)
  133.           last_modified = models.DateTimeField('last modified', auto_now=True, null=True, default=None, editable=False)
  134.           star_image = models.OneToOneField('Image', null=True, default=None, related_name='star_crags', on_delete=models.SET_NULL)
  135.           star_video = models.OneToOneField('Video', null=True, default=None, related_name='star_crags', on_delete=models.SET_NULL)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement