View difference between Paste ID: vtKPynuT and 87LAbhha
SHOW: | | - or go back to the newest paste.
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):
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)
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):
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)
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):
15+
def media_list(request, model, rel_model_tag, rel_object_id, action):
16-
        rel_model = tag_to_model(rel_model_tag)
16+
    rel_model = tag_to_model(rel_model_tag)
17-
        rel_object = get_object_or_404(rel_model, pk=rel_object_id)
17+
    rel_object = get_object_or_404(rel_model, pk=rel_object_id)
18
19-
        if model == Image:
19+
    if model == Image:
20-
            star_media = rel_object.star_image
20+
        star_media = rel_object.star_image
21-
        else:
21+
    else:
22-
            star_media = rel_object.star_video
22+
        star_media = rel_object.star_video
23
24-
        filter_params = {}
24+
    filter_params = {}
25-
        if rel_model == Event:
25+
    if rel_model == Event:
26-
            filter_params['media__event'] = rel_object_id
26+
        filter_params['media__event'] = rel_object_id
27-
        elif rel_model == Member:
27+
    elif rel_model == Member:
28-
            filter_params['media__members'] = rel_object_id
28+
        filter_params['media__members'] = rel_object_id
29-
        elif rel_model == Crag:
29+
    elif rel_model == Crag:
30-
            filter_params['media__crag'] = rel_object_id
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()
32+
    media_list = model.objects.filter(~Q(id=star_media.id)).filter(**filter_params).order_by('media__date_added').all()
33
34-
        context = {
34+
    context = {
35-
            'media_list': media_list,
35+
        'media_list': media_list,
36-
            'star_media': star_media,
36+
        'star_media': star_media,
37-
        }
37+
    }
38
39-
        if action == 'edit':
39+
    if action == 'edit':
40-
            return media_edit_list(request, model, rel_model_tag, rel_model_id, context)
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)
42+
    return media_view_list(request, model, rel_model_tag, rel_model_id, context)
43
44
45-
  
45+
def media_view_list(request, model, rel_model_tag, rel_object_id, context):
46-
  def media_view_list(request, model, rel_model_tag, rel_object_id, context):
46+
    if request.is_ajax():
47-
      if request.is_ajax():
47+
        context['base_template'] = 'boxes/base-lite.html'
48-
          context['base_template'] = 'boxes/base-lite.html'
48+
    return render(request, 'media/list-items.html', context)
49-
      return render(request, 'media/list-items.html', context)
49+
50-
  
50+
51-
  
51+
def media_edit_list(request, model, rel_model_tag, rel_object_id, context):
52-
  def media_edit_list(request, model, rel_model_tag, rel_object_id, context):
52+
    if model == Image:
53-
      if model == Image:
53+
        get_media_record = get_image_record
54-
          get_media_record = get_image_record
54+
    else:
55-
      else:
55+
        get_media_record = get_video_record
56-
          get_media_record = get_video_record
56+
57-
  
57+
    media_list = [get_media_record(media, rel_model_tag, rel_object_id) for media in context['media_list']]
58-
      media_list = [get_media_record(media, rel_model_tag, rel_object_id) for media in context['media_list']]
58+
59-
  
59+
    if context['star_media']:
60-
      if context['star_media']:
60+
        star_media = get_media_record(star_media, rel_model_tag, rel_object_id)
61-
          star_media = get_media_record(star_media, rel_model_tag, rel_object_id)
61+
        star_media['starred'] = True
62-
          star_media['starred'] = True
62+
    else:
63-
      else:
63+
        star_media = None
64-
          star_media = None
64+
65-
  
65+
    json = simplejson.dumps({
66-
      json = simplejson.dumps({
66+
        'star_media': star_media,
67-
          'star_media': star_media,
67+
        'media_list': media_list,
68-
          'media_list': media_list,
68+
    })
69-
      })
69+
    return HttpResponse(json, content_type=json_response_mimetype(request))
70-
      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)