Advertisement
clime

Untitled

Nov 7th, 2013
83
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.  
  46.   def media_view_list(request, model, rel_model_tag, rel_object_id, context):
  47.       if request.is_ajax():
  48.           context['base_template'] = 'boxes/base-lite.html'
  49.       return render(request, 'media/list-items.html', context)
  50.  
  51.  
  52.   def media_edit_list(request, model, rel_model_tag, rel_object_id, context):
  53.       if model == Image:
  54.           get_media_record = get_image_record
  55.       else:
  56.           get_media_record = get_video_record
  57.  
  58.       media_list = [get_media_record(media, rel_model_tag, rel_object_id) for media in context['media_list']]
  59.  
  60.       if context['star_media']:
  61.           star_media = get_media_record(star_media, rel_model_tag, rel_object_id)
  62.           star_media['starred'] = True
  63.       else:
  64.           star_media = None
  65.  
  66.       json = simplejson.dumps({
  67.           'star_media': star_media,
  68.           'media_list': media_list,
  69.       })
  70.       return HttpResponse(json, content_type=json_response_mimetype(request))
  71.    
  72.     # models
  73.     class Media(models.Model, WebModel):
  74.         title = models.CharField('title', max_length=128, default='', db_index=True, blank=True)
  75.         event = models.ForeignKey(Event, null=True, default=None, blank=True)
  76.         crag = models.ForeignKey(Crag, null=True, default=None, blank=True)
  77.         members = models.ManyToManyField(Member, blank=True)
  78.         added_by = models.ForeignKey(Member, related_name='added_images')
  79.         date_added = models.DateTimeField('date added', auto_now_add=True, null=True, default=None, editable=False)
  80.    
  81.         def __unicode__(self):
  82.             return self.title
  83.    
  84.         def get_absolute_url(self):
  85.             return self.image.url if self.image else self.video.embed_url
  86.    
  87.    
  88.     class Image(Media):
  89.         image = ProcessedImageField(upload_to='uploads',
  90.                                     processors=[ResizeToFit(width=1024, height=1024, upscale=False)],
  91.                                     format='JPEG',
  92.                                     options={'quality': 75})
  93.         thumbnail_1 = ImageSpecField(source='image',
  94.                                     processors=[SmartResize(width=178, height=134)],
  95.                                     format='JPEG',
  96.                                     options={'quality': 75})
  97.         thumbnail_2 = ImageSpecField(source='image',
  98.                                     #processors=[SmartResize(width=256, height=192)],
  99.                                     processors=[ResizeToFit(height=164)],
  100.                                     format='JPEG',
  101.                                     options={'quality': 75})
  102.    
  103.    
  104.     class Video(Media):
  105.         url = models.URLField('url', max_length=256, default='')
  106.         embed_url = models.URLField('embed url', max_length=256, default='', blank=True)
  107.         author = models.CharField('author', max_length=64, default='', blank=True)
  108.         thumbnail = ProcessedImageField(upload_to='uploads',
  109.                                     processors=[ResizeToFit(width=1024, height=1024, upscale=False)],
  110.                                     format='JPEG',
  111.                                     options={'quality': 75}, null=True, default=None, blank=True)
  112.         thumbnail_1 = ImageSpecField(source='thumbnail',
  113.                                     processors=[SmartResize(width=178, height=134)],
  114.                                     format='JPEG',
  115.                                     options={'quality': 75})
  116.         thumbnail_2 = ImageSpecField(source='thumbnail',
  117.                                     #processors=[SmartResize(width=256, height=192)],
  118.                                     processors=[ResizeToFit(height=164)],
  119.                                     format='JPEG',
  120.                                     options={'quality': 75})
  121.    
  122.       class Crag(models.Model, WebModel):
  123.           name = models.CharField('name', max_length=64, default='', db_index=True)
  124.           normalized_name = models.CharField('normalized name', max_length=64, default='', editable=False)
  125.           type = models.IntegerField('crag type', null=True, default=None, choices=crag_types)
  126.           description = models.TextField('description', default='', blank=True)
  127.           country = models.ForeignKey('country', null=True, default=None) #TODO: make this not null when db enables it
  128.           latitude = models.FloatField('latitude', null=True, default=None)
  129.           longitude = models.FloatField('longitude', null=True, default=None)
  130.           location_index = FixedCharField('location index', length=24, default='', editable=False, db_index=True) # handled by db, used for marker clustering
  131.           added_by = models.ForeignKey('member', null=True, default=None)
  132.           #route_count = models.IntegerField('route count', null=True, default=None, editable=False)
  133.           date_created = models.DateTimeField('date created', auto_now_add=True, null=True, default=None, editable=False)
  134.           last_modified = models.DateTimeField('last modified', auto_now=True, null=True, default=None, editable=False)
  135.           star_image = models.OneToOneField('Image', null=True, default=None, related_name='star_crags', on_delete=models.SET_NULL)
  136.           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