This commit is contained in:
Oleg Lavrovsky 2023-06-05 14:35:50 +02:00
parent b177856b42
commit 0393e471d4
No known key found for this signature in database
GPG Key ID: 31E523030632FF4B
8 changed files with 41 additions and 15 deletions

View File

@ -15,11 +15,11 @@ def fetch_commits_gitea(full_name, limit=10):
full_name, limit)
data = requests.get(apiurl, timeout=REQUEST_TIMEOUT)
if data.status_code != 200:
logging.warn("Could not sync Gitea commits on %s" % full_name)
logging.warning("Could not sync Gitea commits on %s" % full_name)
return []
json = data.json()
if 'message' in json:
logging.warn("Could not sync Gitea commits on %s: %s"
logging.warning("Could not sync Gitea commits on %s: %s"
% (full_name, json['message']))
return []
commitlog = []
@ -52,11 +52,11 @@ def fetch_commits_github(full_name, since=None, until=None):
apiurl += "&until=%s" % until.replace(microsecond=0).isoformat()
data = requests.get(apiurl, timeout=REQUEST_TIMEOUT)
if data.status_code != 200:
logging.warn("Could not sync GitHub commits on %s" % full_name)
logging.warning("Could not sync GitHub commits on %s" % full_name)
return []
json = data.json()
if 'message' in json:
logging.warn("Could not sync GitHub commits on %s: %s"
logging.warning("Could not sync GitHub commits on %s: %s"
% (full_name, json['message']))
return []
return parse_github_commits(json, full_name)
@ -103,7 +103,7 @@ def fetch_commits_gitlab(project_id: int, since=None, until=None):
return []
json = data.json()
if 'message' in json:
logging.warn("Could not sync GitLab commits", json['message'])
logging.warning("Could not sync GitLab commits", json['message'])
return []
commitlog = []
for commit in json:

View File

@ -298,7 +298,7 @@ def RequestRemoteContent(project_url):
data = requests.get(project_url, timeout=REQUEST_TIMEOUT)
return data.text or None
except requests.exceptions.RequestException:
logging.warn("Could not connect to %s" % project_url)
logging.warning("Could not connect to %s" % project_url)
return None

View File

@ -177,7 +177,7 @@ def import_project_data(data, dry_run=False):
event_name = pjt['event_name']
event = Event.query.filter_by(name=event_name).first()
if not event:
logging.warn('Error: event not found: %s' % event_name)
logging.warning('Error: event not found: %s' % event_name)
continue
# Search for project
name = pjt['name']
@ -214,7 +214,7 @@ def import_activities(data, dry_run=False):
# TODO: unreliable; rather use a map of project_id to new id
proj = Project.query.filter_by(name=pname).first()
if not proj:
logging.warn('Error! Project not found: %s' % pname)
logging.warning('Error! Project not found: %s' % pname)
continue
activity = Activity(aname, proj.id)
activity.set_from_data(act)

View File

@ -71,7 +71,7 @@ def box_datapackage(line, cache=None):
logging.info("Fetching Data Package: <%s>" % url)
package = Package(url)
except Exception: # noqa: B902
logging.warn("Data Package not parsed: <%s>" % url)
logging.warning("Data Package not parsed: <%s>" % url)
return None
if package.created:
dt = datetime.fromisoformat(package.created).strftime("%d.%m.%Y")

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""Helper for sending mail."""
from flask import url_for
from flask import url_for, current_app
from flask_mailman import EmailMessage
from dribdat.utils import random_password # noqa: I005
import logging
@ -17,14 +17,17 @@ def user_activation(user):
userid=user.id,
userhash=act_hash,
_external=True)
if not 'mailman' in current_app.extensions:
logging.warning('E-mail extension has not been configured')
return act_hash
msg = EmailMessage()
msg.subject = 'Your dribdat account'
msg.body = \
"Thanks for signing up at %s\n\n" % base_url \
"Hello %s,\n" % user.name \
+ "Thanks for signing up at %s\n\n" % base_url \
+ "Tap here to activate your account:\n\n%s" % act_url
msg.to = [user.email]
logging.info('Sending activation mail to user %d' % user.id)
logging.debug(act_url)
msg.send(fail_silently=True)
return True
return act_hash

View File

@ -141,8 +141,11 @@ def activate(userid, userhash):
login_user(a_user, remember=True)
flash("Welcome! Your user account has been activated.", 'success')
return redirect(url_for('auth.user_profile'))
flash("Activation not found. Try again, or ask an organizer.", 'warning')
logout_user()
elif a_user.active:
flash("Your user account is active.", 'success')
else:
flash("Activation not found. Try again, or ask an organizer.", 'warning')
logout_user()
return redirect(url_for('public.home'))

4
pytest.ini Normal file
View File

@ -0,0 +1,4 @@
[pytest]
filterwarnings =
ignore
default:::dribdat.*

View File

@ -6,6 +6,7 @@ See: http://webtest.readthedocs.org/
from flask import url_for
from dribdat.user.models import User
from dribdat.mailer import user_activation
from .factories import UserFactory
@ -146,3 +147,18 @@ class TestRegistering:
assert res.status_code == 200
# A new user was created
assert User.query.count() == old_count + 1
class TestActivation:
"""Activate a user."""
def test_user_can_activate(self, user, testapp):
"""Create and activate a user."""
# Make a deactivated user
user = UserFactory(active=False)
user.save()
# Let's get an activation mail
my_hash = user_activation(user)
# And go activate that user
res = testapp.get(url_for('auth.activate', userid=user.id, userhash=my_hash))
assert res.status_code == 302
assert '/user/profile' in res