#3351 Fix redirect when editing tags and error message when adding a duplicate tag
Merged 5 years ago by pingou. Opened 5 years ago by pingou.

file modified
+5 -1
@@ -590,7 +590,11 @@ 

              flask.flash(error_message, 'error')

  

          if not error:

+             known_tags = [tag.tag for tag in repo.tags_colored]

              for idx, tag in enumerate(tags):

+                 if tag in known_tags:

+                     flask.flash('Duplicated tag: %s' % tag, 'error')

+                     break

                  try:

                      pagure.lib.new_tag(

                          flask.g.session,
@@ -606,7 +610,7 @@ 

  

      return flask.redirect(flask.url_for(

          'ui_ns.view_settings', username=username, repo=repo.name,

-         namespace=namespace))

+         namespace=namespace) + '#projecttags-tab')

  

  

  @UI_NS.route('/<repo>/droptag/', methods=['POST'])

@@ -3523,7 +3523,7 @@ 

  

              # Valid query

              data = {

-                 'tag': ['red', 'green'],

+                 'tag': ['red1', 'green'],

                  'tag_description': ['lorem ipsum', 'sample description'],

                  'tag_color': ['#ff0000', '#00ff00'],

                  'csrf_token': csrf_token,
@@ -3544,7 +3544,7 @@ 

                  output_text)

              self.assertIn(

                  '<span class="badge badge-info" '

-                 'style="background-color:#ff0000">red</span>\n'

+                 'style="background-color:#ff0000">red1</span>\n'

                  '                              &nbsp;'

                  '<span class="text-muted">lorem ipsum</span>', output_text)

              self.assertIn(
@@ -3581,11 +3581,44 @@ 

                  '<input type="hidden" value="red" name="tag" />',

                  output_text)

  

+             # Invalid query - Tag already known

+             data = {

+                 'tag': ['red2'],

+                 'tag_color': ['#000'],

+                 'tag_description': [''],

+                 'csrf_token': csrf_token,

+             }

+             output = self.app.post(

+                 '/test/update/tags', data=data, follow_redirects=True)

+             self.assertEqual(output.status_code, 200)

+             output_text = output.get_data(as_text=True)

+             self.assertIn(

+                 '<title>Settings - test - Pagure</title>', output_text)

+             self.assertIn(

+                 '<span class="badge badge-info" '

+                 'style="background-color:#ff0000">red2</span>\n'

+                 '                              &nbsp;'

+                 '<span class="text-muted"></span>', output_text)

+             self.assertIn(

+                 '<input type="hidden" value="green" name="tag" />',

+                 output_text)

+             self.assertIn(

+                 '<span class="badge badge-info" '

+                 'style="background-color:#ff0000">red3</span>\n'

+                 '                              &nbsp;'

+                 '<span class="text-muted"></span>', output_text)

+             self.assertIn(

+                 '<input type="hidden" value="red" name="tag" />',

+                 output_text)

+             self.assertIn(

+                 '</button>\n                      Duplicated tag: red2',

+                 output_text)

+ 

          # After update, list tags

          tags = pagure.lib.get_tags_of_project(self.session, repo)

          self.assertEqual(

              sorted([tag.tag for tag in tags]),

-             ['blue', 'green', 'red', 'red2', 'red3'])

+             ['blue', 'green', 'red', 'red1', 'red2', 'red3'])

  

      @patch('pagure.lib.git.update_git')

      @patch('pagure.lib.notify.send_email')

no initial comment

rebased onto 25b77b9

5 years ago

Thanks for the review :)

Pull-Request has been merged by pingou

5 years ago