HEX
Server: LiteSpeed
System: Linux CentOS-79-64-minimal 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: vishn3436 (5293)
PHP: 8.0.15
Disabled: NONE
Upload Files
File: //data/ownphotos/ownphotos/urls.py
"""ownphotos URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url, include
from django.urls import path
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from rest_framework import routers
from rest_framework.permissions import IsAuthenticated, IsAdminUser, AllowAny
from api import views
from nextcloud import views as nextcloud_views

# from rest_framework_jwt.views import obtain_jwt_token
# from rest_framework_jwt.views import refresh_jwt_token
# from rest_framework_jwt.views import verify_jwt_token

from api.views import media_access

import ipdb

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer, TokenRefreshSerializer
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView


class TokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super(TokenObtainPairSerializer, cls).get_token(user)

        # Add custom claims
        # ipdb.set_trace()
        token['name'] = user.get_username()
        token['is_admin'] = user.is_superuser
        token['first_name'] = user.first_name
        token['last_name'] = user.last_name
        token['scan_directory'] = user.scan_directory
        token['nextcloud_server_address'] = user.nextcloud_server_address
        token['nextcloud_username'] = user.nextcloud_username
        # ...

        return token


class TokenObtainPairView(TokenObtainPairView):
    serializer_class = TokenObtainPairSerializer

    def post(self, request, *args, **kwargs):
        # ipdb.set_trace()
        response = super(TokenObtainPairView, self).post(
            request, *args, **kwargs)
        response.set_cookie('jwt', response.data['access'])
        response.set_cookie('test', 'obtain')
        response['Access-Control-Allow-Credentials'] = True
        return response


class TokenRefreshView(TokenRefreshView):
    serializer_class = TokenRefreshSerializer

    def post(self, request, *args, **kwargs):
        # ipdb.set_trace()
        response = super(TokenRefreshView, self).post(request, *args, **kwargs)
        response.set_cookie('jwt', response.data['access'])
        response.set_cookie('test', 'refresh')
        response['Access-Control-Allow-Credentials'] = True
        return response


router = routers.DefaultRouter()

router.register(r'api/user', views.UserViewSet, base_name='user')
router.register(r'api/manage/user', views.ManageUserViewSet)

router.register(
    r'api/albums/auto/list',
    views.AlbumAutoListViewSet,
    base_name='album_auto')
router.register(
    r'api/albums/date/list',
    views.AlbumDateListViewSet,
    base_name='album_date')
router.register(
    r'api/albums/date/photohash/list',
    views.AlbumDateListWithPhotoHashViewSet,
    base_name='album_date')
router.register(
    r'api/albums/person/list',
    views.AlbumPersonListViewSet,
    base_name='person')
router.register(
    r'api/albums/thing/list',
    views.AlbumThingListViewSet,
    base_name='album_thing')
router.register(
    r'api/albums/place/list',
    views.AlbumPlaceListViewSet,
    base_name='album_place')
router.register(
    r'api/albums/user/list',
    views.AlbumUserListViewSet,
    base_name='album_user')

router.register(
    r'api/albums/user/edit',
    views.AlbumUserEditViewSet,
    base_name='album_user')

router.register(
    r'api/albums/user/shared/tome',
    views.SharedToMeAlbumUserListViewSet,
    base_name='album_user')
router.register(
    r'api/albums/user/shared/fromme',
    views.SharedFromMeAlbumUserListViewSet,
    base_name='album_user')

router.register(
    r'api/albums/auto', views.AlbumAutoViewSet, base_name='album_auto')
router.register(
    r'api/albums/person', views.AlbumPersonViewSet, base_name='person')
router.register(r'api/albums/date', views.AlbumDateViewSet)
router.register(
    r'api/albums/thing', views.AlbumThingViewSet, base_name='album_thing')
router.register(
    r'api/albums/place', views.AlbumPlaceViewSet, base_name='album_place')
router.register(
    r'api/albums/user', views.AlbumUserViewSet, base_name='album_user')

router.register(r'api/persons', views.PersonViewSet, base_name='person')

router.register(
    r'api/photos/shared/tome',
    views.SharedToMePhotoSuperSimpleListViewSet,
    base_name='photo')
router.register(
    r'api/photos/shared/fromme',
    views.SharedFromMePhotoSuperSimpleListViewSet2,
    base_name='photo')

router.register(
    r'api/photos/notimestamp/list',
    views.NoTimestampPhotoHashListViewSet,
    base_name='photo')

router.register(r'api/photos/edit', views.PhotoEditViewSet, base_name='photo')

router.register(
    r'api/photos/recentlyadded',
    views.RecentlyAddedPhotoListViewSet,
    base_name='photo')
router.register(
    r'api/photos/simplelist', views.PhotoSimpleListViewSet, base_name='photo')
router.register(
    r'api/photos/list', views.PhotoSuperSimpleListViewSet, base_name='photo')
router.register(
    r'api/photos/favorites', views.FavoritePhotoListViewset, base_name='photo')
router.register(
    r'api/photos/hidden', views.HiddenPhotoListViewset, base_name='photo')
router.register(
    r'api/photos/searchlist',
    views.PhotoSuperSimpleSearchListViewSet,
    base_name='photo')

router.register(
    r'api/photos/public', views.PublicPhotoListViewset, base_name='photo')

router.register(r'api/photos', views.PhotoViewSet, base_name='photo')

router.register(
    r'api/faces/inferred/list',
    views.FaceInferredListViewSet,
    base_name='face')

router.register(
    r'api/faces/labeled/list', views.FaceLabeledListViewSet, base_name='face')

router.register(r'api/faces/list', views.FaceListViewSet, base_name='face')

router.register(
    r'api/faces/inferred', views.FaceInferredViewSet, base_name='face')
router.register(
    r'api/faces/labeled', views.FaceLabeledViewSet, base_name='face')
router.register(r'api/faces', views.FaceViewSet)

router.register(r'api/jobs', views.LongRunningJobViewSet)

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^admin/', admin.site.urls),
    url(r'^api/sitesettings', views.SiteSettingsView.as_view()),
    url(r'^api/dirtree', views.RootPathTreeView.as_view()),
    url(r'^api/labelfaces', views.SetFacePersonLabel.as_view()),
    url(r'^api/deletefaces', views.DeleteFaces.as_view()),
    url(r'^api/photosedit/favorite', views.SetPhotosFavorite.as_view()),
    url(r'^api/photosedit/hide', views.SetPhotosHidden.as_view()),
    url(r'^api/photosedit/makepublic', views.SetPhotosPublic.as_view()),
    url(r'^api/photosedit/share', views.SetPhotosShared.as_view()),
    url(r'^api/photosedit/generateim2txt',
        views.GeneratePhotoCaption.as_view()),
    url(r'^api/useralbum/share', views.SetUserAlbumShared.as_view()),
    url(r'^api/facetolabel', views.FaceToLabelView.as_view()),
    url(r'^api/trainfaces', views.TrainFaceView.as_view()),
    url(r'^api/clusterfaces', views.ClusterFaceView.as_view()),
    url(r'^api/socialgraph', views.SocialGraphView.as_view()),
    url(r'^api/egograph', views.EgoGraphView.as_view()),
    url(r'^api/scanphotos', views.ScanPhotosView.as_view()),
    url(r'^api/autoalbumgen', views.AutoAlbumGenerateView.as_view()),
    url(r'^api/autoalbumtitlegen', views.RegenerateAutoAlbumTitles.as_view()),
    url(r'^api/searchtermexamples', views.SearchTermExamples.as_view()),
    url(r'^api/locationsunburst', views.LocationSunburst.as_view()),
    url(r'^api/locationtimeline', views.LocationTimeline.as_view()),
    url(r'^api/stats', views.StatsView.as_view()),
    url(r'^api/locclust', views.LocationClustersView.as_view()),
    url(r'^api/photocountrycounts', views.PhotoCountryCountsView.as_view()),
    url(r'^api/photomonthcounts', views.PhotoMonthCountsView.as_view()),
    url(r'^api/wordcloud', views.SearchTermWordCloudView.as_view()),

    url(r'^api/similar', views.SearchSimilarPhotosView.as_view()),

    url(r'^api/watcher/photo', views.IsPhotosBeingAddedView.as_view()),
    url(r'^api/watcher/autoalbum', views.IsAutoAlbumsBeingProcessed.as_view()),
    url(r'^api/auth/token/obtain/$', TokenObtainPairView.as_view()),
    url(r'^api/auth/token/refresh/$', TokenRefreshView.as_view()),
    #     url(r'^media/(?P<path>.*)', media_access, name='media'),

    url(r'^media/(?P<path>.*)/(?P<fname>.*)',
        views.MediaAccessFullsizeOriginalView.as_view(),
        name='media'),

    url(r'^api/rqavailable/$', views.QueueAvailabilityView.as_view()),
    url(r'^api/rqjobstat/$', views.RQJobStatView.as_view()),
    url(r'^api/rqjoblist/$', views.ListAllRQJobsView.as_view()),

    url(r'^api/nextcloud/listdir', nextcloud_views.ListDir.as_view()),
    url(r'^api/nextcloud/scanphotos',
        nextcloud_views.ScanPhotosView.as_view()),

    #     url(r'^api/token-auth/', obtain_jwt_token),
    #     url(r'^api/token-refresh/', refresh_jwt_token),
    #     url(r'^api/token-verify/', verify_jwt_token),
]
# ] + static(
#     settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += [url(r'^api/django-rq/', include('django_rq.urls'))]
# urlpatterns += [url(r'^silk/', include('silk.urls', namespace='silk'))]