Commit cf0c45e2dd08e5428877c85b726d9039d7d7c624
Exists in
master
and in
2 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
9 changed files
with
185 additions
and
70 deletions
Show diff stats
amadeus/static/css/.sass-cache/a7f87b90919294b62ab4f8079e31dcda8f485534/green.sassc
No preview for this file type
amadeus/static/css/base/amadeus.css
1 | +body { | |
2 | + overflow-x: hidden; | |
3 | +} | |
4 | + | |
1 | 5 | ul, li { |
2 | 6 | list-style-type: none; |
3 | 7 | text-decoration: none; |
... | ... | @@ -1549,26 +1553,35 @@ div.dataTables_wrapper div.dataTables_paginate { |
1549 | 1553 | padding: 15px 0px; |
1550 | 1554 | } |
1551 | 1555 | |
1552 | -.subject-participants-label { | |
1553 | - padding-bottom: 5px; | |
1554 | - border-bottom-style: solid; | |
1555 | - border-bottom-width: 1px; | |
1556 | +.participants-list { | |
1557 | + height: 200px; | |
1558 | + max-height: 200px; | |
1559 | + width: 315px; | |
1560 | + float: right; | |
1561 | + position: absolute; | |
1562 | + top: 5px; | |
1563 | + right: -315px; | |
1564 | + overflow-y: auto; | |
1565 | + opacity: 0; | |
1566 | + visibility: hidden; | |
1556 | 1567 | } |
1557 | 1568 | |
1558 | -.subject-participants .sub-user { | |
1569 | +#participants { | |
1570 | + position: absolute; | |
1571 | + top: 5px; | |
1572 | + right: 0px; | |
1559 | 1573 | cursor: pointer; |
1574 | + padding: 8px; | |
1575 | + border-top-left-radius: 20px; | |
1576 | + border-bottom-left-radius: 20px; | |
1560 | 1577 | } |
1561 | 1578 | |
1562 | -.participants-container .popover { | |
1563 | - max-width: 330px; | |
1564 | -} | |
1565 | - | |
1566 | -.participants-container .popover-content { | |
1567 | - padding: 9px 5px; | |
1579 | +.participants-list .subject-participants { | |
1580 | + width: 300px; | |
1568 | 1581 | } |
1569 | 1582 | |
1570 | -.participants-container .popover-content h4 { | |
1571 | - font-size: 16px; | |
1583 | +.participants-container { | |
1584 | + cursor: pointer; | |
1572 | 1585 | } |
1573 | 1586 | |
1574 | 1587 | @-moz-document url-prefix() { | ... | ... |
amadeus/static/css/themes/green.css
... | ... | @@ -517,11 +517,20 @@ a.add-row { |
517 | 517 | .chat-panel .chat-collapse { |
518 | 518 | background: #EEE; } |
519 | 519 | |
520 | -.subject-participants-label { | |
521 | - border-bottom-color: #DDD; } | |
520 | +#participants, .participants-list { | |
521 | + background-color: #FFFFFF; } | |
522 | + | |
523 | +#participants { | |
524 | + box-shadow: -1px 1px 8px #0277BD; } | |
525 | + | |
526 | +#participants i { | |
527 | + color: #0277BD; } | |
528 | + | |
529 | +.participants-list { | |
530 | + box-shadow: -1px 2px 1px #0277BD; } | |
522 | 531 | |
523 | 532 | .subject-participants .sub-user:hover { |
524 | - background-color: #CCCCCC; } | |
533 | + background-color: #F3F3F3; } | |
525 | 534 | |
526 | 535 | #analytics-panel { |
527 | 536 | background-color: #0277BD !important; } | ... | ... |
amadeus/static/css/themes/green.css.map
1 | 1 | { |
2 | 2 | "version": 3, |
3 | -"mappings": "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", | |
3 | +"mappings": "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", | |
4 | 4 | "sources": ["green.sass"], |
5 | 5 | "names": [], |
6 | 6 | "file": "green.css" | ... | ... |
amadeus/static/css/themes/green.sass
... | ... | @@ -689,11 +689,20 @@ a.add-row |
689 | 689 | .chat-panel .chat-collapse |
690 | 690 | background: #EEE |
691 | 691 | |
692 | -.subject-participants-label | |
693 | - border-bottom-color: #DDD | |
692 | +#participants, .participants-list | |
693 | + background-color: $white | |
694 | + | |
695 | +#participants | |
696 | + box-shadow: -1px 1px 8px #0277BD | |
697 | + | |
698 | +#participants i | |
699 | + color: #0277BD | |
700 | + | |
701 | +.participants-list | |
702 | + box-shadow: -1px 2px 1px #0277BD | |
694 | 703 | |
695 | 704 | .subject-participants .sub-user:hover |
696 | - background-color: #CCCCCC | |
705 | + background-color: #F3F3F3 | |
697 | 706 | |
698 | 707 | #analytics-panel |
699 | 708 | background-color: #0277BD !important | ... | ... |
subjects/templates/subjects/view.html
... | ... | @@ -73,54 +73,53 @@ |
73 | 73 | </div> |
74 | 74 | </div> |
75 | 75 | </div> |
76 | - <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content"> | |
77 | - <div class="row"> | |
78 | - <div class="col-md-9"> | |
79 | - <p>{{subject.description|safe}}</p> | |
76 | + <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content" style="position: relative"> | |
77 | + <p>{{subject.description|safe}}</p> | |
80 | 78 | |
81 | - {% if has_subject_permissions %} | |
82 | - <a href="{% url 'topics:create' subject.slug %}" class="btn btn-sm btn-success btn-raised btn-block">{% trans "Create new topic" %}</a> | |
83 | - {% endif %} | |
79 | + {% if has_subject_permissions %} | |
80 | + <a href="{% url 'topics:create' subject.slug %}" class="btn btn-sm btn-success btn-raised btn-block">{% trans "Create new topic" %}</a> | |
81 | + {% endif %} | |
84 | 82 | |
85 | - {% include 'topics/list.html' with subject=subject %} | |
86 | - </div> | |
87 | - <div class="col-md-3 participants-list"> | |
88 | - <h2 class="my-subjects-title subject-participants-label"><b>{% trans 'Participants' %}</b></h2> | |
89 | - | |
90 | - <div class="subject-participants"> | |
91 | - {% for participant in participants %} | |
92 | - {% is_online participant as status %} | |
93 | - | |
94 | - <div class="participants-container"> | |
95 | - <div class="col-md-12 sub-user" data-toggle="popover" data-placement="left"> | |
96 | - <h4><a class="status {{ status }}" data-placement="right" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ participant }}</h4> | |
97 | - </div> | |
83 | + {% include 'topics/list.html' with subject=subject %} | |
84 | + | |
85 | + <div id="participants" data-toggle="tooltip" data-title="{% trans 'Participants' %}"> | |
86 | + <i class="fa fa-group"></i> | |
87 | + </div> | |
98 | 88 | |
99 | - <div class="popover"> | |
100 | - <div class="popover-content participant"> | |
101 | - <button type="button" class="close" aria-label="{% trans 'Close' %}"><span aria-hidden="true">×</span></button> | |
89 | + <div class="participants-list"> | |
90 | + <div class="subject-participants"> | |
91 | + {% for participant in participants %} | |
92 | + {% is_online participant as status %} | |
102 | 93 | |
103 | - <br clear="all" /> | |
94 | + <div class="participants-container"> | |
95 | + <div class="col-md-12 sub-user" data-toggle="popover" data-container="body" data-placement="left"> | |
96 | + <h4><a class="status {{ status }}" data-placement="right" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ participant }}</h4> | |
97 | + </div> | |
98 | + | |
99 | + <div class="popover"> | |
100 | + <div class="popover-content participant"> | |
101 | + <button type="button" class="close" aria-label="{% trans 'Close' %}"><span aria-hidden="true">×</span></button> | |
104 | 102 | |
105 | - <div class="col-md-3 user-img"> | |
106 | - <img src="{{ participant.image_url }}" class="img-responsive" /> | |
107 | - </div> | |
108 | - <div class="col-md-9 user-info"> | |
109 | - <h4><a class="status {{ status }}" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ participant }}</h4> | |
110 | - </div> | |
103 | + <br clear="all" /> | |
104 | + | |
105 | + <div class="col-md-3 user-img"> | |
106 | + <img src="{{ participant.image_url }}" class="img-responsive" /> | |
111 | 107 | </div> |
112 | - <div class="popover-footer"> | |
113 | - <a href="#" onclick="getModalInfo($(this), '{{ subject.id }}', 'subject'); return false;" data-url='{% url "chat:profile" participant.email %}' class="btn btn-default btn-sm btn-raised pull-left"> | |
114 | - {% trans 'See Profile' %} | |
115 | - </a> | |
116 | - <a href="#" onclick="getModalInfo($(this), '{{ subject.id }}', 'subject'); return false;" data-url='{% url "chat:talk" participant.email %}' class="btn btn-success btn-sm btn-raised pull-right"> | |
117 | - {% trans 'Send Message' %} | |
118 | - </a> | |
108 | + <div class="col-md-9 user-info"> | |
109 | + <h4><a class="status {{ status }}" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ participant }}</h4> | |
119 | 110 | </div> |
120 | 111 | </div> |
112 | + <div class="popover-footer"> | |
113 | + <a href="#" onclick="getModalInfo($(this), '{{ subject.id }}', 'subject'); return false;" data-url='{% url "chat:profile" participant.email %}' class="btn btn-default btn-sm btn-raised pull-left"> | |
114 | + {% trans 'See Profile' %} | |
115 | + </a> | |
116 | + <a href="#" onclick="getModalInfo($(this), '{{ subject.id }}', 'subject'); return false;" data-url='{% url "chat:talk" participant.email %}' class="btn btn-success btn-sm btn-raised pull-right"> | |
117 | + {% trans 'Send Message' %} | |
118 | + </a> | |
119 | + </div> | |
121 | 120 | </div> |
122 | - {% endfor %} | |
123 | - </div> | |
121 | + </div> | |
122 | + {% endfor %} | |
124 | 123 | </div> |
125 | 124 | </div> |
126 | 125 | </div> |
... | ... | @@ -159,10 +158,22 @@ |
159 | 158 | $('[data-toggle="popover"]').not(e.target).popover('hide'); |
160 | 159 | }).on('shown.bs.popover', function (e) { |
161 | 160 | if($(this).is(e.target)){ |
162 | - var popover = $(this), | |
161 | + var popover = $(".popover.fade.in"), | |
163 | 162 | buttons = popover.parent().find('a'), |
164 | 163 | close = popover.parent().find('.close:visible'); |
165 | - | |
164 | + | |
165 | + popover.animate({ | |
166 | + 'max-width': '330px', | |
167 | + }, 0); | |
168 | + | |
169 | + popover.find('.popover-content').animate({ | |
170 | + padding: '9px 5px', | |
171 | + }, 0); | |
172 | + | |
173 | + popover.find('h4').animate({ | |
174 | + 'font-size': '16px', | |
175 | + }, 0); | |
176 | + | |
166 | 177 | close.on("click", function () { |
167 | 178 | popover.popover('hide'); |
168 | 179 | }); |
... | ... | @@ -172,6 +183,33 @@ |
172 | 183 | }) |
173 | 184 | } |
174 | 185 | }); |
186 | + | |
187 | + $('#participants').on('click', function(){ | |
188 | + var $this = $(this), | |
189 | + list = $this.parent().find(".participants-list"); | |
190 | + | |
191 | + if ($this.hasClass('open')) { | |
192 | + $this.animate({ | |
193 | + right : '0px' | |
194 | + }, 500); | |
195 | + | |
196 | + list.animate({ | |
197 | + right : '-315px', | |
198 | + opacity: 0 | |
199 | + }, 500).css({visibility: 'hidden'}); | |
200 | + | |
201 | + $this.removeClass('open'); | |
202 | + } else { | |
203 | + $this.animate({ | |
204 | + right : "317" | |
205 | + }, 500).addClass('open'); | |
206 | + | |
207 | + list.animate({ | |
208 | + right : 0, | |
209 | + opacity: 1 | |
210 | + }, 500).css({visibility: 'visible'}); | |
211 | + } | |
212 | + }); | |
175 | 213 | }); |
176 | 214 | </script> |
177 | 215 | {% endblock content %} | ... | ... |
subjects/views.py
... | ... | @@ -5,6 +5,7 @@ from categories.models import Category |
5 | 5 | from django.core.urlresolvers import reverse_lazy |
6 | 6 | from rolepermissions.verifications import has_role |
7 | 7 | from django.db.models import Q |
8 | +from django.conf import settings | |
8 | 9 | from django.contrib import messages |
9 | 10 | from django.http import HttpResponse, JsonResponse, HttpResponseRedirect |
10 | 11 | from django.utils.translation import ugettext_lazy as _ |
... | ... | @@ -515,7 +516,15 @@ class SubjectDetailView(LoginRequiredMixin, LogMixin, DetailView): |
515 | 516 | |
516 | 517 | sub = self.kwargs.get('slug', '') |
517 | 518 | |
518 | - context['participants'] = User.objects.filter(Q(is_staff = True) | Q(subject_student__slug = sub) | Q(professors__slug = sub) | Q(coordinators__subject_category__slug = sub)).distinct().order_by('social_name','username').exclude(email = self.request.user.email) | |
519 | + status_query = "SELECT CASE WHEN action = 'logout' AND EXTRACT(EPOCH FROM(NOW() - datetime::timestamp)) < 1200 THEN 2 WHEN action = 'logout' AND EXTRACT(EPOCH FROM(NOW() - datetime::timestamp)) >= 1200 THEN 1 ELSE 0 END FROM log_log WHERE log_log.user_id = users_user.id ORDER BY datetime DESC LIMIT 1" | |
520 | + | |
521 | + expire_time = settings.SESSION_SECURITY_EXPIRE_AFTER | |
522 | + | |
523 | + context['participants'] = User.objects.filter( | |
524 | + Q(is_staff = True) | Q(subject_student__slug = sub) | | |
525 | + Q(professors__slug = sub) | | |
526 | + Q(coordinators__subject_category__slug = sub) | |
527 | + ).extra(select = {'status': status_query}, select_params=(expire_time, expire_time,),).distinct().order_by('status', 'social_name','username').exclude(email = self.request.user.email) | |
519 | 528 | |
520 | 529 | resources = self.request.session.get('resources', None) |
521 | 530 | ... | ... |
users/forms.py
... | ... | @@ -6,10 +6,11 @@ from rolepermissions.shortcuts import assign_role |
6 | 6 | from django.contrib.auth import update_session_auth_hash |
7 | 7 | from django.core.validators import validate_email |
8 | 8 | from django.core.exceptions import ValidationError |
9 | - | |
9 | +from os.path import join | |
10 | 10 | from resubmit.widgets import ResubmitFileWidget |
11 | 11 | from PIL import Image |
12 | - | |
12 | +import os | |
13 | +from amadeus import settings | |
13 | 14 | |
14 | 15 | from .models import User |
15 | 16 | |
... | ... | @@ -71,6 +72,7 @@ class RegisterUserForm(Validation): |
71 | 72 | |
72 | 73 | def save(self, commit=True): |
73 | 74 | super(RegisterUserForm, self).save(commit=False) |
75 | + self.deletepath = "" | |
74 | 76 | |
75 | 77 | x = self.cleaned_data.get('x') |
76 | 78 | y = self.cleaned_data.get('y') |
... | ... | @@ -81,12 +83,22 @@ class RegisterUserForm(Validation): |
81 | 83 | image = Image.open(self.instance.image) |
82 | 84 | cropped_image = image.crop((x, y, w+x, h+y)) |
83 | 85 | resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) |
86 | + | |
87 | + folder_path = join(settings.MEDIA_ROOT, 'users') | |
88 | + #check if the folder already exists | |
89 | + if not os.path.isdir(folder_path): | |
90 | + os.makedirs(folder_path) | |
91 | + | |
92 | + if ("users" not in self.instance.image.path): | |
93 | + self.deletepath = self.instance.image.path | |
94 | + | |
84 | 95 | resized_image.save(self.instance.image.path) |
85 | 96 | |
86 | 97 | self.instance.set_password(self.cleaned_data['new_password']) |
87 | 98 | |
88 | 99 | self.instance.save() |
89 | - | |
100 | + if (self.deletepath): | |
101 | + os.remove(self.deletepath) | |
90 | 102 | return self.instance |
91 | 103 | |
92 | 104 | class Meta: |
... | ... | @@ -111,6 +123,7 @@ class ProfileForm(Validation): |
111 | 123 | |
112 | 124 | def save(self, commit=True): |
113 | 125 | super(ProfileForm, self).save(commit=False) |
126 | + self.deletepath = "" | |
114 | 127 | x = self.cleaned_data.get('x') |
115 | 128 | y = self.cleaned_data.get('y') |
116 | 129 | w = self.cleaned_data.get('width') |
... | ... | @@ -120,10 +133,20 @@ class ProfileForm(Validation): |
120 | 133 | image = Image.open(self.instance.image) |
121 | 134 | cropped_image = image.crop((x, y, w+x, h+y)) |
122 | 135 | resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) |
136 | + | |
137 | + folder_path = join(settings.MEDIA_ROOT, 'users') | |
138 | + #check if the folder already exists | |
139 | + if not os.path.isdir(folder_path): | |
140 | + os.makedirs(folder_path) | |
141 | + | |
142 | + if ("users" not in self.instance.image.path): | |
143 | + self.deletepath = self.instance.image.path | |
144 | + | |
123 | 145 | resized_image.save(self.instance.image.path) |
124 | 146 | |
125 | 147 | self.instance.save() |
126 | - | |
148 | + if (self.deletepath): | |
149 | + os.remove(self.deletepath) | |
127 | 150 | return self.instance |
128 | 151 | |
129 | 152 | class Meta: |
... | ... | @@ -158,6 +181,7 @@ class UserForm(Validation): |
158 | 181 | |
159 | 182 | def save(self, commit=True): |
160 | 183 | super(UserForm, self).save(commit=False) |
184 | + self.deletepath = "" | |
161 | 185 | |
162 | 186 | x = self.cleaned_data.get('x') |
163 | 187 | y = self.cleaned_data.get('y') |
... | ... | @@ -168,6 +192,15 @@ class UserForm(Validation): |
168 | 192 | image = Image.open(self.instance.image) |
169 | 193 | cropped_image = image.crop((x, y, w+x, h+y)) |
170 | 194 | resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) |
195 | + | |
196 | + folder_path = join(settings.MEDIA_ROOT, 'users') | |
197 | + #check if the folder already exists | |
198 | + if not os.path.isdir(folder_path): | |
199 | + os.makedirs(folder_path) | |
200 | + | |
201 | + if ("users" not in self.instance.image.path): | |
202 | + self.deletepath = self.instance.image.path | |
203 | + | |
171 | 204 | resized_image.save(self.instance.image.path) |
172 | 205 | |
173 | 206 | |
... | ... | @@ -175,7 +208,8 @@ class UserForm(Validation): |
175 | 208 | self.instance.set_password(self.cleaned_data['new_password']) |
176 | 209 | |
177 | 210 | self.instance.save() |
178 | - | |
211 | + if (self.deletepath): | |
212 | + os.remove(self.deletepath) | |
179 | 213 | return self.instance |
180 | 214 | |
181 | 215 | class Meta: | ... | ... |
users/views.py
... | ... | @@ -30,7 +30,7 @@ from django.core.mail import EmailMessage |
30 | 30 | from django.core.mail.backends.smtp import EmailBackend |
31 | 31 | |
32 | 32 | from mailsender.models import MailSender |
33 | - | |
33 | +import os | |
34 | 34 | #API IMPORTS |
35 | 35 | from rest_framework import viewsets |
36 | 36 | from .serializers import UserSerializer |
... | ... | @@ -209,6 +209,8 @@ class DeleteView(braces_mixins.LoginRequiredMixin, LogMixin, generic.DeleteView) |
209 | 209 | email = self.kwargs.get('email', None) |
210 | 210 | user = self.get_object() |
211 | 211 | |
212 | + | |
213 | + | |
212 | 214 | if email is None: |
213 | 215 | self.log_action = 'remove_account' |
214 | 216 | |
... | ... | @@ -233,11 +235,12 @@ class DeleteView(braces_mixins.LoginRequiredMixin, LogMixin, generic.DeleteView) |
233 | 235 | redirect_url = redirect(error_url) |
234 | 236 | else: |
235 | 237 | self.log_context['dependencies'] = False |
236 | - | |
238 | + image_path_to_delete = user.image.path | |
237 | 239 | user.delete() |
238 | 240 | |
239 | 241 | messages.success(self.request, success_msg) |
240 | - | |
242 | + #deleting the user image | |
243 | + os.remove(image_path_to_delete) | |
241 | 244 | redirect_url = redirect(success_url) |
242 | 245 | |
243 | 246 | super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | ... | ... |