Advertisement
clime

Untitled

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