LIL-595 Сортировка при выводе курсов на сайте

remotes/origin/hotfix/LIL-661
gzbender 8 years ago
parent a0a4b0b059
commit d261388942
  1. 2
      apps/course/models.py
  2. 15
      apps/course/views.py
  3. 44
      web/src/components/CourseRedactor.vue

@ -97,7 +97,7 @@ class Course(BaseModel, DeactivatedMixin):
class Meta: class Meta:
verbose_name = 'Курс' verbose_name = 'Курс'
verbose_name_plural = 'Курсы' verbose_name_plural = 'Курсы'
ordering = ['-created_at'] ordering = ['-is_featured', ]
def __str__(self): def __str__(self):
return str(self.id) + ' ' + self.title return str(self.id) + ' ' + self.title

@ -1,3 +1,4 @@
from random import shuffle
from paymentwall import Pingback from paymentwall import Pingback
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
@ -234,7 +235,6 @@ class CoursesView(ListView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.object_list = self.get_queryset() self.object_list = self.get_queryset()
allow_empty = self.get_allow_empty()
if request.is_ajax(): if request.is_ajax():
context = self.get_context_data() context = self.get_context_data()
template_name = self.get_template_names() template_name = self.get_template_names()
@ -276,6 +276,19 @@ class CoursesView(ListView):
context = super().get_context_data() context = super().get_context_data()
filtered = CourseFilter(self.request.GET) filtered = CourseFilter(self.request.GET)
context.update(filtered.data) context.update(filtered.data)
# Иммитация order_by('?'), чтобы можно было использовать пагинацию
# если что, сделать свой QuerySet для Course с методом, который возвращает такой список
course_items = context.get('course_items')
featured = []
other = []
for ci in course_items:
if ci.is_featured:
featured.append(ci)
else:
other.append(ci)
shuffle(featured)
shuffle(other)
context['course_items'] = featured + other
return context return context
def get_template_names(self): def get_template_names(self):

@ -992,28 +992,28 @@
}); });
} }
// let user = api.getCurrentUser(this.accessToken); let user = api.getCurrentUser(this.accessToken);
// promises.push(user); promises.push(user);
//
// user.then((response) => { user.then((response) => {
// if (response.data) { if (response.data) {
// this.me = response.data; this.me = response.data;
//
// if(this.me.role == ROLE_ADMIN) { /* if(this.me.role == ROLE_ADMIN) {
// api.getUsers({role: [ROLE_AUTHOR,ROLE_ADMIN], page_size: 1000}, this.accessToken) api.getUser(this.me.id, {role: [ROLE_AUTHOR, ROLE_ADMIN], page_size: 1000}, this.accessToken)
// .then((usersResponse) => { .then((usersResponse) => {
// if (usersResponse.data) { if (usersResponse.data) {
// this.users = usersResponse.data.results.map((user) => { this.users = usersResponse.data.results.map((user) => {
// return { return {
// title: `${user.first_name} ${user.last_name}`, title: `${user.first_name} ${user.last_name}`,
// value: user.id value: user.id
// } }
// }); });
// } }
// }); });
// } } */
// } }
// }); });
// if (this.courseId) { // if (this.courseId) {
// this.loadCourse().then(()=>{this.updateViewSection(window.location, 'load')}).catch(()=>{ // this.loadCourse().then(()=>{this.updateViewSection(window.location, 'load')}).catch(()=>{

Loading…
Cancel
Save