Esempio n. 1
0
def post_save_model(sender, instance, created, **kwargs):
    """
    Функция для тригера post-save-model
    Сейчас нужна лишь для сохранения openness_first.

    """
    must_register = False
    if revision.is_registered(instance.__class__):
        revision.unregister(instance.__class__)
        must_register = True
    #update task openness hook
    if instance.__class__ == Monitoring:
        for task in Task.objects.filter(organization__monitoring=instance):
            task.update_openness()
    if must_register:
        revision.register(instance.__class__)
Esempio n. 2
0
 def save(self, *args, **kwargs):
     try:
         revision.unregister(self.__class__)
     except:
         pass
     super(Token, self).save(*args, **kwargs)
Esempio n. 3
0
def monitoring_parameter_import(request, monitoring_id):
    """
    Импорт параметров из CSV.

    """
    from reversion import revision
    must_register = False
    if revision.is_registered(Parameter):
        revision.unregister(Parameter)
        must_register = True

    monitoring = get_object_or_404(Monitoring, pk=monitoring_id)
    if not request.user.has_perm('exmo2010.edit_monitoring', monitoring):
        return HttpResponseForbidden(_('Forbidden'))
    if not 'paramfile' in request.FILES:
        return HttpResponseRedirect(reverse('exmo2010:monitoring_list'))
    reader = UnicodeReader(request.FILES['paramfile'])
    errLog = []
    rowOKCount = 0
    rowALLCount = 0
    try:
        for row in reader:
            rowALLCount += 1
            if row[0].startswith('#'):
                errLog.append("row %d. Starts with '#'. Skipped" % reader.line_num)
                continue
            if row[0] == '':
                errLog.append("row %d (csv). Empty code" % reader.line_num)
                continue
            if row[1] == '':
                errLog.append("row %d (csv). Empty name" % reader.line_num)
                continue
            try:
                code = row[0]
                name = row[1]
                parameter = Parameter.objects.get(monitoring=monitoring,
                    code=code, name=name)
            except Parameter.DoesNotExist:
                parameter = Parameter()
            except Exception, e:
                errLog.append("row %d. %s" % (reader.line_num, e))
                continue
            try:
                parameter.monitoring = monitoring
                parameter.code = code
                parameter.name = name
                # Присваиваем пустую строку, а не None.
                parameter.description = row[2] or ''
                parameter.complete = bool(int(row[3]))
                parameter.topical = bool(int(row[4]))
                parameter.accessible = bool(int(row[5]))
                parameter.hypertext = bool(int(row[6]))
                parameter.document = bool(int(row[7]))
                parameter.image = bool(int(row[8]))
                parameter.weight = row[9]
                parameter.keywords = row[10]
                parameter.full_clean()
                parameter.save()
            except ValidationError, e:
                errLog.append("row %d (validation). %s" % (
                    reader.line_num,
                    '; '.join(['%s: %s' % (i[0], ', '.join(i[1])) for i in e.message_dict.items()])))
            except Exception, e:
                errLog.append("row %d. %s" % (reader.line_num, e))
Esempio n. 4
0
def monitoring_organization_import(request, monitoring_id):
    """
    Импорт организаций из CSV.

    """
    from reversion import revision
    must_register = False
    if revision.is_registered(Organization):
        revision.unregister(Organization)
        must_register = True

    monitoring = get_object_or_404(Monitoring, pk=monitoring_id)
    if not request.user.has_perm('exmo2010.edit_monitoring', monitoring):
        return HttpResponseForbidden(_('Forbidden'))
    if not 'orgfile' in request.FILES:
        return HttpResponseRedirect(reverse('exmo2010:monitoring_list'))
    reader = UnicodeReader(request.FILES['orgfile'])
    errLog = []
    indexes = {}
    rowOKCount = 0
    rowALLCount = 0

    try:
        for row in reader:
            if rowALLCount == 0 and row[0] and row[0].startswith('#'):
                for key in ['name', 'url', 'email', 'phone', 'comments', 'keywords']:
                    for item in row:
                        if item and key in item.lower():
                            indexes[key] = row.index(item)
                continue

            if not 'name' in indexes:
                errLog.append("header row (csv). Field 'Name' does not exist")
                break

            rowALLCount += 1

            if row[0] and row[0].startswith('#'):
                errLog.append("row %d. Starts with '#'. Skipped" % rowALLCount)
                continue
            if row[indexes['name']] == '':
                errLog.append("row %d (csv). Empty organization name" % rowALLCount)
                continue
            try:
                organization = Organization.objects.get(monitoring=monitoring, name=row[indexes['name']])
            except Organization.DoesNotExist:
                organization = Organization()
                organization.monitoring = monitoring
            except Exception, e:
                errLog.append("row %d. %s" % (rowALLCount, e))
                continue
            try:
                for key in indexes.keys():
                    cell = row[indexes[key]]
                    if key in ['email', 'phone'] and cell:
                        cell = replace_string(cell)
                    setattr(organization, key, cell.strip() if cell else '')
                organization.inv_code = generate_inv_code(6)
                organization.full_clean()
                organization.save()
            except ValidationError, e:
                errLog.append("row %d (validation). %s" % (
                    rowALLCount,
                    '; '.join(['%s: %s' % (i[0], ', '.join(i[1])) for i in e.message_dict.items()])))
            except Exception, e:
                errLog.append("row %d. %s" % (rowALLCount, e))
Esempio n. 5
0
 def save(self, *args, **kwargs):
     try:
         revision.unregister(self.__class__)
     except:
         pass
     super(Token, self).save(*args, **kwargs)