Commit d1d9721bb288bd8508fc4f388f222726926d927b
1 parent
44d74d23
Exists in
master
and in
3 other branches
modified users urls to receive login url and view
Showing
5 changed files
with
254 additions
and
1 deletions
Show diff stats
@@ -0,0 +1,151 @@ | @@ -0,0 +1,151 @@ | ||
1 | +<!DOCTYPE html> | ||
2 | + | ||
3 | +{% load static i18n %} | ||
4 | +{% load static i18n permission_tags %} | ||
5 | +{% get_current_language as LANGUAGE_CODE %} | ||
6 | + | ||
7 | +<html> | ||
8 | +<head> | ||
9 | + <title>{{ title }} | Amadeus</title> | ||
10 | + | ||
11 | + <!-- jQuery & jQuery UI --> | ||
12 | + <script type="text/javascript" src="{% static 'js/vendor/jquery-3.1.0.min.js' %}"></script> | ||
13 | + <script type="text/javascript" src="{% static 'js/vendor/jquery-ui.js' %}"></script> | ||
14 | + | ||
15 | + <meta http-equiv="Cache-Control" content="no-cache, no-store" /> | ||
16 | + <link href="{% static 'img/topo-amadeus.png' %}" rel="shortcut icon" /> | ||
17 | + <!-- Roboto font --> | ||
18 | + <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700" type="text/css"> | ||
19 | + <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | ||
20 | + | ||
21 | + <!-- Bootstrap and themes (material) --> | ||
22 | + <link rel="stylesheet" type="text/css" href="{% static 'bootstrap-3.3.7/css/bootstrap.css' %}"> | ||
23 | + | ||
24 | + <link rel="stylesheet" type="text/css" href="{% static 'material/css/bootstrap-material-design.min.css' %}"> | ||
25 | + <link rel="stylesheet" type="text/css" href="{% static 'material/css/ripples.css' %}"> | ||
26 | + <link rel="stylesheet" type="text/css" href="{% static 'material/css/ripples.min.css' %}"> | ||
27 | + | ||
28 | + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/bootstrap-datepicker.standalone.css' %}"> | ||
29 | + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/alertify.min.css' %}"> | ||
30 | + <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/themes/bootstrap.css' %}"> | ||
31 | + <link rel="stylesheet" type="text/css" href="{% static 'css/base/material_guideline.css' %}"> | ||
32 | + | ||
33 | + <script type="text/javascript" src="{% static 'bootstrap-3.3.7/js/bootstrap.js' %}"></script> | ||
34 | + <script type="text/javascript" src="{% static 'js/vendor/bootstrap-acessibility.min.js' %}"></script> | ||
35 | + <script type="text/javascript" src="{% static 'material/js/material.min.js' %}"></script> | ||
36 | + <script type="text/javascript" src="{% static 'material/js/ripples.min.js' %}"></script> | ||
37 | + <script type="text/javascript" src="{% static 'js/vendor/bootstrap-datepicker.js' %}"></script> | ||
38 | + {% with "js/vendor/locales/bootstrap-datepicker."|add:LANGUAGE_CODE|add:".js" as locale_datepicker %} | ||
39 | + <script type="text/javascript" src="{% static locale_datepicker %}"></script> | ||
40 | + {% endwith %} | ||
41 | + <script type="text/javascript" src="{% static 'js/vendor/alertify.min.js' %}"></script> | ||
42 | + <script type="text/javascript" src="{% static 'js/vendor/jscookie.js' %}"></script> | ||
43 | + | ||
44 | + <!-- Font awesome --> | ||
45 | + <link rel="stylesheet" type="text/css" href="{% static 'font-awesome-4.6.3/css/font-awesome.min.css' %}"> | ||
46 | + | ||
47 | + <!-- Custom styles --> | ||
48 | + <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus.css' %}"> | ||
49 | + | ||
50 | + <!--Javascript block for specific-app ones --> | ||
51 | + <script src="{% static 'js/base/amadeus.js' %}"></script> | ||
52 | + <script src="{% static 'js/main.js' %}"></script> | ||
53 | + {% block style %} | ||
54 | + {% endblock %} | ||
55 | + {% block javascript %} | ||
56 | + {% endblock %} | ||
57 | + | ||
58 | + <!-- Summernote --> | ||
59 | + <script src="{% static 'summernote/summernote.js' %}" type="text/javascript"></script> | ||
60 | + <link href="{% static 'summernote/summernote.css' %}" type="text/css" rel="stylesheet" /> | ||
61 | + | ||
62 | +</head> | ||
63 | +<body> | ||
64 | + {% block nav %} | ||
65 | + <div class="navbar navbar-default"> | ||
66 | + <div class="navbar-header"> | ||
67 | + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse"> | ||
68 | + <span class="icon-bar"></span> | ||
69 | + <span class="icon-bar"></span> | ||
70 | + <span class="icon-bar"></span> | ||
71 | + </button> | ||
72 | + <a class="navbar-brand" href="{% url 'app:index' %}"><img class="logo" src="{% static 'img/topo-amadeus-white.png' %}" alt="Logo"/></a> | ||
73 | + </div> | ||
74 | + <div class="navbar-collapse collapse navbar-responsive-collapse"> | ||
75 | + <div class="col-md-5 cards-content" id= 'NavBarSearch'> | ||
76 | + <form id="SearchForm" action="{% url 'users:search' %}" method="get" accept-charset="utf-8"> | ||
77 | + <div class="input-group"> | ||
78 | + <div class="form-group is-empty" > | ||
79 | + <input type="text" class="form-control" placeholder="{% trans 'Search Files (.pdf, others) and/or activities' %}" name="search"> | ||
80 | + </div> | ||
81 | + <span class="input-group-btn input-group-sm"> | ||
82 | + <button type="submit" class="btn btn-primary" id="btn-search"> | ||
83 | + <i class="fa fa-search fa-2x" aria-hidden="true" style="color:#93C741"></i> | ||
84 | + </button> | ||
85 | + </span> | ||
86 | + </div> | ||
87 | + </form> | ||
88 | + </div> | ||
89 | + <ul class="nav navbar-nav navbar-right notifications"> | ||
90 | + <li class="" data-toggle="tooltip" data-placement="bottom" title data-original-title="notifications"> | ||
91 | + <a class="dropdown-toggle" data-toggle="dropdown"> <span id="notification-count" class="badge notification-count">{{notifications.count}}</span><i class="fa fa-bell" aria-hidden="true"></i></a> | ||
92 | + <ul id="notification-dropdown" class="dropdown-menu"> | ||
93 | + <li class="dropdown-header"> {% trans 'Notifications' %}</li> | ||
94 | + {% include "notifications.html" %} | ||
95 | + <li> | ||
96 | + <a onclick="getNotifications(5)"> | ||
97 | + <div id="notification-see-more" class="list-group-item"> | ||
98 | + <div class="row-content"> | ||
99 | + <p class="list-group-item-text">{% trans 'See More' %}</p> | ||
100 | + </div> | ||
101 | + </div> | ||
102 | + </a> | ||
103 | + </li> | ||
104 | + </ul> | ||
105 | + </li> | ||
106 | + <li data-toggle="tooltip" data-placement="bottom" title data-original-title="{% trans 'messages' %}"> <a href="#"><i class="fa fa-comments" aria-hidden="true"></i></a> </li> | ||
107 | + <li> | ||
108 | + <a href="" data-toggle="dropdown">{{ user }}</a> | ||
109 | + <ul class="dropdown-menu pull-right"> | ||
110 | + <li><a href="{% url 'users:profile' %}">{% trans 'Perfil' %}</a></li> | ||
111 | + <li><a href="{% url 'users:update_profile' %}">{% trans 'Edit Profile' %}</a></li> | ||
112 | + <li><a href="{% url 'users:change_password' %}">{% trans 'Change password' %}</a></li> | ||
113 | + <li><a href="{% url 'users:remove_account' %}">{% trans 'Remove account' %}</a></li> | ||
114 | + </ul> | ||
115 | + </li> | ||
116 | + <li data-toggle="tooltip" data-placement="bottom" title data-original-title="log out"> <a href="{% url 'core:logout' %}"><i class="fa fa-sign-out" aria-hidden="true"></i></a></li> | ||
117 | + </ul> | ||
118 | + </div> | ||
119 | + </div> | ||
120 | + {% endblock %} | ||
121 | + <div class="container-fluid"> | ||
122 | + <div class="row"> | ||
123 | + <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2"> | ||
124 | + {% block test %} | ||
125 | + {% endblock %} | ||
126 | + {% block sidebar %} | ||
127 | + {% endblock %} | ||
128 | + </div> | ||
129 | + <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10"> | ||
130 | + {% block breadcrumbs %}{% endblock %} | ||
131 | + {% block render_breadcrumbs %}{% endblock %} | ||
132 | + </div> | ||
133 | + <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10"> | ||
134 | + {% block content %}{% endblock %} | ||
135 | + </div> | ||
136 | + </div> | ||
137 | + </div> | ||
138 | + | ||
139 | + {% block script_file %} | ||
140 | + | ||
141 | + {% endblock script_file %} | ||
142 | + | ||
143 | + {% block script_link %} | ||
144 | + | ||
145 | + {% endblock script_link %} | ||
146 | + <!-- Init material Bootstrap --> | ||
147 | + <script type="text/javascript" src="{% static 'js/home.js' %}"></script> | ||
148 | + <script type="text/javascript">$.material.init()</script> | ||
149 | +</body> | ||
150 | + | ||
151 | +</html> | ||
0 | \ No newline at end of file | 152 | \ No newline at end of file |
amadeus/urls.py
@@ -19,6 +19,7 @@ from django.conf.urls import include, url | @@ -19,6 +19,7 @@ from django.conf.urls import include, url | ||
19 | from django.conf.urls.static import static | 19 | from django.conf.urls.static import static |
20 | from django.contrib import admin | 20 | from django.contrib import admin |
21 | 21 | ||
22 | + | ||
22 | urlpatterns = [ | 23 | urlpatterns = [ |
23 | url(r'^users/', include('users.urls', namespace = 'users')), | 24 | url(r'^users/', include('users.urls', namespace = 'users')), |
24 | url(r'^admin/', admin.site.urls), | 25 | url(r'^admin/', admin.site.urls), |
@@ -0,0 +1,81 @@ | @@ -0,0 +1,81 @@ | ||
1 | +{% extends 'base.html' %} | ||
2 | + | ||
3 | +{% load static i18n %} | ||
4 | +{% load widget_tweaks %} | ||
5 | + | ||
6 | +{% block nav %} | ||
7 | +{% endblock %} | ||
8 | + | ||
9 | +{% block sidebar %} | ||
10 | +{% endblock sidebar %} | ||
11 | + | ||
12 | +{% block content %} | ||
13 | +<div class="row"> | ||
14 | + <div class="col-sm-7 col-sm-offset-4 col-md-6 col-md-offset-4 col-xs-8 col-xs-offset-3 col-lg-6 col-lg-offset-4 col-xl-6 col-xl-offset-4 "> | ||
15 | + <div class="col-sm-9 col-sm-offset-2 col-md-8 col-md-offset-2 col-xs-9 col-xs-offset-2 col-lg-8 col-lg-offset-2 col-xl-8 col-xl-offset-2"> | ||
16 | + <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block logo-login " alt="logo amadeus"> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | +</div> | ||
20 | + | ||
21 | +<div class="row"> | ||
22 | + <div class="col-lg-8 col-lg-offset-3 col-md-8 col-md-offset-3 col-sm-9 col-sm-offset-3 col-xs-10 col-xs-offset-2"> | ||
23 | + {% if messages %} | ||
24 | + {% for message in messages %} | ||
25 | + <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> | ||
26 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
27 | + <span aria-hidden="true">×</span> | ||
28 | + </button> | ||
29 | + <p>{{ message }}</p> | ||
30 | + </div> | ||
31 | + {% endfor %} | ||
32 | + {% endif %} | ||
33 | + <div class="card"> | ||
34 | + <div class="card-block"> | ||
35 | + <div class="row"> | ||
36 | + <div class="col-md-12 text-center"> | ||
37 | + <h2 style="color:#43a251"><strong> {% trans 'Sign in with your account to continue' %} </strong></h2> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <form id="form-login" method="post" action=""> | ||
41 | + {% csrf_token %} | ||
42 | + <div class="col-md-10 col-md-offset-1"> | ||
43 | + <div class="form-group"> | ||
44 | + <label for="inputEmail" class="control-label"> {% trans 'Username' %}</label> | ||
45 | + <input form="form-login" for="inputSmall" type="text" name="username" class="form-control" placeholder="{% trans 'Username' %}" id="inputEmail" value="{% if username %}{{username}}{% endif %}"> | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + <div class="col-md-10 col-md-offset-1"> | ||
49 | + <div class="form-group"> | ||
50 | + <label for="inputPassword" class="control-label"> {% trans 'Password' %}</label> | ||
51 | + <input form="form-login" for="inputSmall" type="password" name="password" class="form-control" id="inputPassword" placeholder="{% trans 'Password' %}"> | ||
52 | + </div> | ||
53 | + </div> | ||
54 | + <div class="col-md-10 col-md-offset-1"> | ||
55 | + <div class="checkbox"> | ||
56 | + <label> | ||
57 | + <input type="checkbox" name="checkbox"><span class="checkbox-material"></span> {% trans 'Remember Email' %} | ||
58 | + </label> | ||
59 | + </div> | ||
60 | + </div> | ||
61 | + </form> | ||
62 | + <div class="row"> | ||
63 | + <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 col-lg-offset-1 col-md-offset-1 text-center"> | ||
64 | + <button type="submite" class="btn btn-success btn-raised btn-block" form="form-login" style="position: initial;"> {% trans 'Log in' %} </button> | ||
65 | + </div> | ||
66 | + <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 text-center"> | ||
67 | + <a class="btn btn-default btn-raised btn-block" href="{% url 'core:guest' %}" formaction="#" style="position: initial;">{% trans 'Guest' %}</a> | ||
68 | + </div> | ||
69 | + </div> | ||
70 | + <div class="row"> | ||
71 | + <div class="col-md-offset-1 col-md-10 text-right forgotPassword"> | ||
72 | + <a href="{% url 'core:password_reset' %}">{% trans 'Forgot your password?' %}</a> | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + </div> | ||
76 | + </div> | ||
77 | + <a class="btn btn-raised btn-primary btn-block" href="{% url 'core:register' %}">{% trans 'Sign Up' %} </a> | ||
78 | + </div> | ||
79 | +</div> | ||
80 | + | ||
81 | +{% endblock%} | ||
0 | \ No newline at end of file | 82 | \ No newline at end of file |
users/urls.py
@@ -4,7 +4,8 @@ from . import views | @@ -4,7 +4,8 @@ from . import views | ||
4 | 4 | ||
5 | 5 | ||
6 | urlpatterns = [ | 6 | urlpatterns = [ |
7 | - url(r'^$', views.UsersListView.as_view(), name='manage'), | 7 | + url(r'^login/$', views.login, name='login'), |
8 | + #url(r'^$', views.UsersListView.as_view(), name='manage'), | ||
8 | url(r'^create/$', views.Create.as_view(), name='create'), | 9 | url(r'^create/$', views.Create.as_view(), name='create'), |
9 | url(r'^edit/(?P<username>[\w_-]+)/$', views.Update.as_view(), name='update'), | 10 | url(r'^edit/(?P<username>[\w_-]+)/$', views.Update.as_view(), name='update'), |
10 | url(r'^view/(?P<username>[\w_-]+)/$', views.View.as_view(), name='view'), | 11 | url(r'^view/(?P<username>[\w_-]+)/$', views.View.as_view(), name='view'), |
users/views.py
@@ -221,6 +221,25 @@ class SearchView(LoginRequiredMixin, generic.ListView): | @@ -221,6 +221,25 @@ class SearchView(LoginRequiredMixin, generic.ListView): | ||
221 | return context | 221 | return context |
222 | 222 | ||
223 | 223 | ||
224 | +def login(self, request): | ||
225 | + context = {} | ||
226 | + context['title'] = 'Log In' | ||
227 | + | ||
228 | + if request.POST: | ||
229 | + username = request.POST['username'] | ||
230 | + password = request.POST['password'] | ||
231 | + user = authenticate(username=username, password=password) | ||
232 | + if user is not None: | ||
233 | + login_user(request, user) | ||
234 | + return redirect(reverse("users:login")) | ||
235 | + else: | ||
236 | + messages.add_message(request, messages.ERROR, _('E-mail or password are incorrect.')) | ||
237 | + context["username"] = username | ||
238 | + elif request.user.is_authenticated: | ||
239 | + return redirect(reverse('users:login')) | ||
240 | + | ||
241 | + return render(request,"index.html",context) | ||
242 | + | ||
224 | # API VIEWS | 243 | # API VIEWS |
225 | 244 | ||
226 | class UserViewSet(viewsets.ModelViewSet): | 245 | class UserViewSet(viewsets.ModelViewSet): |