You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
# -*- coding: utf-8 -*-
|
|
from django.db import models
|
|
from django.conf import settings
|
|
from django.db.models.fields.files import FieldFile
|
|
from django.db.models.signals import pre_delete
|
|
from functions.signal_handlers import file_cleanup
|
|
|
|
def get_doc_dir(instance, filename):
|
|
from pytils import translit
|
|
return u'import_xls/import/%s' %translit.translify(filename)
|
|
|
|
|
|
class LogManager(models.Manager):
|
|
def create_log(self, work_file, errors):
|
|
"""
|
|
|
|
:param work_file: executing file
|
|
:param errors: list of errors ([{'event name':['err1', 'err2']}])
|
|
:return: object log
|
|
"""
|
|
LOG_DIRECTORY = settings.MEDIA_ROOT+'import_xls/logs/'
|
|
name= '111.txt'
|
|
filename = LOG_DIRECTORY + name
|
|
|
|
log_file = open(filename, "w")
|
|
for error in errors:
|
|
event_name = ';'.join(error.keys())
|
|
errs = ''
|
|
for err in error.values():
|
|
errs += '; '.join(err)
|
|
errs += ';'
|
|
|
|
log_file.write('%s: %s\n'%(event_name, errs))
|
|
|
|
log_file.close()
|
|
#update.log_file.name = 'updates/'+name
|
|
log = Log(work_file=work_file)
|
|
log.log.name = 'import_xls/logs/' + name
|
|
#log = Log.objects.create(work_file=work_file, log=log_file)
|
|
log.save()
|
|
return log
|
|
|
|
def create_log_name(self, work_file):
|
|
log = Log.objects.create(work_file=work_file)
|
|
LOG_DIRECTORY = settings.MEDIA_ROOT+'import_xls/logs/'
|
|
name= 'log_%d.log'%log.id
|
|
filename = LOG_DIRECTORY + name
|
|
log_file = open(filename, "w").close()
|
|
log.log.name = 'import_xls/logs/' + name
|
|
log.save()
|
|
return log
|
|
|
|
|
|
class Log(models.Model):
|
|
work_file = models.FileField(upload_to=get_doc_dir)
|
|
log = models.FileField(upload_to='import_xls/logs/', blank=True)
|
|
type = models.CharField(max_length=10, default='IMPORT')
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
|
|
objects = models.Manager()
|
|
custom = LogManager()
|
|
|
|
class Meta:
|
|
ordering = ['-created']
|
|
|
|
pre_delete.connect(file_cleanup, sender=Log)
|
|
|
|
|