Repository: nextcloud/appstore

Issue:
Ditch discussion tag
@georgehrke mentioned that it would be much more useful to have a full category on discourse so that you can mark questions as solved, see https://github.com/nextcloud/calendar/pull/123

We should ditch the discussion tag and instead use the discourse API to create a new category upon creating an app and link to the category instead. This would also improve info.xml compatibility with ownCloud.

@janibonnevier @nickvergessen @LukasReschke @Henni @ChristophWurst @MorrisJobke @nickvergessen 



Discussion:
Fine by me, not using a single topic but multiple is also a good idea.
But I wonder if this should just be the "default". Honestly, I, as an app dev, don't want to have to look in 3 discourse categories and 3 issues trackers.
So maybe it should have an option to disable?

so you can have sub categories. Have apps/[appsname] for example. I suggest to go that route. Disabling it completely is something we could consider allowing later, I'd start without that option.

I hope the **Report problem** and **Request feature** buttons are prominent enough to prevent this kind of issue. I've discussed this issue with @jospoortvliet on IRC and we basically came to the following conclusion:
- People post threads on the forum regardless of if there's a link on the store or not. The news app has one post on the linked discussion which was posted on the forum, 3 other threads were opened in separate threads which means the link on the app store was never used.
- If we find out that the store redirection produces too many bug reports/feature requests we should look into improving the UI, e.g. add another confirmation button that its not a bug report or feature request.
- Scrap the discussion tag for good and go for a category based approach


Resolving patch:
diff --git a/nextcloudappstore/core/api/v1/release/importer.py b/nextcloudappstore/core/api/v1/release/importer.py
--- a/nextcloudappstore/core/api/v1/release/importer.py
+++ b/nextcloudappstore/core/api/v1/release/importer.py
@@ -230,7 +230,6 @@ def __init__(self, release_importer: AppReleaseImporter,
             'user_docs': attribute_importer,
             'admin_docs': attribute_importer,
             'website': attribute_importer,
-            'discussion': attribute_importer,
             'developer_docs': attribute_importer,
             'issue_tracker': attribute_importer,
             'certificate': attribute_importer,
diff --git a/nextcloudappstore/core/migrations/0010_auto_20161013_1635.py b/nextcloudappstore/core/migrations/0010_auto_20161013_1635.py
new file mode 100644
--- /dev/null
+++ b/nextcloudappstore/core/migrations/0010_auto_20161013_1635.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.2 on 2016-10-13 16:35
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0009_auto_20161005_2014'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='appreleasedeletelog',
+            options={'verbose_name': 'App release deletion', 'verbose_name_plural': 'App release deletions'},
+        ),
+        migrations.RemoveField(
+            model_name='app',
+            name='discussion',
+        ),
+    ]
diff --git a/nextcloudappstore/core/models.py b/nextcloudappstore/core/models.py
--- a/nextcloudappstore/core/models.py
+++ b/nextcloudappstore/core/models.py
@@ -76,8 +76,6 @@ class App(TranslatableModel):
     issue_tracker = URLField(max_length=256, blank=True,
                              verbose_name=_('Issue tracker url'))
     website = URLField(max_length=256, blank=True, verbose_name=_('Homepage'))
-    discussion = URLField(max_length=256, blank=True,
-                          verbose_name=_('Discussion'))
     created = DateTimeField(auto_now_add=True, editable=False,
                             verbose_name=_('Created at'))
     last_modified = DateTimeField(auto_now=True, editable=False, db_index=True,


Test patch:
diff --git a/nextcloudappstore/core/api/v1/tests/test_parser.py b/nextcloudappstore/core/api/v1/tests/test_parser.py
--- a/nextcloudappstore/core/api/v1/tests/test_parser.py
+++ b/nextcloudappstore/core/api/v1/tests/test_parser.py
@@ -37,7 +37,6 @@ def test_parse_minimal(self):
             'developer_docs': None,
             'user_docs': None,
             'website': None,
-            'discussion': None,
             'issue_tracker': None,
             'screenshots': [],
             'categories': [{'category': {'id': 'multimedia'}}],
@@ -372,7 +371,6 @@ def test_map_data(self):
             'user_docs': 'https://github.com/owncloud/news/wiki#user'
                          '-documentation',
             'website': 'https://github.com/owncloud/news',
-            'discussion': 'https://help.nextcloud.com/t/news/1',
             'issue_tracker': 'https://github.com/owncloud/news/issues',
             'name': {'de': 'Nachrichten', 'en': 'News'},
             'release': {
diff --git a/nextcloudappstore/core/api/v1/tests/test_release_importer.py b/nextcloudappstore/core/api/v1/tests/test_release_importer.py
--- a/nextcloudappstore/core/api/v1/tests/test_release_importer.py
+++ b/nextcloudappstore/core/api/v1/tests/test_release_importer.py
@@ -84,7 +84,6 @@ def test_full(self):
         self.assertEqual('#This is markdown', app.description)
         app.set_current_language('de')  # fallback
         self.assertEqual('Nachrichten', app.name)
-        self.assertEqual('https://help.nextcloud.com/t/news/1', app.discussion)
         self.assertEqual(
             'Eine Nachrichten App, welche mit [RSS/Atom]('
             'https://en.wikipedia.org/wiki/RSS) umgehen kann',