Ejemplo n.º 1
0
class LocationAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Location)
Ejemplo n.º 2
0
class SupporterAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Supporter)
Ejemplo n.º 3
0
class MyUserAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(User)
    search_fields = ('id', 'username', 'emailaddress__email',
                     'profile__display_name')
Ejemplo n.º 4
0
class DeviceAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Device)
Ejemplo n.º 5
0
class VideoAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Video)
Ejemplo n.º 6
0
class DatingConfirmationAdmin(ModelAdmin):
    form = autocomplete_form_factory(DatingConfirmation)
Ejemplo n.º 7
0
class FaceRecognitionRectangleAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(FaceRecognitionRectangle)
Ejemplo n.º 8
0
class SourceAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Source)
    search_fields = ('id', 'name', 'description')
Ejemplo n.º 9
0
class AlbumPhotoAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(AlbumPhoto)
Ejemplo n.º 10
0
class PointsAdmin(ModelAdmin):
    form = autocomplete_form_factory(Points)
Ejemplo n.º 11
0
class AlbumAdmin(ModelAdmin):
    form = autocomplete_form_factory(Album)
    search_fields = ('id', 'name_et', 'name_lv', 'name_lt', 'name_fi',
                     'name_sv', 'name_nl', 'name_de', 'name_ru', 'name_en',
                     'description', 'slug')
Ejemplo n.º 12
0
class ProfileAdmin(ModelAdmin):
    form = autocomplete_form_factory(Profile)
    search_fields = ('user__id', 'display_name', 'first_name', 'last_name',
                     'fb_name', 'google_plus_name')
Ejemplo n.º 13
0
class GeoTagAdmin(ModelAdmin):
    form = autocomplete_form_factory(GeoTag)
Ejemplo n.º 14
0
class SkipAdmin(ModelAdmin):
    form = autocomplete_form_factory(Skip)
Ejemplo n.º 15
0
class ApplicationExceptionAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(ApplicationException)
Ejemplo n.º 16
0
class AreaAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Area)
Ejemplo n.º 17
0
class DatingAdmin(ModelAdmin):
    form = autocomplete_form_factory(Dating)
Ejemplo n.º 18
0
class LicenceAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(Licence)
    search_fields = ('id', 'name')
Ejemplo n.º 19
0
class PhotoAdmin(ModelAdmin):
    @staticmethod
    def _distance_between_two_points_on_sphere(lon_1, lat_1, lon_2, lat_2):
        import math

        rad = math.pi / 180.0
        equatorial_radius_meters = 6378137
        lon_1_rad = lon_1 * rad
        lat_1_rad = lat_1 * rad
        lon_2_rad = lon_2 * rad
        lat_2_rad = lat_2 * rad
        cos_angle = math.sin(lat_1_rad) * math.sin(lat_2_rad) + math.cos(
            lat_1_rad) * math.cos(lat_2_rad) * math.cos(lon_2_rad - lon_1_rad)

        if cos_angle >= 1:
            return 0

        angle = math.acos(cos_angle)
        return angle * equatorial_radius_meters

    def save_model(self, request, obj, form, change):
        if obj.lat and obj.lon and obj.bounding_circle_radius:
            # If an administrator sets a bounding circle, invalidate GeoTags outside of it
            all_photo_geo_tags = GeoTag.objects.filter(photo_id=obj.id)
            for geo_tag in all_photo_geo_tags:
                d = self._distance_between_two_points_on_sphere(
                    obj.lon, obj.lat, geo_tag.lon, geo_tag.lat)
                if d > obj.bounding_circle_radius:
                    geo_tag.is_correct = False
                else:
                    geo_tag.is_correct = True
                geo_tag.save()
        obj.save()

    def _invertcolors(self, id):
        from django.http.response import HttpResponse
        photo = Photo.objects.filter(pk=id.split('/')[0]).first()
        if photo:
            photo_path = settings.MEDIA_ROOT + '/' + str(photo.image)
            img = Image.open(photo_path)
            inverted_grayscale_image = ImageOps.invert(img).convert('L')
            inverted_grayscale_image.save(photo_path)
            photo.invert = not photo.invert
            sorl_delete(photo.image, delete_file=False)
            photo.light_save()
            return HttpResponse(u'Photo inverted!')

        return HttpResponse(u'Failed to invert photo!')

    extra_buttons = [
        {
            'url': '_invertcolors',
            'textname': _('Invert colors'),
            'func': _invertcolors
        },
    ]

    def change_view(self, request, object_id, form_url='', extra_context={}):
        extra_context['extra_buttons'] = self.extra_buttons
        return super(PhotoAdmin, self).change_view(request,
                                                   object_id,
                                                   form_url,
                                                   extra_context=extra_context)

    def get_urls(self):
        from django.conf.urls import url
        urls = super(PhotoAdmin, self).get_urls()
        my_urls = list((url(r'^(.+)/%(url)s/$' % b,
                            self.admin_site.admin_view(b['func']))
                        for b in self.extra_buttons))
        return my_urls + urls

    inlines = (AlbumPhotoInline, )

    form = autocomplete_form_factory(Photo)
    search_fields = ('id', 'description_et', 'description_lv',
                     'description_lt', 'description_fi', 'description_sv',
                     'description_nl', 'description_de', 'description_ru',
                     'description_en', 'title_et', 'title_lv', 'title_lt',
                     'title_fi', 'title_sv', 'title_nl', 'title_de',
                     'title_ru', 'title_en', 'author', 'types', 'keywords',
                     'source__name', 'source_key', 'address', 'muis_title',
                     'muis_comment', 'muis_event_description_set_note',
                     'muis_text_on_object', 'muis_legends_and_descriptions')
Ejemplo n.º 20
0
class FaceRecognitionUserSuggestionAdmin(admin.ModelAdmin):
    form = autocomplete_form_factory(FaceRecognitionUserSuggestion)