0.2.3 #99
22 changed files with 289 additions and 175 deletions
|
|
@ -31,6 +31,7 @@ INSTALLED_APPS = [
|
|||
"axes",
|
||||
# app modules
|
||||
"newsreader.accounts",
|
||||
"newsreader.news",
|
||||
"newsreader.news.core",
|
||||
"newsreader.news.collection",
|
||||
]
|
||||
|
|
|
|||
5
src/newsreader/news/apps.py
Normal file
5
src/newsreader/news/apps.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class NewsConfig(AppConfig):
|
||||
name = "news"
|
||||
|
|
@ -10,7 +10,9 @@ class CollectionRule(TimeStampedModel):
|
|||
name = models.CharField(max_length=100)
|
||||
|
||||
url = models.URLField(max_length=1024)
|
||||
website_url = models.URLField(max_length=1024, editable=False, blank=True, null=True)
|
||||
website_url = models.URLField(
|
||||
max_length=1024, editable=False, blank=True, null=True
|
||||
)
|
||||
favicon = models.URLField(blank=True, null=True)
|
||||
|
||||
timezone = models.CharField(
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
</fieldset>
|
||||
|
||||
<fieldset class="form__fieldset import-form__fieldset">
|
||||
<a class="link button button--cancel" href="{% url 'rules' %}">Cancel</a>
|
||||
<a class="link button button--cancel" href="{% url 'news:collection:rules' %}">Cancel</a>
|
||||
<button class="button button--confirm">Import</button>
|
||||
</fieldset>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<section class="section form__section rule-form__section">
|
||||
<fieldset class="form__fieldset rule-form__fieldset">
|
||||
<a class="link button button--cancel" href="{% url 'rules' %}">Cancel</a>
|
||||
<a class="link button button--cancel" href="{% url 'news:collection:rules' %}">Cancel</a>
|
||||
{% block confirm-button %}{% endblock %}
|
||||
</fieldset>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@
|
|||
{% csrf_token %}
|
||||
|
||||
<div class="form__actions">
|
||||
<input type="submit" class="button button--primary" formaction="{% url "rules-enable" %}" formmethod="post" value="{% trans "Enable" %}" />
|
||||
<input type="submit" class="button button--primary" formaction="{% url "rules-disable" %}" formmethod="post" value="{% trans "Disable" %}" />
|
||||
<input type="submit" class="button button--error" formaction="{% url "rules-delete" %}" formmethod="post" value="{% trans "Delete" %}"/>
|
||||
<input type="submit" class="button button--primary" formaction="{% url "news:collection:rules-enable" %}" formmethod="post" value="{% trans "Enable" %}" />
|
||||
<input type="submit" class="button button--primary" formaction="{% url "news:collection:rules-disable" %}" formmethod="post" value="{% trans "Disable" %}" />
|
||||
<input type="submit" class="button button--error" formaction="{% url "news:collection:rules-delete" %}" formmethod="post" value="{% trans "Delete" %}"/>
|
||||
</div>
|
||||
<table class="table rules-table">
|
||||
<thead class="table__header rules-table__header">
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
<td class="table__item rules-table__item" title="{{ rule.succeeded }}">{{ rule.succeeded }}</td>
|
||||
<td class="table__item rules-table__item" title="{{ rule.enabled }}">{{ rule.enabled }}</td>
|
||||
<td class="table__item rules-table__item">
|
||||
<a class="link" href="{% url "rule-update" rule.pk %}"><i class="gg-pen"></i></a>
|
||||
<a class="link" href="{% url "news:collection:rule-update" rule.pk %}"><i class="gg-pen"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,9 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
def test_simple(self):
|
||||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-detail", args=[rule.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -29,7 +31,9 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
self.assertTrue("category" in data)
|
||||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(reverse("api:rules-detail", args=[100]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-detail", args=[100])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
|
@ -38,7 +42,9 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
def test_post(self):
|
||||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.post(reverse("api:rules-detail", args=[rule.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -48,7 +54,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"name": "The guardian"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -64,7 +70,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", category=old_category, user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"category": absolute_url}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -77,7 +83,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"id": 44}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -91,7 +97,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"category": category.pk}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -105,7 +111,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"name": "BBC", "url": "https://www.bbc.co.uk"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -117,7 +123,9 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
def test_delete(self):
|
||||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.delete(reverse("api:rules-detail", args=[rule.pk]))
|
||||
response = self.client.delete(
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 204)
|
||||
|
||||
|
|
@ -127,7 +135,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"name": "The guardian"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -139,7 +147,7 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=other_user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-detail", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk]),
|
||||
data=json.dumps({"name": "The guardian"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -152,7 +160,9 @@ class CollectionRuleDetailViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=20, read=False, rule=rule)
|
||||
PostFactory.create_batch(size=20, read=True, rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:rules-detail", args=[rule.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-detail", args=[rule.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -169,14 +179,18 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
|
||||
PostFactory.create_batch(size=20, read=False, rule=rule)
|
||||
|
||||
response = self.client.post(reverse("api:rules-read", args=[rule.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 201)
|
||||
self.assertEquals(data["unread"], 0)
|
||||
|
||||
def test_rule_unknown(self):
|
||||
response = self.client.post(reverse("api:rules-read", args=[101]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:collection:rules-read", args=[101])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
|
|
@ -187,7 +201,9 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
|
||||
PostFactory.create_batch(size=20, read=False, rule=rule)
|
||||
|
||||
response = self.client.post(reverse("api:rules-read", args=[rule.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -197,7 +213,9 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
|
||||
PostFactory.create_batch(size=20, read=False, rule=rule)
|
||||
|
||||
response = self.client.post(reverse("api:rules-read", args=[rule.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
self.assertEquals(Post.objects.filter(read=False).count(), 20)
|
||||
|
|
@ -205,7 +223,9 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
def test_get(self):
|
||||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-read", args=[rule.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
||||
|
|
@ -213,7 +233,7 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-read", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk]),
|
||||
data=json.dumps({"name": "Not possible"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -224,7 +244,7 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(name="BBC", user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:rules-read", args=[rule.pk]),
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk]),
|
||||
data=json.dumps({"name": "Not possible"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -234,6 +254,8 @@ class CollectionRuleReadTestCase(TestCase):
|
|||
def test_delete(self):
|
||||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.delete(reverse("api:rules-read", args=[rule.pk]))
|
||||
response = self.client.delete(
|
||||
reverse("api:news:collection:rules-read", args=[rule.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class RuleListViewTestCase(TestCase):
|
|||
def test_simple(self):
|
||||
CollectionRuleFactory.create_batch(size=3, user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-list"))
|
||||
response = self.client.get(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -50,7 +50,7 @@ class RuleListViewTestCase(TestCase):
|
|||
),
|
||||
]
|
||||
|
||||
response = self.client.get(reverse("api:rules-list"))
|
||||
response = self.client.get(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -65,7 +65,9 @@ class RuleListViewTestCase(TestCase):
|
|||
def test_pagination_count(self):
|
||||
CollectionRuleFactory.create_batch(size=80, user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-list"), {"count": 30})
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-list"), {"count": 30}
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -73,7 +75,7 @@ class RuleListViewTestCase(TestCase):
|
|||
self.assertEquals(len(data["results"]), 30)
|
||||
|
||||
def test_empty(self):
|
||||
response = self.client.get(reverse("api:rules-list"))
|
||||
response = self.client.get(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -89,7 +91,7 @@ class RuleListViewTestCase(TestCase):
|
|||
data = {"name": "BBC", "url": "https://www.bbc.co.uk", "category": category.pk}
|
||||
|
||||
response = self.client.post(
|
||||
reverse("api:rules-list"),
|
||||
reverse("api:news:collection:rules-list"),
|
||||
data=json.dumps(data),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -99,21 +101,21 @@ class RuleListViewTestCase(TestCase):
|
|||
self.assertEquals(data["detail"], 'Method "POST" not allowed.')
|
||||
|
||||
def test_patch(self):
|
||||
response = self.client.patch(reverse("api:rules-list"))
|
||||
response = self.client.patch(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PATCH" not allowed.')
|
||||
|
||||
def test_put(self):
|
||||
response = self.client.put(reverse("api:rules-list"))
|
||||
response = self.client.put(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PUT" not allowed.')
|
||||
|
||||
def test_delete(self):
|
||||
response = self.client.delete(reverse("api:rules-list"))
|
||||
response = self.client.delete(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -124,7 +126,7 @@ class RuleListViewTestCase(TestCase):
|
|||
|
||||
CollectionRuleFactory.create_batch(size=3, user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-list"))
|
||||
response = self.client.get(reverse("api:news:collection:rules-list"))
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -132,7 +134,7 @@ class RuleListViewTestCase(TestCase):
|
|||
other_user = UserFactory()
|
||||
CollectionRuleFactory.create_batch(size=3, user=other_user)
|
||||
|
||||
response = self.client.get(reverse("api:rules-list"))
|
||||
response = self.client.get(reverse("api:news:collection:rules-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -151,7 +153,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=5, rule=rule)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -166,7 +168,8 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=80, rule=rule)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}), {"count": 30}
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
{"count": 30},
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -178,7 +181,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory.create(user=self.user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -187,7 +190,9 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
self.assertEquals(len(data["results"]), 0)
|
||||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(reverse("api:rules-nested-posts", kwargs={"pk": 0}))
|
||||
response = self.client.get(
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": 0})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
|
|
@ -195,7 +200,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory.create(user=self.user)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -208,7 +213,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory.create(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -221,7 +226,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory.create(user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -234,7 +239,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory.create(user=self.user)
|
||||
|
||||
response = self.client.delete(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -249,7 +254,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=self.user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -259,7 +264,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=other_user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -294,7 +299,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
]
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -315,7 +320,7 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=5, rule=other_rule)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -335,7 +340,8 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}), {"read": "false"}
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
{"read": "false"},
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
|
|
@ -354,7 +360,8 @@ class NestedRuleListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:rules-nested-posts", kwargs={"pk": rule.pk}), {"read": "true"}
|
||||
reverse("api:news:collection:rules-nested-posts", kwargs={"pk": rule.pk}),
|
||||
{"read": "true"},
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
|
||||
from django.conf import settings
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
import pytz
|
||||
|
||||
from newsreader.accounts.tests.factories import UserFactory
|
||||
from newsreader.news.collection.models import CollectionRule
|
||||
from newsreader.news.collection.tests.factories import CollectionRuleFactory
|
||||
from newsreader.news.core.tests.factories import CategoryFactory
|
||||
|
||||
|
||||
class CollectionRuleBulkViewTestCase:
|
||||
def setUp(self):
|
||||
self.redirect_url = reverse("rules")
|
||||
self.redirect_url = reverse("news:collection:rules")
|
||||
|
||||
self.user = UserFactory()
|
||||
self.client.force_login(self.user)
|
||||
|
|
@ -24,7 +20,7 @@ class CollectionRuleBulkEnableViewTestCase(CollectionRuleBulkViewTestCase, TestC
|
|||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.url = reverse("rules-enable")
|
||||
self.url = reverse("news:collection:rules-enable")
|
||||
|
||||
self.rules = CollectionRuleFactory.create_batch(
|
||||
size=5, user=self.user, enabled=False
|
||||
|
|
@ -88,7 +84,8 @@ class CollectionRuleBulkEnableViewTestCase(CollectionRuleBulkViewTestCase, TestC
|
|||
)
|
||||
|
||||
self.assertRedirects(
|
||||
response, f"{reverse('accounts:login')}?next={reverse('rules-enable')}"
|
||||
response,
|
||||
f"{reverse('accounts:login')}?next={reverse('news:collection:rules-enable')}",
|
||||
)
|
||||
|
||||
rules = CollectionRule.objects.filter(user=self.user)
|
||||
|
|
@ -102,7 +99,7 @@ class CollectionRuleBulkDisableViewTestCase(CollectionRuleBulkViewTestCase, Test
|
|||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.url = reverse("rules-disable")
|
||||
self.url = reverse("news:collection:rules-disable")
|
||||
|
||||
self.rules = CollectionRuleFactory.create_batch(
|
||||
size=5, user=self.user, enabled=True
|
||||
|
|
@ -166,7 +163,8 @@ class CollectionRuleBulkDisableViewTestCase(CollectionRuleBulkViewTestCase, Test
|
|||
)
|
||||
|
||||
self.assertRedirects(
|
||||
response, f"{reverse('accounts:login')}?next={reverse('rules-disable')}"
|
||||
response,
|
||||
f"{reverse('accounts:login')}?next={reverse('news:collection:rules-disable')}",
|
||||
)
|
||||
|
||||
rules = CollectionRule.objects.filter(user=self.user)
|
||||
|
|
@ -180,7 +178,7 @@ class CollectionRuleBulkDeleteViewTestCase(CollectionRuleBulkViewTestCase, TestC
|
|||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.url = reverse("rules-delete")
|
||||
self.url = reverse("news:collection:rules-delete")
|
||||
|
||||
self.rules = CollectionRuleFactory.create_batch(size=5, user=self.user)
|
||||
|
||||
|
|
@ -236,7 +234,8 @@ class CollectionRuleBulkDeleteViewTestCase(CollectionRuleBulkViewTestCase, TestC
|
|||
)
|
||||
|
||||
self.assertRedirects(
|
||||
response, f"{reverse('accounts:login')}?next={reverse('rules-delete')}"
|
||||
response,
|
||||
f"{reverse('accounts:login')}?next={reverse('news:collection:rules-delete')}",
|
||||
)
|
||||
|
||||
rules = CollectionRule.objects.filter(user=self.user)
|
||||
|
|
|
|||
|
|
@ -5,12 +5,9 @@ from django.test import TestCase
|
|||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
import pytz
|
||||
|
||||
from newsreader.accounts.tests.factories import UserFactory
|
||||
from newsreader.news.collection.models import CollectionRule
|
||||
from newsreader.news.collection.tests.factories import CollectionRuleFactory
|
||||
from newsreader.news.core.tests.factories import CategoryFactory
|
||||
|
||||
|
||||
class OPMLImportTestCase(TestCase):
|
||||
|
|
@ -39,7 +36,9 @@ class OPMLImportTestCase(TestCase):
|
|||
self.assertEquals(len(rules), 4)
|
||||
|
||||
def test_existing_rules(self):
|
||||
CollectionRuleFactory(url="http://www.engadget.com/rss-full.xml", user=self.user)
|
||||
CollectionRuleFactory(
|
||||
url="http://www.engadget.com/rss-full.xml", user=self.user
|
||||
)
|
||||
CollectionRuleFactory(url="https://news.ycombinator.com/rss", user=self.user)
|
||||
CollectionRuleFactory(
|
||||
url="http://feeds.feedburner.com/Techcrunch", user=self.user
|
||||
|
|
@ -61,7 +60,9 @@ class OPMLImportTestCase(TestCase):
|
|||
self.assertEquals(len(rules), 8)
|
||||
|
||||
def test_skip_existing_rules(self):
|
||||
CollectionRuleFactory(url="http://www.engadget.com/rss-full.xml", user=self.user)
|
||||
CollectionRuleFactory(
|
||||
url="http://www.engadget.com/rss-full.xml", user=self.user
|
||||
)
|
||||
CollectionRuleFactory(url="https://news.ycombinator.com/rss", user=self.user)
|
||||
CollectionRuleFactory(
|
||||
url="http://feeds.feedburner.com/Techcrunch", user=self.user
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class CollectionRuleViewMixin:
|
|||
|
||||
|
||||
class CollectionRuleDetailMixin:
|
||||
success_url = reverse_lazy("rules")
|
||||
success_url = reverse_lazy("news:collection:rules")
|
||||
form_class = CollectionRuleForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
|
@ -69,7 +69,7 @@ class CollectionRuleBulkView(FormView):
|
|||
form_class = CollectionRuleBulkForm
|
||||
|
||||
def get_redirect_url(self):
|
||||
return reverse("rules")
|
||||
return reverse("news:collection:rules")
|
||||
|
||||
def get_success_url(self):
|
||||
return self.get_redirect_url()
|
||||
|
|
@ -121,7 +121,7 @@ class CollectionRuleBulkDeleteView(CollectionRuleBulkView):
|
|||
|
||||
class OPMLImportView(FormView):
|
||||
form_class = OPMLImportForm
|
||||
success_url = reverse_lazy("rules")
|
||||
success_url = reverse_lazy("news:collection:rules")
|
||||
template_name = "collection/import.html"
|
||||
|
||||
def form_valid(self, form):
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
<section class="section form__section category-form__section">
|
||||
<fieldset class="form__fieldset category-form__fieldset">
|
||||
<a class="link button button--cancel" href="{% url 'categories' %}">Cancel</a>
|
||||
<a class="link button button--cancel" href="{% url 'news:core:categories' %}">Cancel</a>
|
||||
{% block confirm-button %}{% endblock %}
|
||||
</fieldset>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
def test_simple(self):
|
||||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-detail", args=[category.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -24,7 +26,9 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
self.assertTrue("name" in data)
|
||||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(reverse("api:categories-detail", args=[100]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-detail", args=[100])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
|
@ -34,7 +38,7 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("api:categories-detail", args=[category.pk])
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -45,7 +49,7 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:categories-detail", args=[category.pk]),
|
||||
reverse("api:news:core:categories-detail", args=[category.pk]),
|
||||
data=json.dumps({"name": "Interesting posts"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -58,7 +62,7 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:categories-detail", args=[category.pk]),
|
||||
reverse("api:news:core:categories-detail", args=[category.pk]),
|
||||
data=json.dumps({"id": 44}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -71,7 +75,7 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:categories-detail", args=[category.pk]),
|
||||
reverse("api:news:core:categories-detail", args=[category.pk]),
|
||||
data=json.dumps({"name": "Interesting posts"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -84,7 +88,7 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.delete(
|
||||
reverse("api:categories-detail", args=[category.pk])
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 204)
|
||||
|
|
@ -94,7 +98,9 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
|
||||
category = CategoryFactory(user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-detail", args=[category.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -102,7 +108,9 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
other_user = UserFactory()
|
||||
category = CategoryFactory(user=other_user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-detail", args=[category.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -114,7 +122,9 @@ class CategoryDetailViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=20, read=False, rule=unread_rule)
|
||||
PostFactory.create_batch(size=20, read=True, rule=read_rule)
|
||||
|
||||
response = self.client.get(reverse("api:categories-detail", args=[category.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-detail", args=[category.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -133,7 +143,9 @@ class CategoryReadTestCase(TestCase):
|
|||
for rule in CollectionRuleFactory.create_batch(size=5, category=category)
|
||||
]
|
||||
|
||||
response = self.client.post(reverse("api:categories-read", args=[category.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:core:categories-read", args=[category.pk])
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -142,7 +154,9 @@ class CategoryReadTestCase(TestCase):
|
|||
self.assertEquals(data["id"], category.pk)
|
||||
|
||||
def test_category_unknown(self):
|
||||
response = self.client.post(reverse("api:categories-read", args=[101]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:core:categories-read", args=[101])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
|
|
@ -157,7 +171,9 @@ class CategoryReadTestCase(TestCase):
|
|||
)
|
||||
]
|
||||
|
||||
response = self.client.post(reverse("api:categories-read", args=[category.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:core:categories-read", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -172,14 +188,18 @@ class CategoryReadTestCase(TestCase):
|
|||
)
|
||||
]
|
||||
|
||||
response = self.client.post(reverse("api:categories-read", args=[category.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:core:categories-read", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
def test_get(self):
|
||||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-read", args=[category.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:categories-read", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
||||
|
|
@ -187,7 +207,7 @@ class CategoryReadTestCase(TestCase):
|
|||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:categories-read", args=[category.pk]),
|
||||
reverse("api:news:core:categories-read", args=[category.pk]),
|
||||
data=json.dumps({"name": "Not possible"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -198,7 +218,7 @@ class CategoryReadTestCase(TestCase):
|
|||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:categories-read", args=[category.pk]),
|
||||
reverse("api:news:core:categories-read", args=[category.pk]),
|
||||
data=json.dumps({"name": "Not possible"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -209,7 +229,7 @@ class CategoryReadTestCase(TestCase):
|
|||
category = CategoryFactory(name="Clickbait", user=self.user)
|
||||
|
||||
response = self.client.delete(
|
||||
reverse("api:categories-read", args=[category.pk])
|
||||
reverse("api:news:core:categories-read", args=[category.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
def test_simple(self):
|
||||
CategoryFactory.create_batch(size=3, user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-list"))
|
||||
response = self.client.get(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -48,7 +48,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
),
|
||||
]
|
||||
|
||||
response = self.client.get(reverse("api:categories-list"))
|
||||
response = self.client.get(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -58,7 +58,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
self.assertEquals(data[2]["id"], categories[0].pk)
|
||||
|
||||
def test_empty(self):
|
||||
response = self.client.get(reverse("api:categories-list"))
|
||||
response = self.client.get(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -68,7 +68,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
data = {"name": "Tech"}
|
||||
|
||||
response = self.client.post(
|
||||
reverse("api:categories-list"),
|
||||
reverse("api:news:core:categories-list"),
|
||||
data=json.dumps(data),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -78,21 +78,21 @@ class CategoryListViewTestCase(TestCase):
|
|||
self.assertEquals(response_data["detail"], 'Method "POST" not allowed.')
|
||||
|
||||
def test_patch(self):
|
||||
response = self.client.patch(reverse("api:categories-list"))
|
||||
response = self.client.patch(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PATCH" not allowed.')
|
||||
|
||||
def test_put(self):
|
||||
response = self.client.put(reverse("api:categories-list"))
|
||||
response = self.client.put(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PUT" not allowed.')
|
||||
|
||||
def test_delete(self):
|
||||
response = self.client.delete(reverse("api:categories-list"))
|
||||
response = self.client.delete(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -103,7 +103,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
|
||||
CategoryFactory.create_batch(size=3, user=self.user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-list"))
|
||||
response = self.client.get(reverse("api:news:core:categories-list"))
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ class CategoryListViewTestCase(TestCase):
|
|||
other_user = UserFactory()
|
||||
CategoryFactory.create_batch(size=3, user=other_user)
|
||||
|
||||
response = self.client.get(reverse("api:categories-list"))
|
||||
response = self.client.get(reverse("api:news:core:categories-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -128,7 +128,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
rules = CollectionRuleFactory.create_batch(size=5, category=category)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -145,7 +145,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -155,14 +155,14 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": 100})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": 100})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
def test_post(self):
|
||||
response = self.client.post(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": 100}),
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": 100}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -175,7 +175,9 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-rules", kwargs={"pk": category.pk}
|
||||
),
|
||||
data=json.dumps({"name": "test"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -188,7 +190,9 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-rules", kwargs={"pk": category.pk}
|
||||
),
|
||||
data=json.dumps({"name": "test"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -201,7 +205,9 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.delete(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-rules", kwargs={"pk": category.pk}
|
||||
),
|
||||
content_type="application/json",
|
||||
)
|
||||
data = response.json()
|
||||
|
|
@ -216,7 +222,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
rules = CollectionRuleFactory.create_batch(size=5, category=category)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -228,7 +234,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
rules = CollectionRuleFactory.create_batch(size=5, category=category)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -242,7 +248,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
]
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -265,7 +271,7 @@ class NestedCategoryListViewTestCase(TestCase):
|
|||
]
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-rules", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
|
|
@ -292,7 +298,7 @@ class NestedCategoryPostView(TestCase):
|
|||
}
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -310,7 +316,7 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -326,7 +332,7 @@ class NestedCategoryPostView(TestCase):
|
|||
)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -337,14 +343,14 @@ class NestedCategoryPostView(TestCase):
|
|||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": 100})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": 100})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
def test_post(self):
|
||||
response = self.client.post(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": 100}),
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": 100}),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -357,7 +363,9 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-posts", kwargs={"pk": category.pk}
|
||||
),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -370,7 +378,9 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-posts", kwargs={"pk": category.pk}
|
||||
),
|
||||
data=json.dumps({}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -383,7 +393,9 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.delete(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-posts", kwargs={"pk": category.pk}
|
||||
),
|
||||
content_type="application/json",
|
||||
)
|
||||
data = response.json()
|
||||
|
|
@ -397,7 +409,7 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=self.user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -407,7 +419,7 @@ class NestedCategoryPostView(TestCase):
|
|||
category = CategoryFactory.create(user=other_user)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
|
@ -477,7 +489,7 @@ class NestedCategoryPostView(TestCase):
|
|||
]
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -514,7 +526,7 @@ class NestedCategoryPostView(TestCase):
|
|||
]
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
reverse("api:news:core:categories-nested-posts", kwargs={"pk": category.pk})
|
||||
)
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -533,7 +545,9 @@ class NestedCategoryPostView(TestCase):
|
|||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-posts", kwargs={"pk": category.pk}
|
||||
),
|
||||
{"read": "false"},
|
||||
)
|
||||
|
||||
|
|
@ -554,7 +568,9 @@ class NestedCategoryPostView(TestCase):
|
|||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("api:categories-nested-posts", kwargs={"pk": category.pk}),
|
||||
reverse(
|
||||
"api:news:core:categories-nested-posts", kwargs={"pk": category.pk}
|
||||
),
|
||||
{"read": "true"},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -34,7 +36,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
self.assertTrue("remoteIdentifier" in data)
|
||||
|
||||
def test_not_known(self):
|
||||
response = self.client.get(reverse("api:posts-detail", args=[100]))
|
||||
response = self.client.get(reverse("api:news:core:posts-detail", args=[100]))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
|
@ -46,7 +48,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.post(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.post(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -59,7 +63,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(title="This is clickbait for sure", rule=rule)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"title": "This title is very accurate"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -75,7 +79,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(title="This is clickbait for sure", rule=rule)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"id": 44}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -94,8 +98,14 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(title="This is clickbait for sure", rule=rule)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"rule": reverse("api:rules-detail", args=[new_rule.pk])}),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps(
|
||||
{
|
||||
"rule": reverse(
|
||||
"api:news:collection:rules-detail", args=[new_rule.pk]
|
||||
)
|
||||
}
|
||||
),
|
||||
content_type="application/json",
|
||||
)
|
||||
data = response.json()
|
||||
|
|
@ -111,7 +121,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(title="This is clickbait for sure", rule=rule)
|
||||
|
||||
response = self.client.put(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"title": "This title is very accurate"}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -126,7 +136,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.delete(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.delete(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -138,7 +150,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=self.user, category=None)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -150,7 +164,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -159,7 +175,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=other_user, category=None)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -170,7 +188,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -181,7 +201,9 @@ class PostDetailViewTestCase(TestCase):
|
|||
)
|
||||
post = PostFactory(rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-detail", args=[post.pk]))
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-detail", args=[post.pk])
|
||||
)
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -192,7 +214,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(rule=rule, read=False)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"read": True}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
@ -208,7 +230,7 @@ class PostDetailViewTestCase(TestCase):
|
|||
post = PostFactory(rule=rule, read=True)
|
||||
|
||||
response = self.client.patch(
|
||||
reverse("api:posts-detail", args=[post.pk]),
|
||||
reverse("api:news:core:posts-detail", args=[post.pk]),
|
||||
data=json.dumps({"read": False}),
|
||||
content_type="application/json",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class PostListViewTestCase(TestCase):
|
|||
)
|
||||
PostFactory.create_batch(size=3, rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -58,7 +58,7 @@ class PostListViewTestCase(TestCase):
|
|||
),
|
||||
]
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -77,7 +77,7 @@ class PostListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=80, rule=rule)
|
||||
page_size = 50
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"), {"count": 50})
|
||||
response = self.client.get(reverse("api:news:core:posts-list"), {"count": 50})
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -85,7 +85,7 @@ class PostListViewTestCase(TestCase):
|
|||
self.assertEquals(len(data["results"]), page_size)
|
||||
|
||||
def test_empty(self):
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -96,28 +96,28 @@ class PostListViewTestCase(TestCase):
|
|||
self.assertEquals(len(data["results"]), 0)
|
||||
|
||||
def test_post(self):
|
||||
response = self.client.post(reverse("api:posts-list"))
|
||||
response = self.client.post(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "POST" not allowed.')
|
||||
|
||||
def test_patch(self):
|
||||
response = self.client.patch(reverse("api:posts-list"))
|
||||
response = self.client.patch(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PATCH" not allowed.')
|
||||
|
||||
def test_put(self):
|
||||
response = self.client.put(reverse("api:posts-list"))
|
||||
response = self.client.put(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
self.assertEquals(data["detail"], 'Method "PUT" not allowed.')
|
||||
|
||||
def test_delete(self):
|
||||
response = self.client.delete(reverse("api:posts-list"))
|
||||
response = self.client.delete(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 405)
|
||||
|
|
@ -128,7 +128,7 @@ class PostListViewTestCase(TestCase):
|
|||
|
||||
PostFactory.create_batch(size=3, rule=CollectionRuleFactory(user=self.user))
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ class PostListViewTestCase(TestCase):
|
|||
size=3, rule=CollectionRuleFactory(user=self.user, category=category)
|
||||
)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
|
||||
self.assertEquals(response.status_code, 403)
|
||||
|
||||
|
|
@ -151,7 +151,7 @@ class PostListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=other_user, category=None)
|
||||
PostFactory.create_batch(size=3, rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -166,7 +166,7 @@ class PostListViewTestCase(TestCase):
|
|||
size=3, rule=CollectionRuleFactory(user=other_user, category=category)
|
||||
)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -183,7 +183,7 @@ class PostListViewTestCase(TestCase):
|
|||
)
|
||||
PostFactory.create_batch(size=3, rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -195,7 +195,7 @@ class PostListViewTestCase(TestCase):
|
|||
rule = CollectionRuleFactory(user=self.user, category=None)
|
||||
PostFactory.create_batch(size=3, rule=rule)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"))
|
||||
response = self.client.get(reverse("api:news:core:posts-list"))
|
||||
data = response.json()
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
|
@ -211,7 +211,9 @@ class PostListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=10, rule=rule, read=False)
|
||||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"), {"read": "false"})
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-list"), {"read": "false"}
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
@ -230,7 +232,9 @@ class PostListViewTestCase(TestCase):
|
|||
PostFactory.create_batch(size=20, rule=rule, read=False)
|
||||
PostFactory.create_batch(size=10, rule=rule, read=True)
|
||||
|
||||
response = self.client.get(reverse("api:posts-list"), {"read": "true"})
|
||||
response = self.client.get(
|
||||
reverse("api:news:core:posts-list"), {"read": "true"}
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
posts = data["results"]
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class CategoryCreateViewTestCase(CategoryViewTestCase, TestCase):
|
|||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.url = reverse("category-create")
|
||||
self.url = reverse("news:core:category-create")
|
||||
|
||||
def test_creation(self):
|
||||
rules = CollectionRuleFactory.create_batch(size=4, user=self.user)
|
||||
|
|
@ -88,7 +88,7 @@ class CategoryUpdateViewTestCase(CategoryViewTestCase, TestCase):
|
|||
super().setUp()
|
||||
|
||||
self.category = CategoryFactory(name="category", user=self.user)
|
||||
self.url = reverse("category-update", args=[self.category.pk])
|
||||
self.url = reverse("news:core:category-update", args=[self.category.pk])
|
||||
|
||||
def test_name_change(self):
|
||||
data = {"name": "durp", "user": self.user.pk}
|
||||
|
|
@ -172,7 +172,7 @@ class CategoryUpdateViewTestCase(CategoryViewTestCase, TestCase):
|
|||
other_category.rules.set([*other_rules])
|
||||
|
||||
data = {"name": "durp", "user": other_user.pk}
|
||||
other_url = reverse("category-update", args=[other_category.pk])
|
||||
other_url = reverse("news:core:category-update", args=[other_category.pk])
|
||||
response = self.client.post(other_url, data)
|
||||
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
|
@ -218,7 +218,7 @@ class CategoryUpdateViewTestCase(CategoryViewTestCase, TestCase):
|
|||
def test_unique_together(self):
|
||||
other_category = CategoryFactory(name="other category", user=self.user)
|
||||
|
||||
url = reverse("category-update", args=[other_category.pk])
|
||||
url = reverse("news:core:category-update", args=[other_category.pk])
|
||||
data = {"name": "category", "user": self.user.pk, "rules": []}
|
||||
response = self.client.post(url, data)
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ from newsreader.news.core.views import (
|
|||
|
||||
|
||||
urlpatterns = [
|
||||
path("", login_required(NewsView.as_view()), name="index"),
|
||||
path("categories/", login_required(CategoryListView.as_view()), name="categories"),
|
||||
path(
|
||||
"categories/<int:pk>/",
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class CategoryViewMixin:
|
|||
|
||||
|
||||
class CategoryDetailMixin:
|
||||
success_url = reverse_lazy("categories")
|
||||
success_url = reverse_lazy("news:core:categories")
|
||||
form_class = CategoryForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
|
|
|||
19
src/newsreader/news/urls.py
Normal file
19
src/newsreader/news/urls.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
from django.urls import include, path
|
||||
|
||||
from newsreader.news.collection.urls import endpoints as collection_endpoints
|
||||
from newsreader.news.collection.urls import urlpatterns as collection_urls
|
||||
from newsreader.news.core.urls import endpoints as core_endpoints
|
||||
from newsreader.news.core.urls import urlpatterns as core_urls
|
||||
|
||||
|
||||
app_name = "news"
|
||||
|
||||
urlpatterns = [
|
||||
path("core/", include((core_urls, "core"))),
|
||||
path("collection/", include((collection_urls, "collection"))),
|
||||
]
|
||||
|
||||
endpoints = [
|
||||
path("", include((core_endpoints, "core"))),
|
||||
path("", include((collection_endpoints, "collection"))),
|
||||
]
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
<ol>
|
||||
{% if request.user.is_authenticated %}
|
||||
<li class="nav__item"><a href="{% url 'index' %}">Home</a></li>
|
||||
<li class="nav__item"><a href="{% url 'categories' %}">Categories</a></li>
|
||||
<li class="nav__item"><a href="{% url 'rules' %}">Feeds</a></li>
|
||||
<li class="nav__item"><a href="{% url 'news:core:categories' %}">Categories</a></li>
|
||||
<li class="nav__item"><a href="{% url 'news:collection:rules' %}">Feeds</a></li>
|
||||
<li class="nav__item"><a href="#">Settings</a></li>
|
||||
<li class="nav__item"><a href="{% url 'accounts:logout' %}">Logout</a></li>
|
||||
{% else %}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,26 @@
|
|||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.urls import include, path
|
||||
|
||||
from drf_yasg import openapi
|
||||
from drf_yasg.views import get_schema_view
|
||||
|
||||
from newsreader.accounts.urls import urlpatterns as login_urls
|
||||
from newsreader.news.collection.urls import endpoints as collection_endpoints
|
||||
from newsreader.news.collection.urls import urlpatterns as collection_patterns
|
||||
from newsreader.news.core.urls import endpoints as core_endpoints
|
||||
from newsreader.news.core.urls import urlpatterns as core_patterns
|
||||
from newsreader.news.core.views import NewsView
|
||||
from newsreader.news.urls import endpoints as news_endpoints
|
||||
from newsreader.news.urls import urlpatterns as news_patterns
|
||||
|
||||
|
||||
apipatterns = [
|
||||
path("api/", include(core_endpoints)),
|
||||
path("api/", include(collection_endpoints)),
|
||||
]
|
||||
api_patterns = [path("api/", include((news_endpoints, "news")))]
|
||||
|
||||
schema_info = openapi.Info(title="Newsreader API", default_version="v1")
|
||||
schema_view = get_schema_view(schema_info, patterns=apipatterns)
|
||||
schema_view = get_schema_view(schema_info, patterns=api_patterns)
|
||||
|
||||
urlpatterns = [
|
||||
path("", include(core_patterns)),
|
||||
path("", include(collection_patterns)),
|
||||
path("", include((apipatterns, "api")), name="api"),
|
||||
path("", login_required(NewsView.as_view()), name="index"),
|
||||
path("", include((news_patterns, "news"))),
|
||||
path("", include((api_patterns, "api"))),
|
||||
path("accounts/", include((login_urls, "accounts")), name="accounts"),
|
||||
path("admin/", admin.site.urls, name="admin"),
|
||||
path("api/", schema_view.with_ui("swagger"), name="api"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue