#3798 Contact information added to Errors, fixes #3372
Merged 5 years ago by pingou. Opened 5 years ago by marykatefain.
marykatefain/pagure contact-admin  into  master

@@ -97,7 +97,7 @@ 

  ### or other

  BLACKLISTED_PROJECTS = [

      'static', 'pv', 'releases', 'new', 'api', 'settings',

-     'logout', 'login', 'users', 'groups', 'projects']

+     'logout', 'login', 'users', 'groups', 'projects', 'about']

  

  ### IP addresses allowed to access the internal endpoints

  ### These endpoints are used by the milter and are security sensitive, thus

file modified
+9 -1
@@ -836,7 +836,7 @@ 

  

      [

          'static', 'pv', 'releases', 'new', 'api', 'settings',

-         'logout', 'login', 'users', 'groups'

+         'logout', 'login', 'users', 'groups', 'about'

      ]

  

  
@@ -1126,6 +1126,14 @@ 

  .. note: the welcome screen currently does not work with the `local`

           authentication.

  

+ ADMIN_EMAIL

+ ~~~~~~~~~~~

+ 

+ This configuration key allows you to change the default administrator email

+ which is displayed on the "about" page. It can also be used elsewhere.

+ 

+ Defaults to: ``root@localhost.localdomain``

+ 

  

  USER_NAMESPACE

  ~~~~~~~~~~~~~~

file modified
+19 -1
@@ -148,7 +148,7 @@ 

  ######################

  

  An optional Jinja macro that defines the welcome message that is shown

- above the tabs on the Browse Pages (Projects, Users, and Groups). The 

+ above the tabs on the Browse Pages (Projects, Users, and Groups). The

  select parameter is a string with the name of the page being shown

  Example:

  
@@ -187,3 +187,21 @@ 

              </div>

          </div>

      {% endmacro %}

+ 

+ 

+ `about_page()` macro

+ ######################

+ 

+ A Jinja macro that defines the content of the About page (available at /about). You may want to replace the links to contact links for your own instance. Example:

+ 

+ ::

+ 

+     {% macro about_page() %}

+         <div class="container mt-5">

+             <h1>About</h1>

+             <p>This is an instance of Pagure, a git forge.</p>

+             <p>If you experience a bug or security concern, please <a href="https://pagure.io/pagure/issues">submit an issue</a>.</p>

+             <p>You may also post questions to the Pagure Development list by emailing: <a href="mailto:pagure-devel@lists.pagure.io">pagure-devel@lists.pagure.io</a> or <a href="https://lists.pagure.io/admin/lists/pagure-devel.lists.pagure.io/">subscribe to the list</a>.</p>

+             <p><a href="https://lists.pagure.io/admin/lists/pagure-announce.lists.pagure.io/">Subscribe to announcements</a> about Pagure.</p>

+         </div>

+     {% endmacro %}

@@ -29,6 +29,9 @@ 

  # working with `local` auth)

  INSTANCE_NAME = "Pagure"

  

+ # Provide an email to contact an instance Administrator

+ ADMIN_EMAIL = "root@localhost.localdomain"

+ 

  # url to datagrepper (optional):

  # DATAGREPPER_URL = 'https://apps.fedoraproject.org/datagrepper'

  # DATAGREPPER_CATEGORY = 'pagure'

file modified
+1 -1
@@ -91,7 +91,7 @@ 

        if ( !text || text === "" ) {

          text = '<p> An error occured when uploading your file. Could it be '

            + 'that it exceeds the maximum limit allowed? </p>'

-           + '<p>Please contact an admin if this problem persist or is '

+           + '<p>Please <a href="/about">contact an admin</a> if this problem persist or is '

            + 'blocking you. Thanks! </p>';

        }

        var _elt = $('<div title="Error">' + text + '</div>');

@@ -0,0 +1,11 @@ 

+ {% extends "master.html" %}

+ 

+ {% block title %}About this Pagure Instance{% endblock %}

+ 

+ {% block content %}

+ 

+   <div class="container mt-5">

+     {{theme.about_page()}}

+   </div>

+ 

+ {% endblock %}

@@ -14,6 +14,7 @@ 

        <p>With the message:</p>

        <div class="card-block">

        <p>{{ error.description }}</p>

+       <p><a href="/about">Contact us</a> to submit an issue or get help.</p>

        </div>

        {% endif %}

      </div>

@@ -37,6 +37,7 @@ 

              <div class="d-flex justify-content-center align-items-center text-muted">

                  <div>

                      <a href="https://docs.pagure.org/pagure/usage/index.html">Documentation</a> &bull;

+                     <a href="/about">About this Instance</a> &bull;

                      <a href="{{ url_for('ui_ns.ssh_hostkey') }}">SSH Hostkey/Fingerprint</a>

                  </div>

              </div>
@@ -46,3 +47,13 @@ 

          </div>

      </div>

  {% endmacro %}

+ 

+ {% macro about_page() %}

+     <div class="container mt-5">

+         <h1>About</h1>

+         <p>This is an instance of Pagure, a git forge.</p>

+         <p>If you experience a bug or security concern, please <a href="https://pagure.io/pagure/issues">submit an issue</a>.</p>

+         <p>You may contact an administrator by emailing: <a href="mailto:{{ config['ADMIN_EMAIL'] }}">{{ config['ADMIN_EMAIL'] }}</a>.</p>

+         <p><a href="https://lists.pagure.io/admin/lists/pagure-announce.lists.pagure.io/">Subscribe to announcements</a> about Pagure.</p>

+     </div>

+ {% endmacro %}

@@ -17,10 +17,10 @@ 

  {% endmacro %}

  

  {% macro browseheader_message(select) %}

-     {# 

+     {#

          message that shows at the top of the browse pages:

          'select' is the browse page. It can be either: 'projects',

-         'users', or 'groups'. 

+         'users', or 'groups'.

      #}

      {% if select == 'projects' %}

      <div class="row justify-content-around">
@@ -42,8 +42,18 @@ 

            <a href="https://pagure.io/pagure">Pagure</a>

            {{ g.version }}

              </p>

-             <p><a href="{{ url_for('ui_ns.ssh_hostkey') }}">SSH Hostkey/Fingerprint</a> | <a href="https://docs.pagure.org/pagure/usage/index.html">Documentation</a></p>

+             <p><a href="{{ url_for('ui_ns.ssh_hostkey') }}">SSH Hostkey/Fingerprint</a> | <a href="https://docs.pagure.org/pagure/usage/index.html">Documentation</a> | <a href="/about">About this Instance</a></p>

              <p class="text-muted credit">&copy; 2014-2018 Red Hat, Inc. and others.</p>

          </div>

      </div>

  {% endmacro %}

+ 

+ {% macro about_page() %}

+     <div class="container mt-5">

+         <h1>About</h1>

+         <p>This is an instance of Pagure, a git forge.</p>

+         <p>If you experience a bug or security concern, please <a href="https://pagure.io/pagure/issues">submit an issue</a>.</p>

+         <p>You may contact an administrator by emailing: <a href="mailto:{{ config['ADMIN_EMAIL'] }}">{{ config['ADMIN_EMAIL'] }}</a>.</p>

+         <p><a href="https://lists.pagure.io/admin/lists/pagure-announce.lists.pagure.io/">Subscribe to announcements</a> about Pagure.</p>

+     </div>

+ {% endmacro %}

@@ -38,7 +38,7 @@ 

  {% if config['APP_URL'] == 'https://stg.pagure.io/' %}

  <div class="alert alert-info mb-0">

      <div class="container text-center">

-         Welcome to the staging environment for <a href="https://pagure.io">pagure.io</a>. 

+         Welcome to the staging environment for <a href="https://pagure.io">pagure.io</a>.

      </div>

  </div>

  {% endif %}
@@ -53,6 +53,7 @@ 

                      <div>

                          <a href="https://docs.pagure.org/pagure/usage/index.html" class="notblue">Documentation</a> &bull;

                          <a href="https://pagure.io/pagure/new_issue" class="notblue">File an Issue</a> &bull;

+                         <a href="/about">About this Instance</a> &bull;

                          <a href="{{ url_for('ui_ns.ssh_hostkey') }}" class="notblue">SSH Hostkey/Fingerprint</a>

                      </div>

                  </div>
@@ -62,4 +63,14 @@ 

              </div>

          </div>

      </div>

- {% endmacro %} 

\ No newline at end of file

+ {% endmacro %}

+ 

+ {% macro about_page() %}

+     <div class="container mt-5">

+         <h1>About</h1>

+         <p>This is an instance of Pagure, a git forge.</p>

+         <p>If you experience a bug or security concern, please <a href="https://pagure.io/pagure/issues">submit an issue</a>.</p>

+         <p>You may contact an administrator by emailing: <a href="mailto:{{ config['ADMIN_EMAIL'] }}">{{ config['ADMIN_EMAIL'] }}</a>.</p>

+         <p><a href="https://lists.pagure.io/admin/lists/pagure-announce.lists.pagure.io/">Subscribe to announcements</a> about Pagure.</p>

+     </div>

+ {% endmacro %}

@@ -88,6 +88,7 @@ 

                      <div>

                          <a href="https://docs.pagure.org/pagure/usage/index.html" class="notblue">Documentation</a> &bull;

                          <a href="https://pagure.io/pagure/new_issue" class="notblue">File an Issue</a> &bull;

+                         <a href="/about">About this Instance</a> &bull;

                          <a href="{{ url_for('ui_ns.ssh_hostkey') }}" class="notblue">SSH Hostkey/Fingerprint</a>

                      </div>

                  </div>
@@ -98,3 +99,13 @@ 

          </div>

      </div>

  {% endmacro %}

+ 

+ {% macro about_page() %}

+     <div class="container mt-5">

+         <h1>About</h1>

+         <p>This is an instance of Pagure, a git forge.</p>

+         <p>If you experience a bug or security concern, please <a href="https://pagure.io/pagure/issues">submit an issue</a>.</p>

+         <p>You may contact an administrator by emailing: <a href="mailto:{{ config['ADMIN_EMAIL'] }}">{{ config['ADMIN_EMAIL'] }}</a>.</p>

+         <p><a href="https://lists.pagure.io/admin/lists/pagure-announce.lists.pagure.io/">Subscribe to announcements</a> about Pagure.</p>

+     </div>

+ {% endmacro %}

file modified
+11
@@ -1489,3 +1489,14 @@ 

          flask.g.session.commit()

          flask.flash("All active sessions logged out")

      return flask.redirect(flask.url_for("ui_ns.user_settings"))

+ 

+ 

+ @UI_NS.route("/about")

+ @UI_NS.route("/about/")

+ def help():

+     """ A page to direct users to the appropriate places to get assistance,

+         or find basic instance information.

+     """

+     return flask.render_template(

+         "about.html",

+     )

file modified
+6 -2
@@ -13,6 +13,7 @@ 

  import logging

  

  import flask

+ from flask import Markup

  

  from sqlalchemy.exc import SQLAlchemyError

  
@@ -115,9 +116,12 @@ 

      except SQLAlchemyError as err:

          flask.g.session.rollback()

          _log.exception(err)

+         message = Markup(

+             'Could not set up you as a user properly,'

+             ' please <a href="/about">contact an administrator</a>'

+         )

          flask.flash(

-             "Could not set up you as a user properly, please contact "

-             "an admin",

+             message,

              "error",

          )

          # Ensure the user is logged out if we cannot set them up

file modified
+6 -2
@@ -13,6 +13,7 @@ 

  import logging

  

  import flask

+ from flask import Markup

  import munch

  from sqlalchemy.exc import SQLAlchemyError

  
@@ -131,9 +132,12 @@ 

      except SQLAlchemyError as err:

          flask.g.session.rollback()

          _log.exception(err)

+         message = Markup(

+             'Could not set up you as a user properly,'

+             ' please <a href="/about">contact an administrator</a>'

+         )

          flask.flash(

-             "Could not set up you as a user properly, please contact "

-             "an admin",

+             message,

              "error",

          )

          # Ensure the user is logged out if we cannot set them up

file modified
+7 -1
@@ -16,6 +16,8 @@ 

  import logging

  

  import flask

+ from flask import Markup

+ 

  from sqlalchemy.exc import SQLAlchemyError

  

  import pagure.exceptions
@@ -126,8 +128,12 @@ 

          except SQLAlchemyError as err:  # pragma: no cover

              flask.g.session.rollback()

              _log.exception("Could not add plugin %s", plugin.name)

+             message = Markup(

+                 'Could not add plugin,'

+                 ' please <a href="/about">contact an administrator</a>'

+             )

              flask.flash(

-                 "Could not add plugin %s, please contact an admin"

+                 message

                  % plugin.name

              )

  

file modified
+6 -1
@@ -2384,8 +2384,13 @@ 

          except SQLAlchemyError as err:  # pragma: no cover

              flask.g.session.rollback()

              _log.exception(err)

+             message = flask.Markup(

+                 'Token could not be revoked,'

+                 ' please <a href="/about">contact an administrator</a>'

+             )

              flask.flash(

-                 "Token could not be revoked, please contact an admin", "error"

+                 message,

+                 "error"

              )

  

      return flask.redirect(

A new contact page template has been created, is linked in the default theme footer
The default contact page includes links to submit a bug, and contact the pagure lists
Errors now include a link to the contact page to help users get help

Please add this to all themes. It shouldn't be too difficult to do.

contact an administrator

contact an administrator

contact an administrator

contact an administrator

laces? Do you mean places?

@ngompa Do you mean add the "Contact" link to the footer of all themes? Pagureio theme already has a link to submit an issue, so that's slightly redundant, but that's probably okay. I wasn't sure what the use cases for the other themes were.

And yes, I mean "places!" good catch :)

Can you please elaborate on "Aren't we on Bootstrap 4?" ?

rebased onto b37d06017b7c90c3bf3902ee4ee53470ef092d89

5 years ago

Just updated the PR to fix the typo and include the footer link on all themes!

Edit: plus updated again to fix "contact an administrator" after realizing what you were commenting on :)

rebased onto 629789fbec70139b8a0b2208502266c7aef0ef48

5 years ago

rebased onto 6b562955fb1b0b98ce5bb731666b2b940273d28d

5 years ago

rebased onto 46f559917348289c961dace2ba735bd3af5d9537

5 years ago

We should add this to the list of blacklisted project names, or move it to something like /-contact since we do not allow project to start with a -

I'd use the doc subfolder for this or create a dedicated macro so that customizing this page in themes in easy

I'd prefer if this page was something like /help, since I would like to use it to provide not just contact information, but also some basic info about the instance I'm operating.

rebased onto e9501bd18d685efff9c3c7de402c3523ea7f8571

5 years ago

@pingou - I added "contact" to the blacklist!

I'd use the doc subfolder for this or create a dedicated macro so that customizing this page in themes in easy

Do you mean move contact.md into the doc folder?

I'd prefer if this page was something like /help, since I would like to use it to provide not just contact information, but also some basic info about the instance I'm operating.

Do others agree with @bkabrda? I originally had this as an "about" page, actually, which should show information like you suggested. But that seemed outside of the scope of this RFE so I dialed it back to simply "contact". I like "help", though!

Also - I see the Jenkins build is failing, but I'm not really sure how to resolve that. Can anyone provide some guidance there?

Also - I see the Jenkins build is failing, but I'm not really sure how to resolve that. Can anyone provide some guidance there?

https://ci.centos.org/job/pagure-pr/1350/console shows at the bottom:

01:45:16 Failed tests:
01:45:16 FAILED test: py-test_style

You can then see the output of all tests in:
https://ci.centos.org/job/pagure-pr/1350/ > build artifacts
https://ci.centos.org/job/pagure-pr/1350/artifact/ > pagure > results-py2
In there, look for this test: py-test_style:
https://ci.centos.org/job/pagure-pr/1350/artifact/pagure/results-py2/py-test_style/*view*/

Which makes me realize there is a bug, this test runs in py3, so it should be in the results-py3 folder :s

Do others agree with @bkabrda? I originally had this as an "about" page, actually, which should show information like you suggested. But that seemed outside of the scope of this RFE so I dialed it back to simply "contact". I like "help", though!

I think help would work.

What do you think about building this into the theming itself?

Thank you for all your help, Pingou!! I think I know how to fix that test fail now :)

By building it into the theme, do you mean essentially rather than having one .md file, each theme template will have a macro where the /contact (or /help) page is configured? I think this is a good idea and would make it easier for instances to find where to edit this information!

rebased onto 9c032c3

5 years ago

Which makes me realize there is a bug, this test runs in py3, so it should be in the results-py3 folder :s

oops, is that me who broke this?

1 new commit added

  • moved contact.md to new about_page theme macro
5 years ago

@pingou Just pushed a new commit to this branch which implements your advice and rather than a .md file uses a theme macro. I think will be a lot more maintainable for instance admins and was a good idea! Let me know how that looks to you :grin:

@pingou @marykatefain It would actually be nice if we had a proper about page that listed Pagure and version, the software copyright info, references to documentation, and info for contacting the admin if there's a problem.

2 new commits added

  • moved contact.md to new about_page theme macro
  • Contact information added to Errors, fixes #3372
5 years ago

@ngompa yeah I wasn't sure how specific to make it since I don't know how much variation between Instances there is... Right now It says:

This is an instance of Pagure, a decentralized git forge.

If you experience a bug or security concern, please submit an issue.

You may also post questions to the Pagure Development list by emailing: pagure-devel@lists.pagure.io or subscribe to the list.

Subscribe to announcements about Pagure.

I'm definitely open to adding more content about the docs, licence, version, etc. Is there another way to contact admins besides submitting an issue or the email list? I suppose I could link to the IRC channel.

Do you think this extra content would be worthwhile on all themes? Or just the pagureio theme?

Well, I would suggest that admin contact link is probably going to reference a variable configured in pagure.cfg to give an email address or contact URL for the instance admin, since that's per-instance.

The rest of it is good, and it should be in all themes.

Thanks @ngompa - I will add the admin email to the cfg file. It is currently applied to all themes!

I'd just call flask.Markup which saves the import at the top of the file

These two are not used anywhere in the new code apparently

I am honestly unsure how decentralized pagure is :)

I have not run the code locally so it may be a silly question, but is all this JS code used?

1 new commit added

  • removed unused code, changed about language, allowed admin_email to be set as a confguration
5 years ago

@pingou - Thanks for the review! I went ahead and fixed those.

Just pushed a commit that also makes the admin email configurable. :)

We should default to root@localhost.localdomain, as that's local-friendly and won't encourage random communication to pagure mailing list.

3 new commits added

  • removed unused code, changed about language, allowed admin_email to be set as a confguration
  • moved contact.md to new about_page theme macro
  • Contact information added to Errors, fixes #3372
5 years ago

Thanks @ngompa! Just incorporated those changes.

That's not the default :)

1 new commit added

  • remove estraneous code, fix default cfg docs
5 years ago

@pingou a couple of those lines were needed, but not all. I took out the extraneous code and fixed the cfg docs!

I'm still having trouble understanding the Jenkins output, though... I'm not sure how to get it to pass. (And I can't get the tests to work locally...)

@marykatefain the tests work for me when I vagrant up, vagrant ssh and switch to the python3 virtualenv: workon python3-pagure (cause by default it goes to python2-pagure). Then run the tests: ./runtests.py run. Does this work for you?

@lenkaseg I ended up having to use docker-compose to get things running locally, vagrant is still a mess for me :(

I can actually get the tests to run... but then ALL of them fail. Which seems impossible and insane? There's no way this PR broke every single part of the site hahah. It seems to be an issue with python2 vs 3?

mk@babyshark:~/Projects/pagure$ docker-compose -f dev/docker-compose.yml exec web python3 runtests.py rerun
Pre-flight checks passed
Loading failed tests
Using 3 processes
Start timing
/usr/local/bin/nosetests
/usr/bin/nosetests-2
which: no nosetests-3 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
No nosetests-3 found, removing python 3
Starting the workers


Test suite FAILED: py2-test_pagure_flask_ui_app_give_project
Test suite FAILED: py2-test_pagure_flask_api_project
Test suite FAILED: py2-test_pagure_flask_internal
Test suite FAILED: py2-test_fnmatch     
Test suite FAILED: py2-test_pagure_exclude_group_index
Test suite FAILED: py2-test_pagure_flask_api_pr_flag
Test suite FAILED: py2-test_pagure_flask_ui_plugins_default_hook
Test suite FAILED: py2-test_pagure_flask_ui_groups
Test suite FAILED: py2-test_pagure_flask_ui_plugins_pagure_hook
Test suite FAILED: py2-test_pagure_flask_ui_plugins_pagure_ci
Test suite FAILED: py2-test_pagure_flask_ui_issues_acl_checks
Test suite FAILED: py2-test_pagure_flask_ui_plugins_pagure_request_hook
Test suite FAILED: py2-test_pagure_lib_model_delete_project
Test suite FAILED: py2-test_style        
Test suite FAILED: py2-test_pagure_flask_ui_star_project
Test suite FAILED: py2-test_pagure_flask_api_issue_create
Test suite FAILED: py2-test_pagure_flask_api_project_update_watch
Test suite FAILED: py2-test_pagure_flask_api
Test suite FAILED: py2-test_pagure_flask_ui_priorities
Test suite FAILED: py2-test_pagure_flask_form
Test suite FAILED: py2-test_pagure_flask_ui_app_browse
Test suite FAILED: py2-test_pagure_lib_gitolite_config
Test suite FAILED: py2-test_pagure_lib   
Test suite FAILED: py2-test_pagure_flask_ui_plugins_rtd_hook
Test suite FAILED: py2-test_pfmarkdown   
Test suite FAILED: py2-test_pagure_flask_api_fork
Test suite FAILED: py2-test_pagure_lib_watch_list
Test suite FAILED: py2-test_pagure_flask_ui_pr_no_sources
Test suite FAILED: py2-test_pagure_lib_task_mirror
Test suite FAILED: py2-test_pagure_flask_ui_repo_view_file
Test suite FAILED: py2-test_pagure_flask_api_issue_comment
Test suite FAILED: py2-test_pagure_lib_notify
Test suite FAILED: py2-test_pagure_flask_ui_slash_branch_name
Test suite FAILED: py2-test_pagure_flask_api_issue
Test suite FAILED: py2-test_pagure_flask_ui_app
Test suite FAILED: py2-test_pagure_lib_mimetype
Test suite FAILED: py2-test_pagure_flask_ui_plugins_fedmsg
Test suite FAILED: py2-test_pagure_lib_model
Test suite FAILED: py2-test_pagure_lib_git_auth
Test suite FAILED: py2-test_pagure_flask_ui_plugins_mail
Test suite FAILED: py2-test_pagure_flask_ui_repo
Test suite FAILED: py2-test_pagure_flask_ui_issues_read_only
Test suite FAILED: py2-test_pagure_flask_ui_login
Test suite FAILED: py2-test_pagure_flask_ui_quick_reply
Test suite FAILED: py2-test_pagure_flask_ui_no_master_branch
Test suite FAILED: py2-test_stream_server
Test suite FAILED: py2-test_pagure_flask_ui_plugins_noff
Test suite FAILED: py2-test_pagure_flask_api_group
Test suite FAILED: py2-test_pagure_flask_ui_plugins_unsigned
Test suite FAILED: py2-test_pagure_flask_ui_issues_private
Test suite FAILED: py2-test_pagure_flask_ui_plugins_pagure_no_new_branch
Test suite FAILED: py2-test_pagure_flask_api_auth
Test suite FAILED: py2-test_pagure_flask_dump_load_ticket
Test suite FAILED: py2-test_pagure_lib_login
Test suite FAILED: py2-test_pagure_flask_api_user
Test suite FAILED: py2-test_pagure_flask_ui_app_userdash
Test suite FAILED: py2-test_pagure_flask_ui_clone
Test suite FAILED: py2-test_pagure_lib_add_user_to_project
Test suite FAILED: py2-test_pagure_lib_drop_issue
Test suite FAILED: py2-test_pagure_lib_task_services
Test suite FAILED: py2-test_pagure_lib_git
Test suite FAILED: py2-test_pagure_lib_notify_email
Test suite FAILED: py2-test_pagure_flask_ui_roadmap
Test suite FAILED: py2-test_pagure_flask_ui_issues_templates
Test suite FAILED: py2-test_pagure_flask_ui_plugins_mirror
Test suite FAILED: py2-test_pagure_repospanner
Test suite FAILED: py2-test_pagure_flask_ui_repo_flag_commit
Test suite FAILED: py2-test_pagure_flask_ui_app_index
Test suite FAILED: py2-test_pagure_flask_ui_repo_milestones
Test suite FAILED: py2-test_pagure_flask_api_issue_change_status
Test suite FAILED: py2-test_pagure_flask_ui_repo_slash_name
Test suite FAILED: py2-test_pagure_flask_ui_issues
Test suite FAILED: py2-test_pagure_flask_ui_plugins
Test suite FAILED: py2-test_pagure_lib_git_diff_pr
Test suite FAILED: py2-test_pagure_flask_ui_old_commit
Test suite FAILED: py2-test_pagure_lib_link
Test suite FAILED: py2-test_alembic      
Test suite FAILED: py2-test_pagure_flask_api_ui_private_repo
Test suite FAILED: py2-test_pagure_flask_docs
Test suite FAILED: py2-test_pagure_admin 
Test suite FAILED: py2-test_pagure_flask_ui_plugins_pagure_ticket_hook
Test suite FAILED: py2-test_pagure_flask_util
Test suite FAILED: py2-test_pagure_flask_api_issue_custom_fields
Test suite FAILED: py2-test_tasks       
Test suite FAILED: py2-test_pagure_lib_encoding_utils
Test suite FAILED: py2-test_pagure_lib_star_project
Test suite FAILED: py2-test_pagure_flask_ui_plugins_irc
Test suite FAILED: py2-test_pagure_flask
Test suite FAILED: py2-test_pagure_lib_git_get_tags_objects
Test suite FAILED: py2-test_pagure_flask_ui_remote_pr
Test suite FAILED: py2-test_pagure_flask_ui_fork
Test suite FAILED: py2-test_pagure_flask_ui_repo_delete_project
Test suite FAILED: py2-test_pagure_flask_ui_issue_pr_link
Running 0 suites: 0 remaining, 93 failed
All work done


Failed tests:
FAILED test: py2-test_pagure_flask_api_project
FAILED test: py2-test_pagure_flask_ui_app_give_project
FAILED test: py2-test_pagure_flask_internal
FAILED test: py2-test_pagure_exclude_group_index
FAILED test: py2-test_fnmatch
FAILED test: py2-test_pagure_flask_api_pr_flag
FAILED test: py2-test_pagure_flask_ui_groups
FAILED test: py2-test_pagure_flask_ui_plugins_default_hook
FAILED test: py2-test_pagure_flask_ui_plugins_pagure_hook
FAILED test: py2-test_pagure_flask_ui_plugins_pagure_ci
FAILED test: py2-test_pagure_flask_ui_issues_acl_checks
FAILED test: py2-test_pagure_flask_ui_plugins_pagure_request_hook
FAILED test: py2-test_pagure_lib_model_delete_project
FAILED test: py2-test_style
FAILED test: py2-test_pagure_flask_ui_star_project
FAILED test: py2-test_pagure_flask_api_issue_create
FAILED test: py2-test_pagure_flask_api
FAILED test: py2-test_pagure_flask_api_project_update_watch
FAILED test: py2-test_pagure_flask_form
FAILED test: py2-test_pagure_flask_ui_priorities
FAILED test: py2-test_pagure_flask_ui_app_browse
FAILED test: py2-test_pagure_lib
FAILED test: py2-test_pagure_flask_ui_plugins_rtd_hook
FAILED test: py2-test_pagure_lib_gitolite_config
FAILED test: py2-test_pagure_flask_api_fork
FAILED test: py2-test_pagure_lib_watch_list
FAILED test: py2-test_pfmarkdown
FAILED test: py2-test_pagure_flask_ui_pr_no_sources
FAILED test: py2-test_pagure_lib_task_mirror
FAILED test: py2-test_pagure_flask_ui_repo_view_file
FAILED test: py2-test_pagure_flask_api_issue_comment
FAILED test: py2-test_pagure_lib_notify
FAILED test: py2-test_pagure_flask_ui_slash_branch_name
FAILED test: py2-test_pagure_flask_ui_app
FAILED test: py2-test_pagure_lib_mimetype
FAILED test: py2-test_pagure_flask_api_issue
FAILED test: py2-test_pagure_flask_ui_plugins_fedmsg
FAILED test: py2-test_pagure_lib_git_auth
FAILED test: py2-test_pagure_lib_model
FAILED test: py2-test_pagure_flask_ui_plugins_mail
FAILED test: py2-test_pagure_flask_ui_repo
FAILED test: py2-test_pagure_flask_ui_issues_read_only
FAILED test: py2-test_pagure_flask_ui_login
FAILED test: py2-test_pagure_flask_ui_quick_reply
FAILED test: py2-test_pagure_flask_ui_no_master_branch
FAILED test: py2-test_pagure_flask_ui_plugins_noff
FAILED test: py2-test_stream_server
FAILED test: py2-test_pagure_flask_api_group
FAILED test: py2-test_pagure_flask_ui_plugins_unsigned
FAILED test: py2-test_pagure_flask_ui_issues_private
FAILED test: py2-test_pagure_flask_ui_plugins_pagure_no_new_branch
FAILED test: py2-test_pagure_flask_api_auth
FAILED test: py2-test_pagure_flask_dump_load_ticket
FAILED test: py2-test_pagure_lib_login
FAILED test: py2-test_pagure_flask_api_user
FAILED test: py2-test_pagure_flask_ui_app_userdash
FAILED test: py2-test_pagure_lib_add_user_to_project
FAILED test: py2-test_pagure_flask_ui_clone
FAILED test: py2-test_pagure_lib_drop_issue
FAILED test: py2-test_pagure_lib_task_services
FAILED test: py2-test_pagure_lib_git
FAILED test: py2-test_pagure_lib_notify_email
FAILED test: py2-test_pagure_flask_ui_roadmap
FAILED test: py2-test_pagure_flask_ui_issues_templates
FAILED test: py2-test_pagure_flask_ui_plugins_mirror
FAILED test: py2-test_pagure_flask_ui_repo_flag_commit
FAILED test: py2-test_pagure_repospanner
FAILED test: py2-test_pagure_flask_ui_app_index
FAILED test: py2-test_pagure_flask_ui_repo_milestones
FAILED test: py2-test_pagure_flask_api_issue_change_status
FAILED test: py2-test_pagure_flask_ui_repo_slash_name
FAILED test: py2-test_pagure_flask_ui_plugins
FAILED test: py2-test_pagure_flask_ui_issues
FAILED test: py2-test_pagure_lib_git_diff_pr
FAILED test: py2-test_pagure_lib_link
FAILED test: py2-test_pagure_flask_ui_old_commit
FAILED test: py2-test_alembic
FAILED test: py2-test_pagure_flask_api_ui_private_repo
FAILED test: py2-test_pagure_flask_docs
FAILED test: py2-test_pagure_flask_ui_plugins_pagure_ticket_hook
FAILED test: py2-test_pagure_admin
FAILED test: py2-test_pagure_flask_util
FAILED test: py2-test_tasks
FAILED test: py2-test_pagure_flask_api_issue_custom_fields
FAILED test: py2-test_pagure_lib_encoding_utils
FAILED test: py2-test_pagure_lib_star_project
FAILED test: py2-test_pagure_flask_ui_plugins_irc
FAILED test: py2-test_pagure_flask
FAILED test: py2-test_pagure_lib_git_get_tags_objects
FAILED test: py2-test_pagure_flask_ui_remote_pr
FAILED test: py2-test_pagure_flask_ui_fork
FAILED test: py2-test_pagure_flask_ui_repo_delete_project
FAILED test: py2-test_pagure_flask_ui_issue_pr_link

Ran 93 tests in 154.091861 seconds, of which 93 failed

Try rebasing your fork on the top of master (main project). Feel free to ping us on IRC (#pagure on freenode) if you need help, either with git or with the tests in general :)

I'm running the tests locally, if they pass, I'll merge this PR manually and likely open a new on to tweak a bit the default content of this new page (and add basic test for it while at it :)).

Thanks for your help, I'll let you know the outcome of the test run :)

Commit 770786b9 fixes this pull-request

Pull-Request has been merged by pingou

5 years ago

Commit a169181 fixes this pull-request

Pull-Request has been merged by pingou

5 years ago

Commit 770786b9 fixes this pull-request

Pull-Request has been merged by pingou

5 years ago

Thank you, pingou! Sorry I did not have a chance to finish this up myself, I was hoping to get to it this weekend :)

Thank you, pingou! Sorry I did not have a chance to finish this up myself, I was hoping to get to it this weekend :)

No worries it's all good :)

Metadata