Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	apps/collection/urls/common.py
This commit is contained in:
Anatoly 2019-08-28 11:50:15 +03:00
commit 0f6147c1dc
45 changed files with 344 additions and 129 deletions

View File

@ -6,6 +6,6 @@ from account.views import common as views
app_name = 'account' app_name = 'account'
urlpatterns = [ urlpatterns = [
path('user/', views.UserView.as_view(), name='user_get_update'), path('user/', views.UserView.as_view(), name='user-get-update'),
path('device/', views.FCMDeviceViewSet.as_view(), name='fcm_device_create'),
] ]

View File

@ -6,5 +6,5 @@ from advertisement.views import web as views
app_name = 'advertisement' app_name = 'advertisement'
urlpatterns = [ urlpatterns = [
path('list/', views.AdvertisementListView.as_view(), name='advertisements_list') path('', views.AdvertisementListView.as_view(), name='list')
] ]

View File

@ -6,36 +6,7 @@ from collection.views import common as views
app_name = 'collection' app_name = 'collection'
urlpatterns = [ urlpatterns = [
path('list/', views.CollectionListView.as_view(), path('', views.CollectionListView.as_view(), name='list'),
name='collections_list'), path('items/', views.CollectionItemListView.as_view(), name='collection-items-list'),
path('create/', views.CollectionCreateView.as_view(), path('guides/', views.GuideListView.as_view(), name='guides-list'),
name='collection_create'),
# path('<int:pk>/', views.CollectionRetrieveView.as_view(),
# name='collection_retrieve'),
# path('<int:pk>/delete/', views.CollectionDestroyView.as_view(),
# name='collection_destroy'),
# path('<int:pk>/update/', views.CollectionUpdateView.as_view(),
# name='collection_update'),
path('collection_items/', views.CollectionItemListView.as_view(),
name='collection_items_list'),
# path('collection_items/create/', views.CollectionItemCreateView.as_view(),
# name='collection_items_create'),
# path('collection_items/<int:pk>/', views.CollectionItemRetrieveView.as_view(),
# name='collection_items_retrieve'),
# path('collection_items/<int:pk>/delete/', views.CollectionDestroyView.as_view(),
# name='collection_items_destroy'),
# path('collection_items/<int:pk>/update/', views.CollectionItemUpdateView.as_view(),
# name='collection_items_update'),
path('guides/', views.GuideListView.as_view(),
name='guides_list'),
# path('guides/create/', views.GuideCreateView.as_view(),
# name='guide_create'),
# path('guides/<int:pk>/', views.GuideRetrieveView.as_view(),
# name='guide_retrieve'),
# path('guides/<int:pk>/delete/', views.GuideDestroyView.as_view(),
# name='guide_destroy'),
# path('guides/<int:pk>/update/', views.GuideUpdateView.as_view(),
# name='guide_update'),
] ]

View File

@ -1,4 +1,26 @@
"""Establishment admin conf.""" """Establishment admin conf."""
from django.contrib import admin from django.contrib import admin
from establishment import models
from django.contrib.contenttypes.admin import GenericTabularInline
from main.models import Award
# Register your models here.
@admin.register(models.EstablishmentType)
class EstablishmentTypeAdmin(admin.ModelAdmin):
"""EstablishmentType admin."""
@admin.register(models.EstablishmentSubType)
class EstablishmentSubTypeAdmin(admin.ModelAdmin):
"""EstablishmentSubType admin."""
class AwardInline(GenericTabularInline):
model = Award
extra = 0
@admin.register(models.Establishment)
class EstablishmentAdmin(admin.ModelAdmin):
"""Establishment admin."""
inlines = [AwardInline, ]

View File

@ -5,6 +5,7 @@ from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from location.models import Address from location.models import Address
from utils.models import ProjectBaseMixin, ImageMixin, LocaleManagerMixin from utils.models import ProjectBaseMixin, ImageMixin, LocaleManagerMixin
from django.contrib.contenttypes import fields as generic
# todo: establishment type&subtypes check # todo: establishment type&subtypes check
@ -91,6 +92,7 @@ class Establishment(ProjectBaseMixin, ImageMixin):
price_level = models.PositiveIntegerField(blank=True, null=True, price_level = models.PositiveIntegerField(blank=True, null=True,
default=None, default=None,
verbose_name=_('Price level')) verbose_name=_('Price level'))
awards = generic.GenericRelation(to='main.Award')
objects = EstablishmentManager() objects = EstablishmentManager()

View File

@ -6,6 +6,5 @@ from . import views
app_name = 'gallery' app_name = 'gallery'
urlpatterns = [ urlpatterns = [
path('upload/', views.ImageUploadView.as_view(), path('upload/', views.ImageUploadView.as_view(), name='upload-image')
name='upload_image')
] ]

View File

@ -6,25 +6,15 @@ from location import views
app_name = 'location' app_name = 'location'
urlpatterns = [ urlpatterns = [
path('country/', views.CountryListView.as_view(), name='country-list'), path('addresses/', views.AddressListView.as_view(), name='address-list'),
path('country/<int:pk>/', views.CountryRetrieveView.as_view(), path('addresses/<int:pk>/', views.AddressRetrieveView.as_view(), name='address-retrieve'),
name='country-retrieve'),
path('region/', views.RegionListView.as_view(), name='region_list'), path('cities/', views.CityListView.as_view(), name='city-list'),
path('region/create/', views.RegionCreateView.as_view(), name='region_create'), path('cities/<int:pk>/', views.CityRetrieveView.as_view(), name='city-retrieve'),
path('region/<int:pk>/', views.RegionRetrieveView.as_view(), name='region_retrieve'),
path('region/<int:pk>/delete/', views.RegionDestroyView.as_view(), name='region_destroy'),
path('region/<int:pk>/update/', views.RegionUpdateView.as_view(), name='region_update'),
path('city/', views.CityListView.as_view(), name='city_list'), path('countries/', views.CountryListView.as_view(), name='country-list'),
path('city/create/', views.CityCreateView.as_view(), name='city_create'), path('countries/<int:pk>/', views.CountryRetrieveView.as_view(), name='country-retrieve'),
path('city/<int:pk>/', views.CityRetrieveView.as_view(), name='city_retrieve'),
path('city/<int:pk>/delete/', views.CityDestroyView.as_view(), name='city_destroy'),
path('city/<int:pk>/update/', views.CityUpdateView.as_view(), name='city_update'),
path('address/', views.AddressListView.as_view(), name='address_list'), path('regions/', views.RegionListView.as_view(), name='region-list'),
path('address/create/', views.AddressCreateView.as_view(), name='address_create'), path('regions/<int:pk>/', views.RegionRetrieveView.as_view(), name='region-retrieve'),
path('address/<int:pk>/', views.AddressRetrieveView.as_view(), name='address_retrieve'),
path('address/<int:pk>/delete/', views.AddressDestroyView.as_view(), name='address_destroy'),
path('address/<int:pk>/update/', views.AddressUpdateView.as_view(), name='address_update'),
] ]

View File

@ -11,3 +11,15 @@ class SiteSettingsAdmin(admin.ModelAdmin):
@admin.register(models.Feature) @admin.register(models.Feature)
class FeatureAdmin(admin.ModelAdmin): class FeatureAdmin(admin.ModelAdmin):
"""Feature admin conf.""" """Feature admin conf."""
@admin.register(models.AwardType)
class AwardTypeAdmin(admin.ModelAdmin):
"""Award type admin conf."""
@admin.register(models.Award)
class AwardAdmin(admin.ModelAdmin):
"""Award admin conf."""
# list_display = ['id', '__str__']
# list_display_links = ['id', '__str__']

View File

@ -0,0 +1,35 @@
# Generated by Django 2.2.4 on 2019-08-27 13:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('location', '0005_auto_20190822_1144'),
('contenttypes', '0002_remove_content_type_name'),
('main', '0006_auto_20190822_1118'),
]
operations = [
migrations.CreateModel(
name='AwardType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='name')),
('country', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='location.Country', verbose_name='country')),
],
),
migrations.CreateModel(
name='Award',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='', max_length=255, verbose_name='title')),
('vintage_year', models.CharField(default='', max_length=255, verbose_name='vintage year')),
('object_id', models.PositiveIntegerField()),
('award_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='main.AwardType')),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
],
),
]

View File

@ -0,0 +1,14 @@
# Generated by Django 2.2.4 on 2019-08-27 14:33
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('main', '0007_award_awardtype'),
('main', '0007_sitefeature_main'),
]
operations = [
]

View File

@ -0,0 +1,17 @@
# Generated by Django 2.2.4 on 2019-08-28 07:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('main', '0008_merge_20190827_1433'),
]
operations = [
migrations.RemoveField(
model_name='award',
name='title',
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.4 on 2019-08-28 07:05
import django.contrib.postgres.fields.jsonb
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('main', '0009_remove_award_title'),
]
operations = [
migrations.AddField(
model_name='award',
name='title',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=None, help_text='{"en":"some text"}', null=True, verbose_name='title'),
),
]

View File

@ -1,9 +1,10 @@
"""Main app models.""" """Main app models."""
from django.conf import settings from django.conf import settings
from django.contrib.contenttypes import fields as generic
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.contrib.contenttypes.models import ContentType
from location.models import Country from location.models import Country
from main import methods from main import methods
from utils.models import ProjectBaseMixin from utils.models import ProjectBaseMixin
@ -182,3 +183,32 @@ class SiteFeature(ProjectBaseMixin):
verbose_name = _('Site feature') verbose_name = _('Site feature')
verbose_name_plural = _('Site features') verbose_name_plural = _('Site features')
unique_together = ('site_settings', 'feature') unique_together = ('site_settings', 'feature')
class Award(models.Model):
"""Award model."""
award_type = models.ForeignKey('main.AwardType', on_delete=models.CASCADE)
title = JSONField(
_('title'), null=True, blank=True,
default=None, help_text='{"en":"some text"}')
vintage_year = models.CharField(_('vintage year'), max_length=255, default='')
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def __str__(self):
title = 'None'
if self.title and 'en' in self.title:
title = self.title['en']
return f'id:{self.id}-{title}'
class AwardType(models.Model):
"""AwardType model."""
country = models.ForeignKey(
'location.Country', verbose_name=_('country'), on_delete=models.CASCADE)
name = models.CharField(_('name'), max_length=255)
def __str__(self):
return self.name

View File

@ -68,3 +68,15 @@ class SiteSettingsSerializer(serializers.ModelSerializer):
# 'site_settings', # 'site_settings',
# 'feature', # 'feature',
# ) # )
class AwardSerializer(serializers.ModelSerializer):
"""Award serializer."""
class Meta:
model = models.Award
fields = [
# 'title',
'award_type',
'vintage_year',
]

View File

@ -5,16 +5,8 @@ from main import views
app = 'main' app = 'main'
urlpatterns = [ urlpatterns = [
path('determine-site/', views.DetermineSiteView.as_view(), path('determine-site/', views.DetermineSiteView.as_view(), name='determine-site'),
name='determine-site'), path('site-settings/<subdomain>/', views.SiteSettingsView.as_view(), name='site-settings'),
path('site-settings/<subdomain>/', views.SiteSettingsView.as_view(), path('awards/', views.AwardView.as_view(), name='awards_list'),
name='site-settings', ), path('awards/<int:pk>/', views.AwardRetrieveView.as_view(), name='awards_retrieve'),
# path('features/', views.FeaturesLCView.as_view(),
# name='features-lc'),
# path('features/<int:pk>/', views.FeaturesRUDView.as_view(),
# name='features-rud'),
# path('site-features/', views.SiteFeaturesLCView.as_view(),
# name='site-features-lc'),
# path('site-features/<int:pk>/', views.SiteFeaturesRUDView.as_view(),
# name='site-features-rud'),
] ]

View File

@ -60,3 +60,17 @@ class SiteSettingsView(generics.RetrieveAPIView):
# class SiteFeaturesRUDView(SiteFeaturesViewMixin, # class SiteFeaturesRUDView(SiteFeaturesViewMixin,
# generics.RetrieveUpdateDestroyAPIView): # generics.RetrieveUpdateDestroyAPIView):
# """Site features RUD.""" # """Site features RUD."""
class AwardView(generics.ListAPIView):
"""Awards list view."""
serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all()
permission_classes = (permissions.AllowAny, )
class AwardRetrieveView(generics.RetrieveAPIView):
"""Award retrieve view."""
serializer_class = serializers.AwardSerializer
queryset = models.Award.objects.all()
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

View File

@ -1,6 +1,7 @@
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.utils.translation import get_language
from utils.models import (ProjectBaseMixin, BaseAttributes, from utils.models import (ProjectBaseMixin, BaseAttributes,
LocaleManagerMixin, ImageMixin) LocaleManagerMixin, ImageMixin)
@ -80,3 +81,8 @@ class News(BaseAttributes):
def __str__(self): def __str__(self):
return f'news: {self.id}' return f'news: {self.id}'
@property
def test_trans(self):
language = get_language()
return self.title.get(language)

View File

@ -6,10 +6,7 @@ from news.views import common
app_name = 'news' app_name = 'news'
urlpatterns = [ urlpatterns = [
path('', common.NewsList.as_view(), name='news_list'), path('', common.NewsListView.as_view(), name='list'),
path('create/', common.NewsCreate.as_view(), name='news_create'), path('<int:pk>/', common.NewsDetailView.as_view(), name='rud'),
path('<int:pk>/', common.NewsDetail.as_view(), name='news_detail'), path('type/', common.NewsTypeListView.as_view(), name='type'),
path('<int:pk>/update/', common.NewsUpdate.as_view(), name='news_update'),
path('<int:pk>/delete/', common.NewsDelete.as_view(), name='news_delete'),
path('type/', common.NewsTypeList.as_view(), name='news_type'),
] ]

View File

@ -16,7 +16,7 @@ class NewsViewMixin(JWTGenericViewMixin):
return News.objects.annotate_localized_fields(locale=self.request.locale) return News.objects.annotate_localized_fields(locale=self.request.locale)
class NewsList(NewsViewMixin, JWTListAPIView): class NewsListView(NewsViewMixin, JWTListAPIView):
"""News list view.""" """News list view."""
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.AllowAny, )
serializer_class = serializers.NewsSerializer serializer_class = serializers.NewsSerializer
@ -30,32 +30,20 @@ class NewsList(NewsViewMixin, JWTListAPIView):
.order_by('-is_highlighted', '-created') .order_by('-is_highlighted', '-created')
class NewsCreate(generics.CreateAPIView): # class NewsCreateView(generics.CreateAPIView):
"""News list view.""" # """News list view."""
queryset = News.objects.all() # queryset = News.objects.all()
permission_classes = (permissions.IsAuthenticated, ) # permission_classes = (permissions.IsAuthenticated, )
serializer_class = serializers.NewsCreateUpdateSerializer # serializer_class = serializers.NewsCreateUpdateSerializer
class NewsDetail(NewsViewMixin, generics.RetrieveAPIView): class NewsDetailView(NewsViewMixin, generics.RetrieveAPIView):
"""News detail view.""" """News detail view."""
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
serializer_class = serializers.NewsSerializer serializer_class = serializers.NewsSerializer
class NewsDelete(generics.DestroyAPIView): class NewsTypeListView(generics.ListAPIView):
"""News delete view."""
queryset = News.objects.all()
permission_classes = (permissions.IsAuthenticated, )
class NewsUpdate(NewsViewMixin, generics.UpdateAPIView):
"""News update view."""
permission_classes = (permissions.IsAuthenticated, )
serializer_class = serializers.NewsCreateUpdateSerializer
class NewsTypeList(generics.ListAPIView):
"""NewsType list view.""" """NewsType list view."""
serializer_class = serializers.NewsTypeSerializer serializer_class = serializers.NewsTypeSerializer
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.AllowAny, )

View File

@ -6,6 +6,5 @@ from partner.views import common as views
app_name = 'partner' app_name = 'partner'
urlpatterns = [ urlpatterns = [
path('list/', views.PartnerListView.as_view(), path('', views.PartnerListView.as_view(), name='list')
name='partner_list')
] ]

View File

3
apps/products/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

8
apps/products/apps.py Normal file
View File

@ -0,0 +1,8 @@
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class ProductsConfig(AppConfig):
"""Products model."""
name = 'products'
verbose_name = _('products')

View File

63
apps/products/models.py Normal file
View File

@ -0,0 +1,63 @@
# from django.contrib.postgres.fields import JSONField
# from django.db import models
# from django.utils.translation import gettext_lazy as _
#
# from utils.models import BaseAttributes
#
#
# class ProductManager(models.Manager):
# """Product manager."""
#
#
# class ProductQuerySet(models.QuerySet):
# """Product queryset."""
#
#
# class Product(BaseAttributes):
# """Product models."""
# name = models.CharField(_('name'), max_length=255)
# country = models.ForeignKey('location.Country', on_delete=models.CASCADE)
# region = models.ForeignKey('location.Region', on_delete=models.CASCADE)
# # ASK: What is the "subregion"
#
# description = JSONField(_('description'))
# characteristics = JSONField(_('characteristics'))
# metadata_values = JSONField(_('metadata_values'))
# # common_relations_id
# # product_region_id
# code = models.CharField(_('code'), max_length=255)
# available = models.BooleanField(_('available'))
#
# # dealer_type
# # target_scope
# # target_type
# # rank
# # excluding_tax_unit_price
# # column_21
# # currencies_id
# # vintage
# # producer_price
# # producer_description
# # annual_produced_quantity
# # production_method_description
# # unit_name
# # unit
# # unit_values
# # organic_source
# # certificates
# # establishments_id
# # restrictions
# #
# objects = ProductManager.from_queryset(ProductQuerySet)()
#
# class Meta:
# verbose_name = _('product')
# verbose_name_plural = _('products')
#
#
# class ProductType(models.Model):
# """ProductType model."""
#
# class Meta:
# verbose_name_plural = _('product types')
# verbose_name = _('product type')

View File

View File

@ -0,0 +1 @@
from rest_framework import serializers

View File

View File

3
apps/products/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

View File

View File

View File

View File

View File

View File

View File

@ -0,0 +1 @@
# Create your views here.

View File

View File

@ -5,12 +5,9 @@ from translation import views
app_name = 'translation' app_name = 'translation'
urlpatterns = [ urlpatterns = [
path('languages/', views.LanguageListCreateView.as_view(), path('languages/', views.LanguageListView.as_view(), name='languages'),
name='languages'), path('languages/<int:pk>/', views.LanguageRetrieveView.as_view(), name='language'),
path('languages/<int:pk>/', views.LanguageRetrieveUpdateDestroyView.as_view(), path('site/', views.SiteInterfaceDictionaryView.as_view(), name='site-interface'),
name='language'), path('site/<int:pk>/', views.SiteInterfaceDictionaryRetrieveView.as_view(),
path('site/', views.SiteInterfaceDictionaryView.as_view(),
name='site-interface'),
path('site/<int:pk>/', views.SiteInterfaceDictionaryRUDView.as_view(),
name='site-interface-rud'), name='site-interface-rud'),
] ]

View File

@ -14,15 +14,14 @@ class LanguageViewMixin(generics.GenericAPIView):
# Views # Views
class LanguageListCreateView(LanguageViewMixin, generics.ListCreateAPIView): class LanguageListView(LanguageViewMixin, generics.ListAPIView):
"""List view for model Language""" """List view for model Language"""
pagination_class = None pagination_class = None
permission_classes = (permissions.IsAuthenticatedOrReadOnly, ) permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
class LanguageRetrieveUpdateDestroyView(LanguageViewMixin, class LanguageRetrieveView(LanguageViewMixin, generics.RetrieveAPIView):
generics.RetrieveUpdateDestroyAPIView):
"""Retrieve, Update, Destroy view for model Language""" """Retrieve, Update, Destroy view for model Language"""
@ -37,7 +36,7 @@ class SiteInterfaceDictionaryMixin:
class SiteInterfaceDictionaryView(JWTGenericViewMixin, class SiteInterfaceDictionaryView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin, SiteInterfaceDictionaryMixin,
generics.ListCreateAPIView): generics.ListAPIView):
"""Site interface dictionary LC view.""" """Site interface dictionary LC view."""
pagination_class = None pagination_class = None
@ -46,9 +45,9 @@ class SiteInterfaceDictionaryView(JWTGenericViewMixin,
filter_fields = ['page', 'keywords'] filter_fields = ['page', 'keywords']
class SiteInterfaceDictionaryRUDView(JWTGenericViewMixin, class SiteInterfaceDictionaryRetrieveView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin, SiteInterfaceDictionaryMixin,
generics.RetrieveUpdateDestroyAPIView): generics.RetrieveAPIView):
"""Site interface dictionary RUD view.""" """Site interface dictionary RUD view."""
permission_classes = (permissions.AllowAny,) permission_classes = (permissions.AllowAny,)

View File

@ -20,7 +20,7 @@ from django.urls import path, include, re_path
from drf_yasg import openapi from drf_yasg import openapi
from drf_yasg.views import get_schema_view from drf_yasg.views import get_schema_view
from rest_framework import permissions from rest_framework import permissions
from account.views.common import FCMDeviceViewSet
# Docs urls # Docs urls
schema_view = get_schema_view( schema_view = get_schema_view(
@ -48,22 +48,13 @@ urlpatterns_doc = [
name='schema-redoc'), name='schema-redoc'),
] ]
# API urls
urlpatterns_auth = [
path('api/auth/', include('authorization.urls.common')),
]
api_urlpatterns = [ api_urlpatterns = [
path('gallery/', include(('gallery.urls', 'gallery'), path('auth/', include('authorization.urls.common')),
namespace='gallery')), path('device/', FCMDeviceViewSet.as_view(), name='fcm-device-create'),
path('location/', include(('location.urls', 'location'), path('web/', include(('project.urls.web', 'web'), namespace='web')),
namespace='location')), path('back/', include(('project.urls.back', 'back'), namespace='back')),
path('main/', include(('main.urls', 'main'), path('mobile/', include(('project.urls.mobile', 'mobile'), namespace='mobile')),
namespace='main')),
path('translation/', include(('translation.urls', 'translation'),
namespace='translation')),
path('web/', include(('project.urls.web', 'web'),
namespace='web')),
] ]
urlpatterns = [ urlpatterns = [
@ -72,9 +63,7 @@ urlpatterns = [
] ]
urlpatterns = urlpatterns + \ urlpatterns = urlpatterns + \
urlpatterns_auth + \
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG: if settings.DEBUG:
urlpatterns.extend(urlpatterns_doc) urlpatterns.extend(urlpatterns_doc)

14
project/urls/back.py Normal file
View File

@ -0,0 +1,14 @@
from django.urls import path, include
app_name = 'back'
urlpatterns = [
path('gallery/', include(('gallery.urls', 'gallery'),
namespace='gallery')),
# path('account/', include('account.urls.web')),
# path('advertisement/', include('advertisement.urls.web')),
# path('collection/', include('collection.urls.web')),
# path('establishments/', include('establishment.urls.web')),
# path('news/', include('news.urls.web')),
# path('partner/', include('partner.urls.web')),
]

12
project/urls/mobile.py Normal file
View File

@ -0,0 +1,12 @@
from django.urls import path, include
app_name = 'mobile'
urlpatterns = [
# path('account/', include('account.urls.web')),
# path('advertisement/', include('advertisement.urls.web')),
# path('collection/', include('collection.urls.web')),
# path('establishments/', include('establishment.urls.web')),
# path('news/', include('news.urls.web')),
# path('partner/', include('partner.urls.web')),
]

View File

@ -24,4 +24,10 @@ urlpatterns = [
path('establishments/', include('establishment.urls.web')), path('establishments/', include('establishment.urls.web')),
path('news/', include('news.urls.web')), path('news/', include('news.urls.web')),
path('partner/', include('partner.urls.web')), path('partner/', include('partner.urls.web')),
path('location/', include(('location.urls', 'location'),
namespace='location')),
path('main/', include(('main.urls', 'main'),
namespace='main')),
path('translation/', include(('translation.urls', 'translation'),
namespace='translation')),
] ]