Add updated front end, updated CaseStudy model and profiles app

This commit is contained in:
Livvy Mackintosh
2017-10-31 14:57:26 +00:00
parent f91b4d2a2a
commit 43d6ec989b
30 changed files with 1065 additions and 77 deletions

View File

@ -30,7 +30,10 @@ SECRET_KEY = os.getenv(
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = bool(int(os.getenv('DEBUG', False)))
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', 'localhost').split()
if DEBUG:
ALLOWED_HOSTS = ['*']
else:
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', 'localhost').split()
# Application definition
@ -51,6 +54,7 @@ INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
'django.contrib.staticfiles',
'django.contrib.gis',
'avatar',
'bootstrap3',
'cas_server',
'compressor',
@ -62,6 +66,7 @@ INSTALLED_APPS = [
'raven.contrib.django.raven_compat',
'rest_framework',
'rest_framework_gis',
'storages'
]
MIDDLEWARE = [
@ -174,6 +179,16 @@ LOCALE_PATHS = [
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_ENDPOINT_URL = "https://ojuso-media.nyc3.digitaloceanspaces.com"
AWS_STORAGE_BUCKET_NAME = "ojuso-media"
AWS_LOCATION = ""
AWS_S3_REGION_NAME = "nyc3"
AWS_S3_CUSTOM_DOMAIN = "ojuso-media.nyc3.digitaloceanspaces.com/ojuso-media"
AWS_ACCESS_KEY_ID = "RUZTFVKPCNJIWCVUVJFW"
AWS_SECRET_ACCESS_KEY = "pTZAnmtvGzFBdI/jwtwRoFW5eK7eJ8FLFxr1/Jb+Yq4"
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = os.getenv("STATIC_URL", '/static/')
STATICFILES_FINDERS = [
@ -184,7 +199,7 @@ STATICFILES_FINDERS = [
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = os.getenv("MEDIA_URL", '/media/')
MEDIA_URL = os.getenv("MEDIA_URL", "https://ojuso-media.nyc3.digitaloceanspaces.com/ojuso-media/")
# Cache
# https://docs.djangoproject.com/en/1.11/topics/cache/
@ -248,3 +263,13 @@ RAVEN_CONFIG = {
# release based on the git info.
'release': raven.fetch_git_sha(os.path.dirname(os.pardir)),
}
# Avatars
AVATAR_GRAVATAR_DEFAULT = "mm"
AVATAR_CLEANUP_DELETED = True
# Messages
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}

View File

@ -0,0 +1,36 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block title %}User: {{ object.username }}{% endblock %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-12">
<h2>{{ object.username }}</h2>
{% if object.name %}
<p>{{ object.name }}</p>
{% endif %}
</div>
</div>
{% if object == request.user %}
<!-- Action buttons -->
<div class="row">
<div class="col-sm-12">
<a class="btn btn-primary" href="{% url 'profile:update' %}" role="button">{% trans 'Change Name' %}</a>
<a class="btn btn-primary" href="" role="button">E-Mail</a>
<!-- Your Stuff: Custom user template urls -->
</div>
</div>
<!-- End Action buttons -->
{% endif %}
</div>
{% endblock content %}

View File

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% block title %}{{ user.username }}{% endblock %}
{% block content %}
<h1>{{ user.username }}</h1>
<form class="form-horizontal" method="post" action="{% url 'profile:update' %}">
{% csrf_token %}
{{ form|crispy }}
<div class="control-group">
<div class="controls">
<button type="submit" class="btn">Update</button>
</div>
</div>
</form>
{% endblock %}

View File

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load static i18n %}
{% block title %}Members{% endblock %}
{% block content %}
<div class="container">
<h2>Users</h2>
<div class="list-group">
{% for user in user_list %}
<a href="" class="list-group-item">
<h4 class="list-group-item-heading">{{ user.username }}</h4>
</a>
{% endfor %}
</div>
</div>
{% endblock content %}

View File

@ -1,4 +1,5 @@
{% spaceless %}
{% load avatar_tags %}
{% load flatpages %}
{% load i18n %}
{% load leaflet_tags %}
@ -10,7 +11,9 @@
<meta charset="utf-8">
<title>{% block page_title %}Ojuso{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<script src="{% static 'map/bundle.js'%}"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"></script>
<!--{# <script src="{% static 'map/bundle.js'%}"></script> #}-->
{# Additional Stylesheets #}
{% block stylesheets %}
@ -22,42 +25,68 @@
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="{% url 'index' %}">
<img src="{% static 'map/images/ojuso-logo-black.png' %}" height="40px"/>
<img src="{% static 'map/images/ojuso-logo-black.png' %}" height="20px"/>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Map <span class="sr-only">(current)</span></a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'index' %}">{% trans 'Map' %}<span class="sr-only">(current)</span></a>
</li>
{% get_flatpages as flatpages %}
{% for page in flatpages %}
<li class="nav-item"><a class="nav-link" href="{{page.url}}">{{page.title}}</a></li>
{% endfor %}
</ul>
<ul class="navbar-nav my-2 my-lg-0">
{% if user.is_authenticated %}
<li class="nav-item">
<a class="btn btn-outline-info" href="{% url 'create' %}"><i class="fa fa-plus" aria-hidden="true"> New Case Study</i></a>
</li>
<li class="nav-item dropdown">
<a style="margin:-10px 0 -10px 0" class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="{% avatar_url user %}" class="rounded-circle" width="40" height="40" style="position:relative;margin-right:5px"/><span>{{user}}</span>
</a>
<div class="dropdown-menu dropdown-menu-right" style="padding-bottom:0px" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{% url 'avatar_change' %}"><i class="fa fa-cog" aria-hidden="true"></i> Change Avatar</a>
<a class="dropdown-item" href="{% url 'profile:detail' %}"><i class="fa fa-cog" aria-hidden="true"></i> Profile</a>
<div class="dropdown-divider" style="margin-bottom:0px"></div>
<a class="dropdown-item bg-danger" style="color:white;padding:0.5rem 1.5rem" href="{% url 'auth_logout' %}"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> {% trans 'Logout' %}</a>
</div>
</li>
{% get_flatpages as flatpages %}
{% for page in flatpages %}
<li class="nav-item"><a class="nav-link" href="{{page.url}}">{{page.title}}</a></li>
{% endfor %}
</ul>
{% else %}
<li class="nav-item"><a style="margin: 5px;" class="btn btn-outline-primary" href={% url 'auth_login' %}>{% trans 'Login' %}</a></li>
<li class="nav-item"><a style="margin: 5px;" class="btn btn-info" href={% url 'registration_register' %}>{% trans 'Register' %}</a></li>
{% endif %}
</ul>
</div>
{% if user.is_authenticated %}
<span>{{user}}</span>
<a class="btn btn-primary" href={% url 'auth_logout' %}>Logout</a>
{% else %}
<a style="margin: 5px;" class="btn btn-primary" href={% url 'auth_login' %}>Login</a>
<a style="margin: 5px;" class="btn btn-info" href={% url 'registration_register' %}>Register</a>
{% endif %}
</nav>
</nav>
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
{% endfor %}
{% endif %}
{% block content %}
{% endblock %}
</body>
{# CDN Javascript #}
<script src="//code.jquery.com/jquery-3.2.1.min.js"
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
crossorigin="anonymous">
</script>
<script src="//code.jquery.com/jquery-3.2.1.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
{% block scripts %}{% endblock %}
</html>
{% endspaceless %}

View File

@ -1,10 +1,9 @@
{% extends 'base_email.html' %}
{% block content %}
<div align="left">
{{user}},<br><br>
To activate your account and log in, <a href="https://animalrightsmap.org{% url 'registration_activate' activation_key %}">click here</a>.<br>
This link will expire in 7 days so be sure do it soon.<br><br>
See you on the activist trail!<br><br>
- Animal Rights Map
{{user}},<br><br>
To activate your account and log in, <a href="https://animalrightsmap.org{% url 'registration_activate' activation_key %}">click here</a>.<br>
This link will expire in 7 days so be sure do it soon.<br><br>
- Ojuso
</div>
{% endblock %}

View File

@ -9,8 +9,8 @@
{% block content %}
<div class="container" style="max-width:520px;">
<div class="page-lead">
<h2>Login</h2>
<p class="lead">{% trans "Welcome!" %}</p>
<h2>{% trans 'Login' %}</h2>
<p class="lead">{% trans 'Welcome!' %}</p>
</div>
{% bootstrap_messages %}
<form action="{% url 'auth_login' %}?next={{next}}" method="post">

View File

@ -2,21 +2,22 @@
{% load bootstrap3 %}
{% load crispy_forms_tags %}
{% load envelope_tags %}
{% load i18n %}
{% block page_name %}Registration{% endblock %}
{% block content %}
<div class="container" style="max-width:520px;">
<div class="page-lead">
<h2>Registration</h2>
<p class="lead">Create your account and get active!</p>
<h2>{% trans 'Registration' %}</h2>
<p class="lead">{% trans 'Create your account and get active!' %}</p>
</div>
{% bootstrap_messages %}
<form action="{% url 'registration_register' %}" method="post">
{% csrf_token %}
{% antispam_fields %}
{{ form|crispy }}
<input class="btn btn-success pull-right" type="submit" name"submit" value"Register"/>
<input class="btn btn-success pull-right" type="submit" name="su/bmit" value="{% trans 'Register'%}"/>
</form>
</div>
{% endblock %}

View File

@ -51,12 +51,13 @@ apirouter.register(r'case-studies', CaseStudyViewSet)
urlpatterns = [
url(r'api/', include(apirouter.urls)),
url(r'^admin/', admin.site.urls),
url(r'^avatar/', include('avatar.urls')),
url(r'^cas/', include('cas_server.urls', namespace='cas_server')),
# url(r'^contact/', include('apps.contact.urls'), name="contact")
# url(r'^contact/', include('apps.contact.urls'), name="contact"),
]
urlpatterns += i18n_patterns(
url(r'^accounts/profile/', include('apps.profiles.urls')),
url(r'^accounts/profile/', include('apps.profiles.urls', namespace="profile")),
# url(r'^accounts/logout/?$', include('django.contrib.auth.views.logout'), {'next_page': '/'}),
url(r'^accounts/', include('registration.backends.default.urls')),
url(r'', include('apps.map.urls'), name="map"),