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