|
30 | 30 | from django.contrib.contenttypes.models import ContentType
|
31 | 31 | from django.conf import settings
|
32 | 32 | from django.db.models import Count
|
33 |
| -from django.http.response import HttpResponse |
34 |
| -from django.template.response import TemplateResponse |
35 | 33 | from django.utils.translation import get_language
|
36 | 34 |
|
37 | 35 | from avatar.templatetags.avatar_tags import avatar_url
|
38 |
| -from tastypie import http |
39 |
| -from tastypie.exceptions import BadRequest |
40 | 36 |
|
41 |
| -from geonode import qgis_server, geoserver |
| 37 | +from geonode import geoserver |
42 | 38 | from geonode.api.paginator import CrossSiteXHRPaginator
|
43 | 39 | from geonode.api.authorization import GeoNodeStyleAuthorization, ApiLockdownAuthorization, \
|
44 | 40 | GroupAuthorization, GroupProfileAuthorization
|
45 |
| -from geonode.qgis_server.models import QGISServerStyle |
46 | 41 | from guardian.shortcuts import get_objects_for_user
|
47 | 42 | from tastypie.bundle import Bundle
|
48 | 43 |
|
@@ -600,178 +595,6 @@ class Meta:
|
600 | 595 | authorization = ApiLockdownAuthorization()
|
601 | 596 |
|
602 | 597 |
|
603 |
| -class QGISStyleResource(ModelResource): |
604 |
| - """Styles API for QGIS Server backend.""" |
605 |
| - |
606 |
| - body = fields.CharField(attribute='body', use_in='detail') |
607 |
| - name = fields.CharField(attribute='name') |
608 |
| - title = fields.CharField(attribute='title') |
609 |
| - layer = fields.ForeignKey( |
610 |
| - 'geonode.api.resourcebase_api.LayerResource', |
611 |
| - attribute='layer', |
612 |
| - null=True) |
613 |
| - style_url = fields.CharField(attribute='style_url') |
614 |
| - type = fields.CharField(attribute='type') |
615 |
| - |
616 |
| - class Meta: |
617 |
| - paginator_class = CrossSiteXHRPaginator |
618 |
| - queryset = QGISServerStyle.objects.all() |
619 |
| - resource_name = 'styles' |
620 |
| - detail_uri_name = 'id' |
621 |
| - allowed_methods = ['get', 'post', 'delete'] |
622 |
| - authorization = GeoNodeStyleAuthorization() |
623 |
| - filtering = { |
624 |
| - 'id': ALL, |
625 |
| - 'title': ALL, |
626 |
| - 'name': ALL, |
627 |
| - 'layer': ALL_WITH_RELATIONS |
628 |
| - } |
629 |
| - |
630 |
| - def populate_object(self, style): |
631 |
| - """Populate results with necessary fields |
632 |
| -
|
633 |
| - :param style: Style objects |
634 |
| - :type style: QGISServerStyle |
635 |
| - :return: |
636 |
| - """ |
637 |
| - try: |
638 |
| - qgis_layer = style.layer_styles.first() |
639 |
| - """:type: geonode.qgis_server.QGISServerLayer""" |
640 |
| - style.layer = qgis_layer.layer |
641 |
| - style.type = 'qml' |
642 |
| - except Exception: |
643 |
| - pass |
644 |
| - return style |
645 |
| - |
646 |
| - def build_filters(self, filters=None, **kwargs): |
647 |
| - """Apply custom filters for layer.""" |
648 |
| - filters = super(QGISStyleResource, self).build_filters( |
649 |
| - filters, **kwargs) |
650 |
| - # Convert layer__ filters into layer_styles__layer__ |
651 |
| - updated_filters = {} |
652 |
| - for key, value in filters.items(): |
653 |
| - key = key.replace('layer__', 'layer_styles__layer__') |
654 |
| - updated_filters[key] = value |
655 |
| - return updated_filters |
656 |
| - |
657 |
| - def build_bundle(self, obj=None, data=None, request=None, **kwargs): |
658 |
| - """Override build_bundle method to add additional info.""" |
659 |
| - |
660 |
| - if obj is None and self._meta.object_class: |
661 |
| - obj = self._meta.object_class() |
662 |
| - |
663 |
| - elif obj: |
664 |
| - obj = self.populate_object(obj) |
665 |
| - |
666 |
| - return Bundle( |
667 |
| - obj=obj, |
668 |
| - data=data, |
669 |
| - request=request, |
670 |
| - **kwargs) |
671 |
| - |
672 |
| - def post_list(self, request, **kwargs): |
673 |
| - """Attempt to redirect to QGIS Server Style management. |
674 |
| -
|
675 |
| - A post method should have the following field: |
676 |
| -
|
677 |
| - name: Slug name of style |
678 |
| - title: Title of style |
679 |
| - style: the style file uploaded |
680 |
| -
|
681 |
| - Also, should have kwargs: |
682 |
| -
|
683 |
| - layername or layer__name: The layer name associated with the style |
684 |
| -
|
685 |
| - or |
686 |
| -
|
687 |
| - layer__id: The layer id associated with the style |
688 |
| -
|
689 |
| - """ |
690 |
| - from geonode.qgis_server.views import qml_style |
691 |
| - |
692 |
| - # Extract layer name information |
693 |
| - POST = request.POST |
694 |
| - FILES = request.FILES |
695 |
| - layername = POST.get('layername') or POST.get('layer__name') |
696 |
| - if not layername: |
697 |
| - layer_id = POST.get('layer__id') |
698 |
| - layer = Layer.objects.get(id=layer_id) |
699 |
| - layername = layer.name |
700 |
| - |
701 |
| - # move style file |
702 |
| - FILES['qml'] = FILES['style'] |
703 |
| - |
704 |
| - response = qml_style(request, layername) |
705 |
| - |
706 |
| - if isinstance(response, TemplateResponse): |
707 |
| - if response.status_code == 201: |
708 |
| - obj = QGISServerStyle.objects.get( |
709 |
| - layer_styles__layer__name=layername, |
710 |
| - name=POST['name']) |
711 |
| - updated_bundle = self.build_bundle(obj=obj, request=request) |
712 |
| - location = self.get_resource_uri(updated_bundle) |
713 |
| - |
714 |
| - if not self._meta.always_return_data: |
715 |
| - return http.HttpCreated(location=location) |
716 |
| - else: |
717 |
| - updated_bundle = self.full_dehydrate(updated_bundle) |
718 |
| - updated_bundle = self.alter_detail_data_to_serialize( |
719 |
| - request, updated_bundle) |
720 |
| - return self.create_response( |
721 |
| - request, updated_bundle, |
722 |
| - response_class=http.HttpCreated, |
723 |
| - location=location) |
724 |
| - else: |
725 |
| - context = response.context_data |
726 |
| - # Check form valid |
727 |
| - style_upload_form = context['style_upload_form'] |
728 |
| - if not style_upload_form.is_valid(): |
729 |
| - raise BadRequest(style_upload_form.errors.as_text()) |
730 |
| - alert_message = context['alert_message'] |
731 |
| - raise BadRequest(alert_message) |
732 |
| - elif isinstance(response, HttpResponse): |
733 |
| - response_class = None |
734 |
| - if response.status_code == 403: |
735 |
| - response_class = http.HttpForbidden |
736 |
| - return self.error_response( |
737 |
| - request, response.content, |
738 |
| - response_class=response_class) |
739 |
| - |
740 |
| - def delete_detail(self, request, **kwargs): |
741 |
| - """Attempt to redirect to QGIS Server Style management.""" |
742 |
| - from geonode.qgis_server.views import qml_style |
743 |
| - style_id = kwargs.get('id') |
744 |
| - |
745 |
| - qgis_style = QGISServerStyle.objects.get(id=style_id) |
746 |
| - layername = qgis_style.layer_styles.first().layer.name |
747 |
| - |
748 |
| - response = qml_style(request, layername, style_name=qgis_style.name) |
749 |
| - |
750 |
| - if isinstance(response, TemplateResponse): |
751 |
| - if response.status_code == 200: |
752 |
| - # style deleted |
753 |
| - return http.HttpNoContent() |
754 |
| - else: |
755 |
| - context = response.context_data |
756 |
| - # Check form valid |
757 |
| - style_upload_form = context['style_upload_form'] |
758 |
| - if not style_upload_form.is_valid(): |
759 |
| - raise BadRequest(style_upload_form.errors.as_text()) |
760 |
| - alert_message = context['alert_message'] |
761 |
| - raise BadRequest(alert_message) |
762 |
| - elif isinstance(response, HttpResponse): |
763 |
| - response_class = None |
764 |
| - if response.status_code == 403: |
765 |
| - response_class = http.HttpForbidden |
766 |
| - return self.error_response( |
767 |
| - request, response.content, |
768 |
| - response_class=response_class) |
769 |
| - |
770 |
| - def delete_list(self, request, **kwargs): |
771 |
| - """Do not allow delete list""" |
772 |
| - return http.HttpForbidden() |
773 |
| - |
774 |
| - |
775 | 598 | class GeoserverStyleResource(ModelResource):
|
776 | 599 | """Styles API for Geoserver backend."""
|
777 | 600 | body = fields.CharField(
|
@@ -844,11 +667,7 @@ def build_bundle(self, obj=None, data=None, request=None, **kwargs):
|
844 | 667 | **kwargs)
|
845 | 668 |
|
846 | 669 |
|
847 |
| -if check_ogc_backend(qgis_server.BACKEND_PACKAGE): |
848 |
| - class StyleResource(QGISStyleResource): |
849 |
| - """Wrapper for Generic Style Resource""" |
850 |
| - pass |
851 |
| -elif check_ogc_backend(geoserver.BACKEND_PACKAGE): |
| 670 | +if check_ogc_backend(geoserver.BACKEND_PACKAGE): |
852 | 671 | class StyleResource(GeoserverStyleResource):
|
853 | 672 | """Wrapper for Generic Style Resource"""
|
854 | 673 | pass
|
|
0 commit comments