Skip to content

Commit

Permalink
fix: priva logs for offices
Browse files Browse the repository at this point in the history
  • Loading branch information
francesco-filicetti committed Jun 4, 2024
1 parent 55ed49b commit ca789c0
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 25 deletions.
18 changes: 18 additions & 0 deletions uniticket/uni_ticket/migrations/0019_log_is_public.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.9 on 2024-06-04 13:22

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('uni_ticket', '0018_rename_log_content_type_object_id_uni_ticket__content_dbfb39_idx'),
]

operations = [
migrations.AddField(
model_name='log',
name='is_public',
field=models.BooleanField(default=True),
),
]
21 changes: 13 additions & 8 deletions uniticket/uni_ticket/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,10 @@ def _attachment_upload(instance, filename):
import inspect
exec(inspect.getsource(LogEntry).replace('db_table = "django_admin_log"',
'indexes = [models.Index(fields=["content_type", "object_id"])]')\
.replace('class LogEntry','class Log')\
.replace('models.TextField(_("object id"), blank=True, null=True)',
'models.PositiveIntegerField(_("object id"), blank=True, null=True)')) #nosec
.replace('class LogEntry(models.Model):',
'class Log(models.Model):\n is_public = models.BooleanField(default=True)')\
.replace('object_id = models.TextField(_("object id"), blank=True, null=True)',
'object_id = models.PositiveIntegerField(_("object id"), blank=True, null=True)')) #nosec
### END Custom Logs ###


Expand Down Expand Up @@ -767,10 +768,10 @@ def get_status_table(self):
self.taken_by_html_list()
)

def update_log(self, user, note="", send_mail=True, mail_msg=""):
def update_log(self, user, is_public=True, note="", send_mail=True, mail_msg=""):
if not user:
return False
if send_mail:
if is_public and send_mail:
# Send mail to ticket owner
d = {
"hostname": settings.HOSTNAME,
Expand All @@ -790,14 +791,16 @@ def update_log(self, user, note="", send_mail=True, mail_msg=""):
)
# End send mail to ticket owner

Log.objects.log_action(
log = Log.objects.log_action(
user_id=user.pk,
content_type_id=ContentType.objects.get_for_model(self).pk,
object_id=self.pk,
object_repr=self.__str__(),
action_flag=CHANGE,
change_message=note,
)
log.is_public = is_public
log.save(update_fields=['is_public'])

def get_assigned_to_offices(
self, office_active=True, structure=None, ignore_follow=True
Expand Down Expand Up @@ -1434,15 +1437,17 @@ class Meta:
verbose_name = _("Task")
verbose_name_plural = _("Task")

def update_log(self, user, note=None):
Log.objects.log_action(
def update_log(self, user, is_public=True, note=""):
log = Log.objects.log_action(
user_id=user.pk,
content_type_id=ContentType.objects.get_for_model(self).pk,
object_id=self.pk,
object_repr=self.__str__(),
action_flag=CHANGE,
change_message=note,
)
log.is_public = is_public
log.save(update_fields=['is_public'])

def get_folder(self):
"""
Expand Down
53 changes: 37 additions & 16 deletions uniticket/uni_ticket/views/management.py
Original file line number Diff line number Diff line change
Expand Up @@ -1521,14 +1521,17 @@ def task_add_new(
)

ticket.update_log(
user=request.user, note=_(
"Aggiunta attività: {}".format(new_task))
user=request.user,
note=_("Aggiunta attività: {}".format(new_task)),
is_public=new_task.is_public
)

messages.add_message(
request,
messages.SUCCESS,
_("Attività {} creata con successo".format(new_task)),
)

return redirect(
"uni_ticket:manage_ticket_url_detail",
structure_slug=structure_slug,
Expand Down Expand Up @@ -1588,13 +1591,16 @@ def task_remove(
request.user, task, ticket)
)

task.delete()
ticket.update_log(user=request.user, note=_(
"Rimossa attività: {}".format(task)))
ticket.update_log(user=request.user,
note=_("Rimossa attività: {}".format(task)),
is_public=task.is_public)
messages.add_message(
request, messages.SUCCESS, _(
"Attività {} rimossa correttamente".format(task))
)

task.delete()

return redirect(
"uni_ticket:manage_ticket_url_detail",
structure_slug=structure_slug,
Expand Down Expand Up @@ -1867,8 +1873,12 @@ def task_close(
task, dict(CLOSING_LEVELS).get(closing_status), motivazione
)
)
task.update_log(user=request.user, note=msg)
ticket.update_log(user=request.user, note=msg)
task.update_log(user=request.user,
note=msg,
is_public=task.is_public)
ticket.update_log(user=request.user,
note=msg,
is_public=task.is_public)
messages.add_message(
request,
messages.SUCCESS,
Expand Down Expand Up @@ -1948,17 +1958,20 @@ def task_reopen(
task.is_closed = False
task.save(update_fields=["is_closed"])
msg = _("Riapertura attività {}".format(task))
task.update_log(user=request.user, note=msg)

# log action
logger.error(
"[{}] {} tried to"
" reopened task {}"
" in closed ticket {}".format(
"[{}] {} reopened task {}"
" in ticket {}".format(
timezone.localtime(), request.user, task, ticket)
)

ticket.update_log(user=request.user, note=msg)
task.update_log(user=request.user,
note=msg,
is_public=task.is_public)
ticket.update_log(user=request.user,
note=msg,
is_public=task.is_public)
messages.add_message(
request, messages.SUCCESS, _(
"Attività {} riaperta correttamente".format(task))
Expand Down Expand Up @@ -2084,8 +2097,12 @@ def task_edit(
)
)

task.update_log(user=request.user, note=msg)
ticket.update_log(user=request.user, note=msg)
task.update_log(user=request.user,
note=msg,
is_public=task.is_public)
ticket.update_log(user=request.user,
note=msg,
is_public=task.is_public)
messages.add_message(
request, messages.SUCCESS, _(
"Attività aggiornata con successo")
Expand Down Expand Up @@ -2165,8 +2182,12 @@ def task_attachment_delete(
task.save(update_fields=["attachment"])

msg = _("Allegato attività {} eliminato".format(task.code))
task.update_log(user=request.user, note=_("Allegato eliminato"))
ticket.update_log(user=request.user, note=msg)
task.update_log(user=request.user,
note=_("Allegato eliminato"),
is_public=task.is_public)
ticket.update_log(user=request.user,
note=msg,
is_public=task.is_public)

# log action
logger.info(
Expand Down
4 changes: 3 additions & 1 deletion uniticket/uni_ticket/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -1229,9 +1229,11 @@ def get(self, request, ticket_id:str, api:bool=False, template="user/ticket_deta
ticket_logs = Log.objects.filter(
content_type_id=ContentType.objects.get_for_model(ticket).pk,
object_id=ticket.pk,
is_public=True
).select_related('user')
# ticket_replies = TicketReply.objects.filter(ticket=ticket)
ticket_task = Task.objects.filter(ticket=ticket)
ticket_task = Task.objects.filter(ticket=ticket,
is_public=True)
ticket_dependences = ticket.get_dependences()
title = ticket.subject
sub_title = ticket.code
Expand Down

0 comments on commit ca789c0

Please sign in to comment.