ui: style member, job, group

This commit is contained in:
Clément 2018-10-31 10:38:41 +01:00
parent 1c35e83a58
commit e3fa784a54
28 changed files with 739 additions and 325 deletions

View File

@ -4,7 +4,7 @@
"@babel/preset-env",
{
"targets": {
"browsers": [">2.75%"]
"browsers": ["last 1 years"]
}
}
]

View File

@ -1,4 +1,5 @@
const port = 9000;
const browsersyncPort = 3000;
const distPath = 'www';
// express server
const { join } = require('path');
@ -18,5 +19,6 @@ bs.init({
proxy: `http://localhost:${port}`,
open: false,
notify: false,
//tunnel: true,
port: browsersyncPort,
tunnel: true,
});

View File

@ -1,2 +1,3 @@
- var sdn = process.env.SDN || 'http://127.0.0.1:8000'
- var cdn = process.env.CDN || 'https://cdn.happy-dev.fr'
- var cdn = process.env.CDN || 'https://cdn.happy-dev.fr'
- var xmpp = 'https://jabber.happy-dev.fr/http-bind/'

368
src/error.log Normal file
View File

@ -0,0 +1,368 @@
ImproperlyConfigured at /members/
Could not resolve URL for hyperlinked relationship using view name "member-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
Request Method: GET
Request URL: http://127.0.0.1:8000/members/
Django Version: 1.11
Python Executable: /home/ubuntu/dev/test/ldpserverhdparis/env/bin/python
Python Version: 3.6.6
Python Path: ['/home/ubuntu/dev/test/ldpserverhdparis', '/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python36.zip', '/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6', '/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/lib-dynload', '/usr/lib/python3.6', '/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages']
Server time: Tue, 30 Oct 2018 16:22:14 +0000
Installed Applications:
['ldpserverhdparis',
'djangoldp',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'oidc_provider',
'guardian']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/relations.py" in to_representation
400. url = self.get_url(value, self.view_name, request, format)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/relations.py" in get_url
338. return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/reverse.py" in reverse
50. url = _reverse(viewname, args, kwargs, request, format, **extra)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/reverse.py" in _reverse
63. url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/urls/base.py" in reverse
91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/urls/resolvers.py" in _reverse_with_prefix
497. raise NoReverseMatch(msg)
During handling of the above exception (Reverse for 'member-detail' with keyword arguments '{'pseudo': 'alex.bourlier'}' not found. 1 pattern(s) tried: ['members/(?P<pseudo>[\\w-]+)/$']), another exception occurred:
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/viewsets.py" in view
116. return self.dispatch(request, *args, **kwargs)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/djangoldp/views.py" in dispatch
126. response = super(LDPViewSet, self).dispatch(request, *args, **kwargs)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
495. response = self.handle_exception(exc)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/views.py" in handle_exception
455. self.raise_uncaught_exception(exc)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
492. response = handler(request, *args, **kwargs)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/mixins.py" in list
48. return Response(serializer.data)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/djangoldp/serializers.py" in data
16. return ReturnDict(super(ListSerializer, self).data, serializer=self)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/serializers.py" in data
262. self._data = self.to_representation(self.instance)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/djangoldp/serializers.py" in to_representation
13. return {'@id': '', 'ldp:contains':super(ContainerSerializer, self).to_representation(data)}
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/serializers.py" in to_representation
683. self.child.to_representation(item) for item in iterable
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/serializers.py" in <listcomp>
683. self.child.to_representation(item) for item in iterable
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/djangoldp/serializers.py" in to_representation
77. data = super().to_representation(obj)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/serializers.py" in to_representation
527. ret[field.field_name] = field.to_representation(attribute)
File "/home/ubuntu/dev/test/ldpserverhdparis/env/lib/python3.6/site-packages/rest_framework/relations.py" in to_representation
415. raise ImproperlyConfigured(msg % self.view_name)
Exception Type: ImproperlyConfigured at /members/
Exception Value: Could not resolve URL for hyperlinked relationship using view name "member-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
Request information:
USER: clement
GET: No GET data
POST: No POST data
FILES: No FILES data
COOKIES:
csrftoken = 'rJoY6gBfXiXUzx2vt44C3jpidX61XuS8d33rk6bsGTOwM4qdsTo3YOU21aXLPMbG'
sessionid = 'a7j0mj6zjnv7i2mko5bs17mynvy12rcc'
io = 'F3hWNi2N9qwA7YiDAABT'
META:
CHROME_DESKTOP = 'code-url-handler.desktop'
CONTENT_LENGTH = ''
CONTENT_TYPE = 'text/plain'
CSRF_COOKIE = 'rJoY6gBfXiXUzx2vt44C3jpidX61XuS8d33rk6bsGTOwM4qdsTo3YOU21aXLPMbG'
DBUS_SESSION_BUS_ADDRESS = 'unix:path=/run/user/1000/bus'
DEFAULTS_PATH = '/usr/share/gconf/plasma.default.path'
DESKTOP_SESSION = 'plasma'
DESKTOP_STARTUP_ID = 'ubuntu-N7x0WU;1540892856;943495;1492_TIME14942764'
DISPLAY = ':0'
DJANGO_SETTINGS_MODULE = 'ldpserverhdparis.settings'
GATEWAY_INTERFACE = 'CGI/1.1'
GPG_AGENT_INFO = '/run/user/1000/gnupg/S.gpg-agent:0:1'
GS_LIB = '/home/ubuntu/.fonts'
GTK_MODULES = 'gail:atk-bridge'
HOME = '/home/ubuntu'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.8,fr;q=0.5,fr-FR;q=0.3'
HTTP_CONNECTION = 'keep-alive'
HTTP_COOKIE = 'csrftoken=rJoY6gBfXiXUzx2vt44C3jpidX61XuS8d33rk6bsGTOwM4qdsTo3YOU21aXLPMbG; sessionid=a7j0mj6zjnv7i2mko5bs17mynvy12rcc; io=F3hWNi2N9qwA7YiDAABT'
HTTP_DNT = '1'
HTTP_HOST = '127.0.0.1:8000'
HTTP_UPGRADE_INSECURE_REQUESTS = '1'
HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0'
KDE_FULL_SESSION = 'true'
KDE_SESSION_UID = '1000'
KDE_SESSION_VERSION = '5'
LANG = 'en_US.UTF-8'
LANGUAGE = 'fr'
LOGNAME = 'ubuntu'
MAKEFLAGS = ''
MAKELEVEL = '1'
MAKE_TERMERR = '/dev/pts/4'
MAKE_TERMOUT = '/dev/pts/4'
MANDATORY_PATH = '/usr/share/gconf/plasma.mandatory.path'
MFLAGS = ''
PATH = '/home/ubuntu/dev/test/ldpserverhdparis/env/bin:.deno/bin/:/home/ubuntu/.deno/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games'
PATH_INFO = '/members/'
PWD = '/home/ubuntu/dev/test/ldpserverhdparis'
QT_ACCESSIBILITY = '1'
QT_AUTO_SCREEN_SCALE_FACTOR = '0'
QUERY_STRING = ''
REMOTE_ADDR = '127.0.0.1'
REMOTE_HOST = ''
REQUEST_METHOD = 'GET'
RUN_MAIN = 'true'
SCRIPT_NAME = ''
SERVER_NAME = 'localhost'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SOFTWARE = 'WSGIServer/0.2'
SESSION_MANAGER = 'local/ubuntu-N7x0WU:@/tmp/.ICE-unix/1459,unix/ubuntu-N7x0WU:/tmp/.ICE-unix/1459'
SHELL = '/usr/bin/fish'
SHLVL = '3'
SSH_AGENT_PID = '1383'
SSH_AUTH_SOCK = '/tmp/ssh-RgoHoRBUgMlY/agent.1318'
TERM = 'xterm-256color'
TERM_PROGRAM = 'vscode'
TERM_PROGRAM_VERSION = '1.28.2'
TZ = 'UTC'
USER = 'ubuntu'
VIRTUAL_ENV = '/home/ubuntu/dev/test/ldpserverhdparis/env'
XAUTHORITY = '/home/ubuntu/.Xauthority'
XCURSOR_SIZE = '0'
XCURSOR_THEME = 'ComixCursors-Opaque-Black'
XDG_CONFIG_DIRS = '/etc/xdg/xdg-plasma:/etc/xdg:/usr/share/kubuntu-default-settings/kf5-settings'
XDG_CURRENT_DESKTOP = 'KDE'
XDG_DATA_DIRS = '/usr/share/plasma:/home/ubuntu/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share'
XDG_RUNTIME_DIR = '/run/user/1000'
XDG_SEAT = 'seat0'
XDG_SEAT_PATH = '/org/freedesktop/DisplayManager/Seat0'
XDG_SESSION_CLASS = 'user'
XDG_SESSION_DESKTOP = 'KDE'
XDG_SESSION_ID = '1'
XDG_SESSION_PATH = '/org/freedesktop/DisplayManager/Session0'
XDG_SESSION_TYPE = 'x11'
XDG_VTNR = '1'
_OLD_FISH_PROMPT_OVERRIDE = '/home/ubuntu/dev/test/ldpserverhdparis/env'
_OLD_VIRTUAL_PATH = '.deno/bin/\x1e/home/ubuntu/.deno/bin/\x1e/usr/local/sbin\x1e/usr/local/bin\x1e/usr/sbin\x1e/usr/bin\x1e/sbin\x1e/bin\x1e/usr/games\x1e/usr/local/games'
wsgi.errors = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <_io.BufferedReader name=5>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version =
Settings:
Using settings module ldpserverhdparis.settings
ABSOLUTE_URL_OVERRIDES = {}
ADMINS = []
ALLOWED_HOSTS = ['127.0.0.1', 'test-paris.happy-dev.fr']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend', 'guardian.backends.ObjectPermissionBackend']
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/home/ubuntu/dev/test/ldpserverhdparis'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/ubuntu/dev/test/ldpserverhdparis/db.sqlite3', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'USER': '', 'PASSWORD': '********************', 'HOST': '', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = True
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['ldpserverhdparis', 'djangoldp', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'oidc_provider', 'guardian']
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LDP_RDF_CONTEXT = 'https://cdn.happy-dev.fr/owl/hdcontext.jsonld'
LOCALE_PATHS = []
LOGGING = {}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = '/accounts/profile/'
LOGIN_URL = '/accounts/login/'
LOGOUT_REDIRECT_URL = None
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
MIDDLEWARE_CLASSES = ['django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
OIDC_USERINFO = 'ldpserverhdparis.oidc_provider_settings.userinfo'
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
PREPEND_WWW = False
ROOT_URLCONF = 'ldpserverhdparis.urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root@localhost'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = 'ldpserverhdparis.settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
STATICFILES_DIRS = []
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/home/ubuntu/dev/test/static'
STATIC_URL = '/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'ldpserverhdparis.wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'
You're seeing this error because you have DEBUG = True in your
Django settings file. Change that to False, and Django will
display a standard page generated by the handler for this status code.

View File

@ -21,6 +21,8 @@ html(lang="en")
include page-member.pug
#job-offers(hidden)
include page-job-offers.pug
#job-offer-create(hidden)
include page-job-offer-create.pug
//-#projects(hidden)
include page-projects.pug
#project(hidden)

View File

@ -8,6 +8,7 @@ div
sib-route(hidden, name='member', id-prefix=`${sdn}/members/`)
sib-route(name='job-offers')
div.icon-briefcase Job offers
sib-route(hidden, name='job-offer-create')
div
div.icon-folder-alt Projects
sib-display(

View File

@ -3,6 +3,7 @@
.form-view
sib-form.block(
data-src=`${sdn}/channels/`,
data-fields="name, description, owner, members, jabberID, jabberRoom"
range-owner=`${sdn}/members/`,
widget-members='sib-form-multiple-dropdown',
range-members=`${sdn}/members/`

View File

@ -3,6 +3,7 @@
.form-view
sib-form.block(
range-owner=`${sdn}/members/`,
data-fields="name, description, owner, members, jabberID, jabberRoom"
range-members=`${sdn}/members/`,
widget-members='sib-form-multiple-dropdown',
bind-resources

View File

@ -1,17 +1,49 @@
#group-profile
.frame
sib-display(
data-fields='name, description, owner',
widget-owner='hdapp-member',
data-fields='name, label-description, description',
value-label-description="Description:"
bind-resources
)
h2.section.skills Participants
h2.section.skills In group
sib-display(
id-suffix='members',
data-fields='avatar, user',
widget-avatar='sib-display-img',
widget-user='hdapp-userinfo',
data-fields='user-thumb',
set-user-thumb='member.avatar, first_name, last_name',
widget-member.avatar='sib-display-img',
bind-resources
)
//-
sib-display#offers-list.limiter(
data-src=`${sdn}/job-offers/`,
data-fields='date, user-thumb, title, description, skills',
widget-skills='sib-display-lookuplist',
set-user-thumb='author.member.avatar, author.first_name, author.last_name'
widget-author.member.avatar='sib-display-img',
set-date='closingDate, creationDate',
widget-closingDate='hdapp-closing-date',
set-searchset='title, description, skills',
search-fields='searchset'
)
sib-display(
data-fields='title, label-description, description, client',
set-title='number, client.name, name',
set-client='label-client, client.name, client.logo, client.address',
value-label-description="Description:"
value-label-client="Client:"
widget-client.logo='sib-display-img',
widget-client='hdapp-client',
widget-team='sib-display-lookuplist',
bind-resources,
)
h2 Team:
sib-display.members-list-condensed(
id-suffix='team',
data-fields='member.avatar, member.user',
widget-member.avatar='sib-display-img',
widget-member.user='hdapp-userinfo',
next='member',
bind-resources,
)

View File

@ -3,8 +3,9 @@ sib-router#group-router(default-route='group-chat')
div Chat
sib-route(name='group-profile')
div Info
sib-route(name='group-edit')
div Edit
sib-ac-checker(permission='change' bind-resources)
sib-route(name='group-edit')
div Edit
sib-route(name='group-create')
div Add new
#network-views-container

View File

@ -0,0 +1,9 @@
#job-create
h1 New job offer
.form-view
sib-form.block(
data-src=`${sdn}/job-offers/`,
data-fields="author, description, skills",
widget-author='sib-form-dropdown',
widget-skills='sib-form-multiple-dropdown',
)

View File

@ -1,11 +1,15 @@
div
h1 New offers
sib-trigger(next="job-offer-create" class="new-job-offer") Post a new offer
h1 New offers
span Here you can find and post offers
sib-display#offers-list.limiter(
data-src=`${sdn}/job-offers/`,
data-fields='author, title, description, skills',
set-searchset='title, description',
data-fields='date, user-thumb, title, description, skills',
widget-skills='sib-display-lookuplist',
widget-author='hdapp-author',
set-user-thumb='author.member.avatar, author.first_name, author.last_name'
widget-author.member.avatar='sib-display-img',
set-date='closingDate, creationDate',
widget-closingDate='hdapp-closing-date',
set-searchset='title, description, skills',
search-fields='searchset'
)

View File

@ -1,11 +1,17 @@
sib-display#member-info(
data-fields='header, cell, role, email, tel, roles, website, skills',
set-header='avatar, user, pseudonym, bio',
data-fields='available, header, name, pseudonym, infos, skills',
set-header='avatar',
set-infos='cell, roles, user.email, number, foaf:homepage',
set-name='user.first_name, user.last_name',
set-pseudonym='before-pseudo, pseudo',
value-before-pseudo='@',
widget-available='hdapp-available',
widget-avatar='sib-display-img',
widget-user='hdapp-userinfo',
widget-cell='hdapp-usercell',
widget-number='sib-display-tel',
widget-foaf:homepage='hdapp-hyperlink',
widget-user.email='sib-display-mailto',
widget-roles='sib-display-lookuplist',
widget-skills='sib-display-lookuplist',
bind-resources

View File

@ -12,7 +12,7 @@ sib-router#member-router(default-route='member-chat')
div
#member-chat
include page-member-chat.pug
#member-profile.limiter
#member-profile
include page-member-profile.pug
#member-edit
include page-member-edit.pug

View File

@ -2,17 +2,34 @@ div
h1 Members
sib-display#profiles-list(
data-src=`${sdn}/members/`,
data-fields='header, footer'
data-fields='header, infos'
set-header='avatar, user, pseudonym, bio',
set-footer='cell, roles, skills',
set-infos='cell, roles, user.email, foaf:homepage, skills',
set-pseudonym='before-pseudo, pseudo',
value-before-pseudo='@',
widget-avatar='sib-display-img',
widget-user='hdapp-userinfo',
widget-user.email='sib-display-mailto',
widget-foaf:hompage='hdapp-hyperlink',
widget-cell='hdapp-usercell',
widget-roles='sib-display-lookuplist',
widget-skills='sib-display-lookuplist',
set-searchset='pseudo',
search-fields='searchset',
next='member'
)
next='member')
//- sib-display#profiles-list(
data-src=`${sdn}/users/`,
data-fields='header, footer'
set-header='member.avatar, member.user, pseudonym, member.bio',
set-footer='member.cell, member.roles, member.skills',
set-pseudonym='before-pseudo, pseudo',
value-before-pseudo='@',
widget-member.avatar='sib-display-img',
widget-member.user='hdapp-userinfo',
widget-member.cell='hdapp-usercell',
widget-member.roles='sib-display-lookuplist',
widget-member.skills='sib-display-lookuplist',
set-searchset='last_name',
search-fields='searchset',
next='member')

View File

@ -1,4 +1,4 @@
#project-chat.chat-view
.chat-view
sib-chat(
data-authentication='login',
data-auto-login='true',

View File

@ -1,9 +1,8 @@
#project-create
h1 New project
.form-view
sib-form.block(
data-src=`${sdn}/projects/`,
range-client=`${sdn}/clients/`,
widget-team='sib-form-multiple-dropdown',
range-team=`${sdn}/members/`
)
h1 New project
.form-view
sib-form.block(
data-src=`${sdn}/projects/`,
range-client=`${sdn}/clients/`,
widget-team='sib-form-multiple-dropdown',
range-team=`${sdn}/members/`
)

View File

@ -1,13 +1,12 @@
#project-edit
h1 Edit project
//- sib-display(data-fields="name" bind-resources)]
.form-view
sib-form.block(
range-client=`${sdn}/clients/`,
range-team=`${sdn}/members/`,
data-fields=`name, number, client, description, team, jabberRoom, foaf:jabberID`,
widget-jabberRoom='sib-form-checkbox',
widget-description='sib-form-textarea',
widget-team='sib-form-multiple-dropdown',
bind-resources
)
h1 Edit project
//- sib-display(data-fields="name" bind-resources)]
.form-view
sib-form.block(
range-client=`${sdn}/clients/`,
range-team=`${sdn}/members/`,
data-fields=`name, number, client, description, team, jabberRoom, foaf:jabberID`,
widget-jabberRoom='sib-form-checkbox',
widget-description='sib-form-textarea',
widget-team='sib-form-multiple-dropdown',
bind-resources
)

View File

@ -1,18 +1,22 @@
#project-profile
.frame
sib-display(
data-fields='title, description, client, team',
set-title='number, client, name',
data-fields='title, label-description, description, client',
set-title='number, client.name, name',
set-client='label-client, client.name, client.logo, client.address',
value-label-description="Description:"
value-label-client="Client:"
widget-client.logo='sib-display-img',
widget-client='hdapp-client',
widget-team='sib-display-lookuplist',
bind-resources,
)
h3 Team
h2 Team:
sib-display.members-list-condensed(
id-suffix='team',
data-fields='avatar, user',
widget-avatar='sib-display-img',
widget-user='hdapp-userinfo',
data-fields='member.avatar, member.user',
widget-member.avatar='sib-display-img',
widget-member.user='hdapp-userinfo',
next='member',
bind-resources,
)

View File

@ -8,7 +8,11 @@ sib-router#project-router(default-route='project-chat')
sib-route(name='project-create')
div Add new
#project-views-container
include page-project-chat.pug
include page-project-profile.pug
include page-project-edit.pug
include page-project-create.pug
#project-chat
include page-project-chat.pug
#project-profile
include page-project-profile.pug
#project-edit
include page-project-edit.pug
#project-create
include page-project-create.pug

View File

@ -90,6 +90,7 @@ document.addEventListener('WebComponentsReady', function(event) {
return 'div';
}
getTemplate(value, index) {
return JSON.stringify(value);
var firstname, lastname;
if (typeof value == 'object')
if (Object.keys(value).length > 1) {
@ -109,4 +110,53 @@ document.addEventListener('WebComponentsReady', function(event) {
}
}
customElements.define('hdapp-author', HDAppAuthor);
class HDAppClosingDate extends SIBWidget {
get template() {
return this.value
? `<strong>closed</strong> (${this.value})`
: '<strong>open</strong>';
}
render() {
console.log(this.value);
this.innerHTML = this.template;
}
}
customElements.define('hdapp-closing-date', HDAppClosingDate);
class HDAppAvailable extends SIBWidget {
get template() {
return this.value
? '<strong>Available</strong>'
: '<strong>Not available</strong>';
}
render() {
console.log(this.value);
this.innerHTML = this.template;
}
}
customElements.define('hdapp-available', HDAppAvailable);
class HDAppHyperlink extends SIBWidget {
get template() {
const escaped = this.value
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
return `<a href="${escaped}">${escaped}</a>`;
}
render() {
console.log(this.value);
this.innerHTML = this.template;
}
}
customElements.define('hdapp-hyperlink', HDAppHyperlink);
});

View File

@ -1,11 +1,16 @@
// job offers
.new-job-offer {
@extend %button;
text-transform: uppercase;
float: right;
}
#offers-list {
> div {
> sib-display {
display: block;
margin: 1em 0;
@extend %frame;
padding: 0.5em 1em;
padding: 2em;
/*&:nth-child(odd) {
background-color: $color-grey-light;
}*/
@ -16,37 +21,73 @@
label {
display: none;
}
hdapp-author {
ul {
@include list-reset();
}
}
}
}
}
[name='user-thumb'] {
display: flex;
align-items: center;
margin: -0.25em;
> * {
margin: 0.25em;
}
sib-display-img {
width: 2.5em;
height: 2.5em;
overflow: hidden;
border-radius: 100%;
}
}
[name='date'] {
float: right;
display: flex;
align-items: center;
margin: -0.25em;
> * {
margin: 0.25em;
}
strong {
@extend %button;
}
}
// skills
sib-display-lookuplist[name='skills'] {
ul,
li {
#member-profile sib-display-lookuplist,
#profiles-list sib-display-lookuplist,
sib-display-lookuplist {
&[name$='skills'] {
display: block;
margin: 0;
padding: 0;
list-style: none;
}
ul {
display: flex;
flex-wrap: wrap;
margin: 0 -0.25em;
}
li {
padding: 0.5em 1em;
border: 1px solid;
border-radius: 0.25em;
margin: 0.25em;
ul,
li {
display: block;
margin: 0;
padding: 0;
list-style: none;
}
ul {
display: flex;
flex-wrap: wrap;
margin: 1em -0.25em;
}
li {
padding: 0.5em 1em;
border: 1px solid;
border-radius: 0.25em;
margin: 0.25em;
}
}
}
// group
#group-profile {
sib-display-div[name='name'] div {
@extend h1;
}
sib-display-div[name='label-description'] div {
@extend h2;
}
}
// chat
.chat-view {
@ -61,6 +102,7 @@ sib-display-lookuplist[name='skills'] {
}
}
// member-profile && members
.members-list-condensed {
display: block;
img {
@ -74,6 +116,7 @@ sib-display-lookuplist[name='skills'] {
display: none;
}
> div > sib-display > div {
margin: 1em 0;
display: flex;
}
ul {
@ -81,14 +124,15 @@ sib-display-lookuplist[name='skills'] {
}
}
// member-profile && member
#profiles-list > div > sib-display {
cursor: pointer;
}
sib-display#member-info,
#profiles-list > div > sib-display {
display: block;
position: relative;
@extend %frame;
padding: 1em;
cursor: pointer;
label {
display: none;
@ -113,7 +157,7 @@ sib-display#member-info,
}
div[name='header'] {
border-top: 2em solid $color-grey-light;
// border-top: 2em solid $color-grey-light;
border-bottom: 1px solid $color-grey-light;
padding-bottom: 1em;
margin: -0.5em;
@ -129,11 +173,43 @@ sib-display#member-info,
display: inline;
}
}
ul{
@include list-reset();
[name=infos]{
margin: 2em 0;
>*{
display: block;
margin: 0.5em 0;
}
}
ul[name$='roles'] * {
@include icon('user');
}
ul[name$='cell'] * {
@include icon('location-pin');
}
sib-display-mailto {
display: block;
@include icon('envelope');
}
sib-display-tel {
display: block;
@include icon('phone');
}
hdapp-hyperlink {
display: block;
@include icon('link');
}
sib-display-div[name$='foaf:homepage'] * {
@include icon('link');
}
}
hdapp-available {
display: block;
text-align: right;
strong {
@extend %button;
}
}
#profiles-list {
@ -145,9 +221,44 @@ sib-display#member-info,
grid-gap: 1em;
}
}
#member-profile,
#profiles-list {
ul {
@include list-reset();
}
}
#member-profile {
@include media('width>tablet') {
div[name='header'] {
float: left;
width: 50%;
}
}
div[name='name'] {
@extend h1;
div {
display: inline-block;
margin-right: 0.4em;
}
}
div[name='pseudonym'] {
margin-top: -1em;
margin-bottom: 1em;
}
#member-info {
&:after {
content: '';
display: block;
clear: both;
}
}
}
// projects
#project-profile {
div[name^='label-'] {
@extend h2;
}
[name='title'] {
@extend h1;
> sib-display-div {
@ -159,6 +270,13 @@ sib-display#member-info,
content: '#';
}
}
div[name='name'] {
font-weight: normal;
&:before {
padding: 0 0.5em;
content: '/';
}
}
}
}
/*
@ -168,4 +286,4 @@ label {
content: ':';
}
}
*/
*/

View File

@ -1,11 +1,18 @@
//button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url, week, datetime
%button {
display: inline-block;
padding: 0.5em 1em;
border: none;
border-radius: 100em;
background-color: $color-yellow;
color: $color-black;
font-weight: normal;
}
.form-view {
@extend %frame;
padding: 1em;
}
sib-form.inline form {
sib-display sib-form form {
margin: -0.5em;
> * {
margin: 0.5em;
@ -73,10 +80,7 @@ sib-form {
input[type='file'],
input[type='reset'],
input[type='submit'] {
padding: 0.5em 1em;
border: none;
background-color: $color-yellow;
border-radius: 100em;
@extend %button;
}
input[type='reset'] {

View File

@ -90,7 +90,7 @@ $icons: (
fire: '\e01c',
eyeglass: '\e01d',
envelope-open: '\e01e',
envolope-letter: '\e01f',
envelope-letter: '\e01f',
energy: '\e020',
emotsmile: '\e021',
disc: '\e022',
@ -193,7 +193,7 @@ $icons: (
cloud-download: '\e083',
cloud-upload: '\e084',
doc: '\e085',
envolope: '\e086',
envelope: '\e086',
eye: '\e087',
flag: '\e088',
folder: '\e089',

View File

@ -4,7 +4,9 @@
display: none !important;
}
*,*::before,*::after{
*,
*::before,
*::after {
box-sizing: inherit;
}
@ -41,19 +43,27 @@ h6 {
}
h1 {
font-size: 1.23em;
font-size: 1.24em;
}
h2 {
font-size: 1.16em;
font-size: 1.04em;
}
h3 {
font-size: 1.12em;
font-size: .84em;
}
h4 {
font-size: 0.68em;
}
.debug {
outline: 2px dotted red;
}
.frame {
@extend %frame;
padding: 1em;
}
#header {
background-color: $color-white;
color: $color-black;

View File

@ -1,220 +0,0 @@
// members
%img-circle {
$width: 55%;
display: block;
position: relative;
width: $width;
padding-bottom: $width;
height: 0;
margin: 2em auto;
img {
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 100%;
object-fit: cover;
object-position: center;
}
}
%member {
sib-display-img {
@extend %img-circle;
}
display: block;
position: relative;
@extend %frame;
padding: 0.5em;
cursor: pointer;
&::before,
&::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
transform: scale3d(0, 0, 1);
transition: transform 0.3s ease-out 0s;
background: #eac1;
content: '';
pointer-events: none;
}
&::before {
transform-origin: left top;
}
&::after {
transform-origin: right bottom;
background: #ace1;
}
&:hover,
&:focus {
&::before,
&::after {
transform: scale3d(1, 1, 1);
}
}
}
#profiles-list {
display: block;
div[name='header'] {
border-top: 2em solid $color-grey-light;
border-bottom: 1px solid $color-grey-light;
padding-bottom: 1em;
margin: -0.5em;
padding: 0.5em;
margin-bottom: 1em;
text-align: center;
}
> div {
display: grid;
margin-top: 1em;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
grid-gap: 1em;
label {
display: none;
}
> sib-display {
@extend %member;
}
}
hdapp-userinfo {
display: block;
color: $color-black;
font-size: 1.1em;
margin: 0.5em;
ul,
li {
display: block;
margin: 0;
padding: 0;
list-style: none;
}
}
div[name='pseudonym'] {
font-size: 0.8em;
div {
display: inline;
}
}
}
// member
%detail-section {
font-weight: bold;
font-size: 18px;
}
#member-chat {
#conversejs {
margin: none;
}
}
#member-info {
padding: 1em;
@extend %frame;
}
#profiles-list,
#member-info {
img {
display: block;
}
img {
width: 100%;
}
div[name='name'] {
@extend %detail-section;
padding-top: 10px;
}
div[name='name'],
div[name='location'] {
display: flex;
}
}
#member-detail {
#member-info {
sib-display-mailto,
sib-display-tel {
display: block;
}
a[name='email'],
a[name='number'] {
&::before {
font-family: FontAwesome;
padding-right: 4px;
color: black;
}
}
a[name='email'] {
&::before {
content: '\f0e0';
}
}
a[name='number'] {
&::before {
content: '\f10b';
font-size: 22px;
padding-left: 3px;
padding-right: 7px;
}
}
}
.section {
position: relative;
h2 {
@extend %detail-section;
margin-top: 40px;
}
}
#member-skills {
display: flex;
flex-wrap: wrap;
sib-display {
display: block;
background-color: $color-black;
color: $color-white;
border-radius: 100px;
padding: 3px 10px;
margin-bottom: 5px;
margin-right: 5px;
}
}
}
@include media('width>phone') {
#member-detail {
#member-info {
sib-display-img {
display: block;
float: right;
width: 300px;
}
}
}
}
#member-info {
@extend %member;
}

@ -1 +1 @@
Subproject commit 8d615893e3f888a573e57ab7a67a41db4cd4c81f
Subproject commit 837d45a5a38c201456220ffe10e1dbc2ff526b55

View File

@ -40,8 +40,9 @@
<div id="members">
<h1>Members</h1>
<sib-display id="profiles-list"
data-src="https://test-paris.happy-dev.fr/members/"
data-fields="pseudo, user.member.user.member.user.member.bio, ab"
data-src="http://127.0.0.1:8000/members/"
data-fields="roles, ab"
widget-skills="sib-display-lookuplist"
set-ab="user.first_name, user.last_name"
></sib-display>
</div>