Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* МОДЕЛИ */
- class fb_themes(models.Model):
- id = models.IntegerField(primary_key=True)
- name = models.CharField(db_column='name', max_length=48, blank=True)
- enable = models.IntegerField(db_column='enable')
- sort = models.IntegerField(db_column='sort')
- class Meta:
- managed = False
- db_table = 'fb_theme'
- class SupportTicketMessages(models.Model):
- ticket_id = models.IntegerField(db_column='ticket_id',primary_key=True)
- message_num = models.IntegerField(db_column='message_num')
- message_dttm = models.DateTimeField(db_column='message_dttm')
- author_id = models.ForeignKey(GWSUser,related_name='author',db_column='author_id')
- message_text = models.TextField(max_length=3000)
- read_flg = models.IntegerField(db_column='read_flg')
- msg_type = models.IntegerField(db_column='msg_type')
- class Meta:
- managed = False
- db_table = 'support_ticket_messages'
- class SupportAdminPermissions(models.Model):
- admin_id = models.IntegerField( db_column='admin_id',primary_key=True)
- theme_id = models.IntegerField(db_column='theme_id',primary_key=True)
- class Meta:
- managed = False
- db_table = 'support_admin_permissions'
- class SupportTickets(models.Model):
- id = models.IntegerField(primary_key=True, db_column='ticket_id')
- theme = models.ForeignKey(fb_themes, related_name='theme_name', db_column='theme_id')
- user = models.ForeignKey(GWSUser, related_name='ticket_author', db_column='user_id')
- create_dttm = models.DateTimeField(db_column='create_dttm')
- close_dttm = models.DateTimeField(db_column='close_dttm')
- status = models.IntegerField(db_column='status')
- @property
- def last_admin(self):
- cursor = connection.cursor()
- query = 'SELECT t2.author_id '\
- 'FROM support_tickets t1 '\
- 'inner join support_ticket_messages t2 '\
- 'on t1.ticket_id = t2.ticket_id '\
- 'and t1.user_id <> t2.author_id '\
- 'where t1.ticket_id = %s order by t2.message_num desc' % self.id
- cursor.execute(query);
- id = cursor.fetchone();
- if id == None:
- return "Нет ответа администратора"
- else:
- return GWSUser.objects.get(id=id[0])
- @property
- def ticket_status(self):
- lastmsg = SupportTicketMessages.objects.filter(ticket_id=self.id).order_by('-message_num')[:1]
- msg = lastmsg.values('message_dttm', 'author_id')[0]
- if self.status == 0 and msg['author_id'] == self.user.id:
- return 0
- elif self.status == 0 and msg['author_id'] != self.user.id:
- return 1
- elif self.status == 1:
- return 2
- @property
- def unread_messages(self):
- msgs = SupportTicketMessages.objects.filter(ticket_id=self.id, read_flg=0).exclude(author_id=self.user).count()
- return msgs
- class Meta:
- managed = False
- db_table = 'support_tickets'
- /* VIEW */
- @login_required()
- @render_to('main/admin/feedback.html')
- def feedback_list(request,page=1):
- if request.user.is_admin < 1:
- return TemplateResponse(request, 'main/404.html', {'authorized': request.user.is_authenticated()})
- else:
- themes = fb_themes.objects.all()
- #fblist = SupportTickets.objects.all().filter().order_by('status','-create_dttm')
- params = {
- "id": str()
- }
- query = 'SELECT '\
- 't1.ticket_id,'\
- 't1.create_dttm,'\
- 'accounts.Login,'\
- 't1.theme_id,'\
- 't1.status '\
- 'FROM support_tickets t1 JOIN accounts ON accounts.ID = t1.user_id '\
- 'where (select support_admin_access(%s, t1.ticket_id)) ORDER BY t1.status, t1.create_dttm desc' % request.user.id
- fblist = SupportTickets.objects.raw(query)
- paginator = Paginator(fblist, 30)
- paginator.count = len(list(fblist))
- page = int(page)
- try:
- feedbacks = paginator.page(page)
- except PageNotAnInteger:
- feedbacks = paginator.page(1)
- except EmptyPage:
- feedbacks = paginator.page(paginator.num_pages)
- paginator.page_range2 = [n for n in range(page - 10, page + 11) if n > 0 and n <= paginator.num_pages]
- return {'user': request.user, 'authorized': request.user.is_authenticated(), 'fb_themes': themes,
- 'feedback_list': feedbacks, 'page_range': paginator.page_range2}
- /* TEMPLATE */
- <div class="table-responsive">
- <table class="table table-bordered table-hover table-striped">
- <thead>
- <tr>
- <th>#</th>
- <th>Дата создания</th>
- <th>Создатель</th>
- <th>Тема</th>
- <th>Статус</th>
- <th>Админ</th>
- </tr>
- </thead>
- {% for fb in feedback_list %}
- <tr class="complaint-row">
- <td>{{ fb.pk }}</td>
- <td>{{ fb.create_date }}</td>
- <td>{{ fb.user }}</td>
- <td>{{ fb.theme.name }}</td>
- <td>{% if fb.status == 0%}Передан{% elif fb.status == 1 %}В работе{% else %}Закрыт{% endif %}</td>
- <td>{{ fb.admin }}</td>
- </tr>
- {%endfor%}
- <tbody>
- </tbody>
- </table>
- <ul class="pagination">
- {% if feedback_list.has_previous %}
- <li class="arrow"><a href="{% url 'admin_feedback' %}{{ feedback_list.previous_page_number }}" title="Предыдущая">«</a></li>
- {% else %}
- <li class="disabled arrow"><a>«</a></li>
- {% endif %}
- {% for page in page_range %}
- {% if page %}
- {% ifequal page feedback_list.number %}
- <li class="active"><a>{{ page }}</a></li>
- {% else %}
- <li><a href="{% url 'admin_feedback' %}{{ page }}">{{ page }}</a></li>
- {% endifequal %}
- {% else %}
- <li><a>...</a></li>
- {% endif %}
- {% endfor %}
- {% if feedback_list.has_next %}
- <li class="arrow"><a href="{% url 'admin_feedback' %}{{ feedback_list.next_page_number }}">»</a></li>
- {% else %}
- <li class="disabled arrow"><a title="Следующая">»</a></li>
- {% endif %}
- </ul>
- </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement