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.image_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.video_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 | - | |
4 | + | |
5 | ||
6 | - | |
6 | + | |
7 | def image_list(request, rel_model_tag, rel_object_id, action): | |
8 | - | def image_list(request, rel_model_tag, rel_object_id, mode): |
8 | + | return media_list(request, Image, rel_model_tag, rel_object_id, action) |
9 | - | return media_list(request, Image, rel_model_tag, rel_object_id, mode) |
9 | + | |
10 | ||
11 | def video_list(request, rel_model_tag, rel_object_id, action): | |
12 | - | def video_list(request, rel_model_tag, rel_object_id, mode): |
12 | + | return media_list(request, Video, rel_model_tag, rel_object_id, action) |
13 | - | return media_list(request, Video, rel_model_tag, rel_object_id, mode) |
13 | + | |
14 | ||
15 | def media_list(request, model, rel_model_tag, rel_object_id, action): | |
16 | - | def media_list(request, model, rel_model_tag, rel_object_id, mode): |
16 | + | |
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 | - | |
24 | + | filter_params = {} |
25 | - | media_list = model.get_object_media(rel_object).filter(~Q(id=star_media.id)).order_by('date_added') |
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 | - | if mode == 'edit': |
32 | + | media_list = model.objects.filter(~Q(id=star_media.id)).filter(**filter_params).order_by('media__date_added').all() |
33 | - | return media_edit_list(request, model, rel_model_tag, rel_object_id, context) |
33 | + | |
34 | context = { | |
35 | - | return media_view_list(request, model, rel_model_tag, rel_object_id, context) |
35 | + | |
36 | 'star_media': star_media, | |
37 | } | |
38 | - | def media_view_list(request, model, rel_model_tag, rel_object_id, context): |
38 | + | |
39 | - | if request.is_ajax(): |
39 | + | if action == 'edit': |
40 | - | context['base_template'] = 'boxes/base-lite.html' |
40 | + | return media_edit_list(request, model, rel_model_tag, rel_model_id, context) |
41 | - | return render(request, 'media/list-items.html', context) |
41 | + | |
42 | return media_view_list(request, model, rel_model_tag, rel_model_id, context) | |
43 | ||
44 | - | def media_edit_list(request, model, rel_model_tag, rel_object_id, context): |
44 | + | |
45 | ||
46 | - | get_media_edit_record = get_image_edit_record |
46 | + | def media_view_list(request, model, rel_model_tag, rel_object_id, context): |
47 | if request.is_ajax(): | |
48 | - | get_media_edit_record = get_video_edit_record |
48 | + | context['base_template'] = 'boxes/base-lite.html' |
49 | return render(request, 'media/list-items.html', context) | |
50 | - | media_list = [get_media_edit_record(media, rel_model_tag, rel_object_id) for media in context['media_list']] |
50 | + | |
51 | ||
52 | - | if context['star_media']: |
52 | + | def media_edit_list(request, model, rel_model_tag, rel_object_id, context): |
53 | - | star_media = get_media_edit_record(context['star_media'], rel_model_tag, rel_object_id) |
53 | + | if model == Image: |
54 | get_media_record = get_image_record | |
55 | - | star_media = None |
55 | + | else: |
56 | get_media_record = get_video_record | |
57 | - | json = simplejson.dumps({ |
57 | + | |
58 | media_list = [get_media_record(media, rel_model_tag, rel_object_id) for media in context['media_list']] | |
59 | ||
60 | - | }) |
60 | + | if context['star_media']: |
61 | - | return HttpResponse(json, content_type=json_response_mimetype(request)) |
61 | + | star_media = get_media_record(star_media, rel_model_tag, rel_object_id) |
62 | star_media['starred'] = True | |
63 | else: | |
64 | - | def get_image_edit_record(image, rel_model_tag, rel_object_id): |
64 | + | star_media = None |
65 | - | record = { |
65 | + | |
66 | - | 'url': image.image.url, |
66 | + | json = simplejson.dumps({ |
67 | - | 'name': image.title or image.filename, |
67 | + | 'star_media': star_media, |
68 | - | 'type': mimetypes.guess_type(image.image.path)[0] or 'image/png', |
68 | + | 'media_list': media_list, |
69 | - | 'thumbnailUrl': image.thumbnail_2.url, |
69 | + | }) |
70 | - | 'size': image.image.size, |
70 | + | return HttpResponse(json, content_type=json_response_mimetype(request)) |
71 | - | 'id': image.id, |
71 | + | |
72 | - | 'media_id': image.media_ptr.id, |
72 | + | |
73 | - | 'starUrl':reverse('image-star', kwargs={'image_id': image.id, 'rel_model_tag': rel_model_tag, 'rel_object_id': rel_object_id}), |
73 | + | |
74 | title = models.CharField('title', max_length=128, default='', db_index=True, blank=True) | |
75 | - | return record |
75 | + | |
76 | crag = models.ForeignKey(Crag, null=True, default=None, blank=True) | |
77 | members = models.ManyToManyField(Member, blank=True) | |
78 | - | def get_video_edit_record(video, rel_model_tag, rel_object_id): |
78 | + | |
79 | - | record = { |
79 | + | |
80 | - | 'url': video.embed_url, |
80 | + | |
81 | - | 'name': video.title or video.url, |
81 | + | def __unicode__(self): |
82 | - | 'type': None, |
82 | + | return self.title |
83 | - | 'thumbnailUrl': video.thumbnail_2.url, |
83 | + | |
84 | - | 'size': None, |
84 | + | def get_absolute_url(self): |
85 | - | 'id': video.id, |
85 | + | return self.image.url if self.image else self.video.embed_url |
86 | - | 'media_id': video.media_ptr.id, |
86 | + | |
87 | - | 'starUrl': reverse('video-star', kwargs={'video_id': video.id, 'rel_model_tag': rel_model_tag, 'rel_object_id': rel_object_id}), |
87 | + | |
88 | class Image(Media): | |
89 | - | return record |
89 | + | |
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 | - | member = models.ForeignKey(Member, null=True, default=None, blank=True) |
99 | + | |
100 | - | tagged_in_members = models.ManyToManyField(Member, blank=True, related_name="tagged_in_media_set") |
100 | + | |
101 | options={'quality': 75}) | |
102 | ||
103 | ||
104 | - | @classmethod |
104 | + | |
105 | - | def get_object_media(cls, rel_object): |
105 | + | |
106 | - | filter_params = {} |
106 | + | |
107 | author = models.CharField('author', max_length=64, default='', blank=True) | |
108 | - | if rel_object.__class__ == Event: |
108 | + | |
109 | - | filter_params['event'] = rel_object.id |
109 | + | |
110 | - | elif rel_object.__class__ == Member: |
110 | + | |
111 | - | filter_params['member'] = rel_object.id |
111 | + | |
112 | - | elif rel_object.__class__ == Crag: |
112 | + | |
113 | - | filter_params['crag'] = rel_object.id |
113 | + | |
114 | format='JPEG', | |
115 | - | return cls.objects.filter(**filter_params).all() |
115 | + | |
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) |