def _create_log_entry(self, action): if threadlocals.get_current_user().is_anonymous(): user = User.objects.get(username='******') else: user = threadlocals.get_current_user() key = (self.__class__._meta.app_label, self.__class__._meta.object_name, self.pk) history = threadlocals.get_log_entry(key) if not history: history = LogEntry( user=user, object_id=self.pk, action_flag=action, content_type=ContentType.objects.get_for_model(self)) threadlocals.set_log_entry(key, history) l = getattr(self, '_field_change_message_list', []) + getattr( self, '_field_m2m_change_message_list', []) if not l: return history.change_message = '\n'.join(l) try: history.object_repr = unicode(self)[:200] except Exception: history.object_repr = "(unknown)" history.save()
def _create_log_entry(self, action): if threadlocals.get_current_user() is None: return raise Exception("Please enable ThreadsLocal middleware") if threadlocals.get_current_user().is_anonymous(): user = User.objects.get( pk=0) # feature: User with pk=0 supposed to be anonymous user else: user = threadlocals.get_current_user() if SAVE_THROUGH_ADMIN: history = LogEntry.objects.get( user=user, object_id=self.pk, action_flag=action, content_type=ContentType.objects.get_for_model(self)).latest() else: history = LogEntry( user=user, object_id=self.pk, action_flag=action, content_type=ContentType.objects.get_for_model(self)) try: history.object_repr = repr(self) except Exception: history.object_repr = "(unknown)" history.save() return history
def save_form(request): try: from django.contrib.admin.models import LogEntry from django.contrib.contenttypes.models import ContentType matriculation_type = ContentType.objects.get(app_label='school', model='matriculation') student_id = int(request.POST.get('student_id')) grade_section_id = int(request.POST.get('grade_section')) teaching_year = int(request.POST.get('teaching_year')) status = int(request.POST.get('status')) matriculation_exist = Matriculation.objects.filter( student_id=student_id, teaching_year=teaching_year, ).first() django_log_entry = LogEntry() if matriculation_exist: matriculation_exist.student_id = student_id matriculation_exist.grade_section_id = grade_section_id matriculation_exist.status = status matriculation_exist.save() django_log_entry.action_flag = 2 key_message = 'changed' django_log_entry.object_id = matriculation_exist.id django_log_entry.object_repr = matriculation_exist.__str__() change_message = { key_message: { 'fields': ['estudiante', 'grado y sección', 'estado'] } } message = 'Matrícula actualizada exitosamente' else: matriculation = Matriculation() matriculation.student_id = student_id matriculation.grade_section_id = grade_section_id matriculation.status = status matriculation.save() django_log_entry.action_flag = 1 key_message = 'added' django_log_entry.object_id = matriculation.id django_log_entry.object_repr = matriculation.__str__() change_message = {key_message: {}} message = 'Matrícula guardada exitosamente' django_log_entry.change_message = json.dumps([change_message]) django_log_entry.content_type_id = matriculation_type.id django_log_entry.user_id = request.user.id django_log_entry.save() response = {'message': message, 'status': True} except: response = {'status': False, 'message': 'Error al guardar'} return JsonResponse(response)
def _create_log_entry(self, action): if not threadlocals.get_current_user() or threadlocals.get_current_user().is_anonymous(): user = User.objects.get(username="******") else: user = threadlocals.get_current_user() history = LogEntry( user=user, object_id=self.pk, action_flag=action, content_type=ContentType.objects.get_for_model(self) ) try: history.object_repr = repr(self) except Exception: history.object_repr = "(unknown)" history.save()
def _create_log_entry(self, action): if threadlocals.get_current_user().is_anonymous(): user = User.objects.get(username='******') else: user = threadlocals.get_current_user() key = (self.__class__._meta.app_label,self.__class__._meta.object_name,self.pk) history = threadlocals.get_log_entry(key) if not history: history = LogEntry(user=user, object_id = self.pk, action_flag = action, content_type = ContentType.objects.get_for_model(self)) threadlocals.set_log_entry(key,history) l = getattr(self,'_field_change_message_list',[]) + getattr(self,'_field_m2m_change_message_list',[]) history.change_message = '\n'.join(l) try: history.object_repr = unicode(self) except Exception: history.object_repr = "(unknown)" history.save()
def _create_log_entry(self, action): if threadlocals.get_current_user() is None: return raise Exception("Please enable ThreadsLocal middleware") if threadlocals.get_current_user().is_anonymous(): user = User.objects.get(pk=0) # feature: User with pk=0 supposed to be anonymous user else: user = threadlocals.get_current_user() if SAVE_THROUGH_ADMIN: history = LogEntry.objects.get(user=user, object_id = self.pk, action_flag = action, content_type = ContentType.objects.get_for_model(self)).latest() else: history = LogEntry(user=user, object_id = self.pk, action_flag = action, content_type = ContentType.objects.get_for_model(self)) try: history.object_repr = repr(self) except Exception: history.object_repr = "(unknown)" history.save() return history
def log(user, flag, message, obj=None, dt=None): from django.contrib.admin.models import ADDITION, CHANGE, DELETION flags = dict(create=ADDITION, update=CHANGE, delete=DELETION) flag = flags.get(flag, flag) if not isinstance(message, str): message = json.dumps(message) logentry = LogEntry( user_id=user.pk, action_flag=flag, change_message=message, ) if obj: logentry.content_type_id = ContentType.objects.get_for_model(obj).pk logentry.object_id = obj.pk logentry.object_repr = str(obj)[:200] if dt: logentry.action_time = dt logentry.save() return logentry
def log_change(self, request, object, message, old_object=None): """ Log that an object has been successfully changed. The default implementation creates an admin LogEntry object. """ entry = LogEntry() entry.user = request.user entry.content_type = ContentType.objects.get_for_model(object) entry.object_id = smart_unicode(object.pk) entry.object_repr = force_unicode(object)[:200] entry.action_flag = CHANGE entry.change_message = message entry.save() if old_object: entry_extend = LogEntryExtend() entry_extend.entry = entry entry_extend.data = old_object entry_extend.save()
def log_change(self, request, object, message, old_object=None): """ Log that an object has been successfully changed. The default implementation creates an admin LogEntry object. """ entry = LogEntry() entry.user = request.user entry.content_type = ContentType.objects.get_for_model(object) entry.object_id = smart_unicode(object.pk) entry.object_repr = force_unicode(object)[:200] entry.action_flag = CHANGE entry.change_message = message entry.save() if old_object: entry_extend = models.LogEntryExtend() entry_extend.entry = entry entry_extend.data = old_object entry_extend.save()
def control_edition_note(list_control_fields_edited, note, teacher_id=None, supervisor_id=None): from .models import NoteControlEdition from django.contrib.admin.models import LogEntry from django.contrib.contenttypes.models import ContentType import json note_type = ContentType.objects.get(app_label='school', model='note') fields = [] for register_edited in list_control_fields_edited: note_edited_control = NoteControlEdition() note_edited_control.note_id = note.id note_edited_control.edit_field = register_edited.get('field_name') note_edited_control.value_edit_field = register_edited.get('value') note_edited_control.supervisor_id = supervisor_id note_edited_control.save() key = fields_note_spanish[register_edited['field_name']] fields.append('{} - {}'.format(key, register_edited['value'])) flag_add = NoteControlEdition.objects.filter(note_id=note.id).count() flag_add = 1 if flag_add <= 1 else 2 django_log_entry = LogEntry() django_log_entry.object_id = note.id django_log_entry.object_repr = note.__str__() django_log_entry.action_flag = flag_add key_message = 'added' if flag_add <= 1 else 'changed' if key_message == 'added': change_message = {key_message: {}} else: change_message = {key_message: {'fields': fields}} django_log_entry.change_message = json.dumps([change_message]) django_log_entry.content_type_id = note_type.id django_log_entry.user_id = supervisor_id or teacher_id django_log_entry.save()