Full user profile in export

This commit is contained in:
datalets 2022-09-15 23:47:29 +02:00
parent 98008c1917
commit 6800d0089c
10 changed files with 35 additions and 23 deletions

View File

@ -1 +1 @@
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/about/)
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/about)

View File

@ -1 +1 @@
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/contribute/)
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/contribute)

View File

@ -1 +1 @@
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/deploy/)
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/deploy)

View File

@ -1 +1 @@
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/trouble/)
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/trouble)

View File

@ -1 +1 @@
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/usage/)
This page now lives at [docs.dribdat.cc](https://docs.dribdat.cc/usage)

View File

@ -78,7 +78,7 @@ def PackageEvent(event, author=None, host_url='', full_contents=False):
# print("Generating in-memory JSON of participants")
package.add_resource(Resource(
name='users',
data=get_event_users(event),
data=get_event_users(event, full_contents),
))
# print("Generating in-memory JSON of activities")
package.add_resource(Resource(

View File

@ -46,20 +46,22 @@ def get_event_categories(event_id=None):
return [c.data for c in query.order_by(Category.id.asc()).all()]
def get_event_users(event):
""" Returns plain user objects without personal data """
def get_event_users(event, full_data=False):
""" Returns plain user objects and personal data """
eventusers = GetEventUsers(event)
if not eventusers:
return []
userdata = []
for u in eventusers:
ud = u.data
userdata.append({
'id': ud['id'],
'roles': ud['roles'],
'username': ud['username'],
'webpage_url': ud['webpage_url'],
})
if full_data:
userdata.append(u.data)
else:
userdata.append({
'id': u.data['id'],
'roles': u.data['roles'],
'username': u.data['username'],
'webpage_url': u.data['webpage_url'],
})
return userdata
@ -75,7 +77,7 @@ def get_project_summaries(projects, host_url, is_moar=False):
else:
summaries = [p.data for p in projects]
summaries = expand_project_urls(summaries, host_url)
summaries.sort(key=lambda x: x['score'], reverse=True)
summaries.sort(key=lambda x: x['score'] or 0, reverse=True)
return summaries

View File

@ -12,6 +12,8 @@ from micawber.parsers import standalone_url_re, full_handler
def format_webembed(url):
if url.lower().startswith('<iframe '):
# Allow IFRAMEs
# TODO: add a setting
return url
if url.startswith('https://query.wikidata.org/'):
# Fix WikiData queries

View File

@ -20,9 +20,12 @@ class Config(object):
DRIBDAT_THEME = os_env.get('DRIBDAT_THEME', 'simplex')
# Application options
DRIBDAT_USER_APPROVE = bool(strtobool(os_env.get('DRIBDAT_USER_APPROVE', 'False')))
DRIBDAT_NOT_REGISTER = bool(strtobool(os_env.get('DRIBDAT_NOT_REGISTER', 'False')))
DRIBDAT_ALLOW_EVENTS = bool(strtobool(os_env.get('DRIBDAT_ALLOW_EVENTS', 'False')))
DRIBDAT_USER_APPROVE = os_env.get('DRIBDAT_USER_APPROVE', 'False')
DRIBDAT_USER_APPROVE = bool(strtobool(DRIBDAT_USER_APPROVE))
DRIBDAT_NOT_REGISTER = os_env.get('DRIBDAT_NOT_REGISTER', 'False')
DRIBDAT_NOT_REGISTER = bool(strtobool(DRIBDAT_NOT_REGISTER))
DRIBDAT_ALLOW_EVENTS = os_env.get('DRIBDAT_ALLOW_EVENTS', 'False')
DRIBDAT_ALLOW_EVENTS = bool(strtobool(DRIBDAT_ALLOW_EVENTS))
# Single sign-on support
OAUTH_ID = os_env.get('OAUTH_ID', None)
@ -42,7 +45,8 @@ class Config(object):
SQLALCHEMY_TRACK_MODIFICATIONS = False
# Server settings
SERVER_NAME = os_env.get('SERVER_URL', os_env.get('SERVER_NAME', 'localhost.localdomain:5000'))
SERVER_NAME = os_env.get('SERVER_URL', os_env.get(
'SERVER_NAME', 'localhost.localdomain:5000'))
SERVER_SSL = os_env.get('SERVER_SSL', None)
SERVER_CORS = bool(strtobool(os_env.get('SERVER_CORS', 'True')))
SERVER_PROXY = bool(strtobool(os_env.get('SERVER_PROXY', 'False')))

View File

@ -105,13 +105,17 @@ class User(UserMixin, PkModel):
def data(self):
return {
'id': self.id,
'username': self.username,
'email': self.email,
'webpage_url': self.webpage_url,
'sso_id': self.sso_id,
'roles': ",".join([r.name for r in self.roles]),
'active': self.active,
'is_admin': self.is_admin,
'username': self.username,
'webpage_url': self.webpage_url,
'roles': ",".join([r.name for r in self.roles]),
'cardtype': self.cardtype,
'carddata': self.carddata,
'my_story': self.my_story,
'my_goals': self.my_goals,
}
def set_from_data(self, data):