def movement_accountability2(request, i=0): q = request.GET.get('searchInput') if q: date_query = datetime.strptime(q, '%d/%m/%Y').date() moviments = Movimento.objects.filter(created__contains=date_query) saida = Movimento.objects.\ filter(created__contains=date_query, transaction_kind__icontains='out').aggregate(Sum('value_moved')) compra = Movimento.objects.\ filter(created__contains=date_query, transaction_kind__icontains='in').aggregate(Sum('value_moved')) moviments.total_venda = saida['value_moved__sum'] moviments.total_compra = compra['value_moved__sum'] print(saida['value_moved__sum']) else: moviments = Movimento.objects.filter( created__contains=timezone_today()) saida = Movimento.objects.\ filter(created__contains=timezone_today(), transaction_kind__icontains='out').aggregate(Sum('value_moved')) compra = Movimento.objects.\ filter(created__contains=timezone_today(), transaction_kind__icontains='in').aggregate(Sum('value_moved')) from django.db.models import Count moviments.total_venda = saida['value_moved__sum'] moviments.total_compra = compra['value_moved__sum'] context = {'moviments': moviments} return render(request, 'moviment_accountability.html', context)
def get_dated_queryset(self, *args, **lookup): """ Get a queryset properly filtered according to `allow_future` and any extra lookup kwargs. """ qs = self.get_queryset().filter(*args, **lookup) end_field = self.get_date_field_end() allow_future = self.get_allow_future() allow_empty = self.get_allow_empty() paginate_by = self.get_paginate_by(qs) if not allow_future: now = timezone.now( ) if self.uses_datetime_field else timezone_today() qs = qs.filter(**{'%s__lte' % end_field: now}) if not allow_empty: # When pagination is enabled, it's better to do a cheap query # than to load the unpaginated queryset in memory. is_empty = len(qs) == 0 if paginate_by is None else not qs.exists() if is_empty: raise Http404("No %(verbose_name_plural)s available".format( verbose_name_plural=qs.model._meta.verbose_name_plural, )) return qs
def save_historial(tipo, id_usuario, id_item): h = HistorialItem() h.fecha_modificacion = timezone_today() h.tipo_modificacion = tipo h.user_id = id_usuario h.item_id = id_item h.save()
def fase(request, id_fase,id_proyecto): fase=Fase.objects.get(pk=id_fase) if fase.nombre == None: modo='Crear' else: modo='Editar' msg='' if request.method=='POST': nombre=request.POST.get('nombre','') aux=Fase.objects.filter(nombre=nombre).count() if aux >1: msg='Ya existe una Fase con el mismo nombre' messages.warning(request,msg) return render_to_response('HtmlFases/editfase.html',{'fase':fase,'modo':modo,'msg':msg,'id_proyecto':id_proyecto},context_instance=RequestContext(request)) descripcion=request.POST.get('descripcion','') fecha=timezone_today() fase.nombre=nombre fase.descripcion=descripcion fase.estado='NOI' fase.fecha_creacion=fecha fase.save() messages.success(request,"Fase Modificada con exito!") return HttpResponseRedirect('/proyecto/fases/'+str(id_proyecto)) estados=ESTADOS_FASE return render_to_response('HtmlFases/editfase.html',{'fase':fase,'modo':modo,'msg':msg,'estados':['asdf','adsf'],'id_proyecto':id_proyecto},context_instance=RequestContext(request))
def save_model(self, request, obj, form, change): """ En esta función se verifica si el estado cambió a INICIADO y le asigna una fecha de creación, ademas se le asigna como miembro del equipo al usuario que creo el proyecto, solo si este no es superusuario """ if obj.fecha_creacion == None and obj.estado == "INI": obj.fecha_creacion = timezone_today() obj.save() if not change and not request.user.is_superuser: obj.equipo.add(request.user)
def total_venda(request): q = request.GET.get('searchInput') if q: date_query = datetime.strptime(q, '%d/%m/%Y').date() return Movimento.objects.filter( created__contains=date_query, transaction_kind__icontains='out').aggregate( total=Sum('value_moved')) else: # date_query = now().year, now().month, now().day return Movimento.objects.filter( created__lt=timezone_today(), transaction_kind__icontains='out').aggregate(Sum('value_moved'))
def render(self, context): today = timezone_today() context.update({ 'today': today, 'months': reduce(next_month, six.moves.range(self.count), [today]), 'week_days': [date(2001, 1, 1 + i) for i in six.moves.range(7)], # January 1, 2001, was a Monday. 'monthcalendar': calendar.monthcalendar(today.year, today.month), }) return self.nodelist.render(context)
def movement_accountability(request, i=0): q = request.GET.get('searchInput') if q: date_query = datetime.strptime(q, '%d/%m/%Y').date() # moviments = Movimento.objects.filter(created__contains=date_query) moviments = Movimento.objects.select_related().\ filter(created__contains=date_query).\ values('user__username', 'transaction_kind').annotate(Sum('value_moved')) saida = Movimento.objects.filter( created__contains=date_query, transaction_kind__icontains='out').aggregate(Sum('value_moved')) compra = Movimento.objects.filter( created__contains=date_query, transaction_kind__icontains='in').aggregate(Sum('value_moved')) moviments.total_venda = saida['value_moved__sum'] moviments.total_compra = compra['value_moved__sum'] else: moviments = Movimento.objects.select_related().\ filter(created__contains=timezone_today()).\ values('user__username', 'transaction_kind').annotate(Sum('value_moved')) saida = Movimento.objects.filter( created__contains=timezone_today(), transaction_kind__icontains='out').aggregate(Sum('value_moved')) compra = Movimento.objects.filter( created__contains=timezone_today(), transaction_kind__icontains='in').aggregate(Sum('value_moved')) moviments.total_venda = saida['value_moved__sum'] moviments.total_compra = compra['value_moved__sum'] context = {'moviments': moviments} return render(request, 'moviment_accountability.html', context)
def job(self): self.stdout.write("Controlando sprints..") sprints=Sprint.objects.all().order_by('proyecto','fecha_inicio') for s in sprints: if s.fecha_fin <= timezone_today() and not s.finalizado: self.stdout.write("Sprint "+s.nombreSprint+" finalizado...") userstories=UserStory.objects.filter(sprint=s) sprint2=Sprint.objects.filter(proyecto=s.proyecto,fecha_inicio__gte=s.fecha_fin).order_by('fecha_inicio') if sprint2.exists(): self.stdout.write("pasando User Stories al siguiente Sprint...") for us in userstories: self.stdout.write(us.nombreUS+"...") us.sprint=sprint2[0] us.save() s.finalizado=True s.save()
def save(self, **kwargs): # Preenche os atributos sem preenchimento do usuário if not self.status: self.status = self.get_status_inicial() # Precisa preencher pois o campo é NOT_NULL, mas será sobrescrito depois self.percentual_cashback = self.get_percentual_cashback(self.valor) # Salva a compra no banco de dados super(Compra, self).save(**kwargs) # Recalcula o total de vendas do último mês inicio = timezone_today() - timedelta(days=30) vendas_do_mes = self.vendedor.compras.filter(data__date__gte=inicio) sum = vendas_do_mes.aggregate(vendas_do_mes=Sum("valor")) if sum: novo_percentual = self.get_percentual_cashback( sum["vendas_do_mes"]) # Atualiza o mesmo queryset para o novo percentual vendas_do_mes.update(percentual_cashback=novo_percentual) self.percentual_cashback = novo_percentual
def validate_data(self, value): delta = timezone_today() - value.date() if delta.days > 30: raise ValidationError("Não é possível inserir uma compra de mais de 30 dias atrás") return value
def save(self, **kwargs): if self.id is None: self.date = timezone_today() super().save(**kwargs)
def test_2(self): user = UserFactory(date_joined=timezone_today() - datetime.timedelta(1)) self.assertEqual(list(get_users_created_yesterday()), [user])
def index(request): today = timezone_today() return redirect("month", today.year, today.month)
def get_scenarios_updated_yesterday(): return Scenario.objects.filter( last_modified__date=(timezone_today() - datetime.timedelta(days=1)))
def nuevo(request,id_comunidad=''): usuario=request.user if usuario.has_perm(USUARIO_LIMITADO) and id_comunidad=='': id_comunidad = get_comunidad(usuario) if id_comunidad == 0: return HttpResponseRedirect('/admin') else: if id_comunidad == '': return HttpResponseRedirect('/admin') bancos = CuentaBancaria.objects.filter(comunidad_id=id_comunidad) if request.method == 'POST': addOther = request.POST.get('_addanother', '').encode('utf8') save=request.POST.get('_save','') total_rows=int(request.POST.get('cantidad_rows',0)) print 'asdf: '+str(total_rows) fecha=request.POST.get('fecha','') fecha=datetime.datetime.strptime(fecha, "%d/%m/%Y") asiento = AsientoContable() asiento.fecha = fecha asiento.comunidad_id = id_comunidad asiento.save() fields="" for i in range(0,total_rows): id_cuenta = request.POST.get('asientocontabledetalle_set-' + str(i) + '-cuenta', '') debe = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-debe', '')) haber = Decimal(request.POST.get('asientocontabledetalle_set-' + str(i) + '-haber', '')) obs = request.POST.get('asientocontabledetalle_set-' + str(i) + '-observacion', '') if id_cuenta != '': id_cuenta=int(id_cuenta) cuenta=Cuenta.objects.get(pk=id_cuenta) asiento_detalle=AsientoContableDetalle() asiento_detalle.cuenta_id=id_cuenta asiento_detalle.debe=debe asiento_detalle.haber=haber asiento_detalle.asiento_contable=asiento asiento_detalle.observacion=obs if cuenta.codigo == '1.2.5.2': banco_id = request.POST.get('asientocontabledetalle_set-' + str(i) + '-banco', 0) asiento_detalle.cuenta_bancaria_id=banco_id asiento_detalle.save() fields+='id:'+str(id_cuenta)+'-'+str(debe)+'-'+str(haber)+"\n" LogEntry.objects.log_action( user_id=request.user.id, content_type_id=ContentType.objects.get_for_model(AsientoContable).pk, object_id=asiento.id, object_repr=unicode(fields), action_flag=ADDITION) cuentas=Cuenta.objects.all() filas=[] for i in range(0,50): filas.append(i) if not request.user.has_perm(USUARIO_LIMITADO): return render_to_response('balance/admin_change_form.html', {'add': True, 'filas':filas,'bancos': bancos, 'hoy': str(timezone_today().strftime('%d/%m/%Y'))}, context_instance=RequestContext(request)) else: return render_to_response('balance/nuevo_change_form.html', {'add':True,'filas':filas,'bancos':bancos,'hoy':str(timezone_today().strftime('%d/%m/%Y'))}, context_instance=RequestContext(request))
def for_public_display(self): objs = self.get_queryset().filter( invoice__expiration_date__gte=timezone_today(), ).annotate(donated_amount=models.Sum('invoice__amount')) return objs.order_by('-donated_amount', 'display_name')
def cerrar_ejercicio(request): if Ejercicio.objects.filter(actual=True).exists(): ejercicio=Ejercicio.objects.get(actual=True) else: ejercicio=Ejercicio() if request.method == 'POST': ejercicio.actual=False ejercicio.save() crear_ejercicio=request.POST.get('crear_ejercicio','No') print crear_ejercicio if crear_ejercicio == 'Si': nuevo_ejercicio = Ejercicio() nuevo_ejercicio.actual = True nuevo_ejercicio.anho = ejercicio.anho + 1 nuevo_ejercicio.save() cuentas = Cuenta.objects.filter(numchild=0).filter(Q(tipo='IN') | Q(tipo='EG')).order_by('codigo_ordenado') comunidades = Comunidad.objects.all() for comunidad in comunidades: for cuenta in cuentas: print cuenta for i in range(1, 13): presupuesto = Presupuesto() presupuesto.ejercicio = nuevo_ejercicio presupuesto.cuenta = cuenta presupuesto.mes = i presupuesto.monto = 0 presupuesto.comunidad = comunidad presupuesto.save() crear_asiento=request.POST.get('crear_asiento','No') if crear_asiento == 'Si': query_comunidad="select distinct co.id from asientos_contables_asientocontabledetalle ad "\ " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\ " join comunidades_comunidad co on co.id=a.comunidad_id "\ " join cuentas_cuenta c on c.id=ad.cuenta_id "\ " where extract(year from a.fecha)="+str(ejercicio.anho)+" and ad.debe-ad.haber != 0" comunidades=execute_all_query(query_comunidad) query="select co.id, c.id,sum(ad.debe)-sum(ad.haber) as saldo "\ " from asientos_contables_asientocontabledetalle ad "\ " join asientos_contables_asientocontable a on a.id=ad.asiento_contable_id "\ " join comunidades_comunidad co on co.id=a.comunidad_id "\ " join cuentas_cuenta c on c.id=ad.cuenta_id "\ " where extract(year from a.fecha)="+str(ejercicio.anho)+" and ad.debe-ad.haber != 0"\ " group by co.id,c.id, c.cuenta order by co.id" asientos_detalles=execute_all_query(query) for com in comunidades: asiento_apertura=AsientoContable() asiento_apertura.fecha=timezone_today() asiento_apertura.comunidad_id=com[0] asiento_apertura.observacion="Asiento de apertura correspodiente al ejercicio actual" asiento_apertura.save() for ad in asientos_detalles: if ad[2] == com[0]: asiento_detalle_apertura=AsientoContableDetalle() asiento_detalle_apertura.cuenta_id=ad[1] if ad[2]>0: asiento_detalle_apertura.debe=ad[2] else: asiento_detalle_apertura.haber = ad[2]*-1 asiento_detalle_apertura.asiento_contable=asiento_apertura asiento_detalle_apertura.observacion="Asiento de apertura" asiento_detalle_apertura.save() return HttpResponseRedirect('/admin') return render_to_response('balance/cerrar_ejercicio.html', {'ejercicio':ejercicio}, context_instance=RequestContext(request))
def get_context_data(self): context = super().get_context_data() context['former_members'] = IndividualMember.objects.filter( member_until__lte=timezone_today(), ) return context
def listar(request): q=request.GET.get('q','') fecha__gte=request.GET.get('fecha__gte','1900-01-01') fecha__lt=request.GET.get('fecha__lt','2050-01-01') usuario=request.user if not usuario.has_perm(USUARIO_LIMITADO): objeto_total=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q, asiento_contable__fecha__gt=fecha__gte, asiento_contable__fecha__lt=fecha__lt).count() else: id_comunidad=get_comunidad(usuario) objeto_total=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q, asiento_contable__fecha__gt=fecha__gte, asiento_contable__fecha__lt=fecha__lt,asiento_contable__comunidad_id=id_comunidad).count() page=request.GET.get('page',1) lines=[] for i in range(objeto_total): lines.append(u'Line %s' % (i + 1)) nro_lineas=100 paginator = Paginator(lines, nro_lineas) try: page=int(page) except: page=1 if int(page)*nro_lineas>objeto_total or int(page)>0: try: items = paginator.page(page) fin=int(page)*nro_lineas ini =fin-nro_lineas except PageNotAnInteger or EmptyPage: fin=nro_lineas ini=0 items = paginator.page(1) else: fin=nro_lineas ini=0 items = paginator.page(1) if not usuario.has_perm(USUARIO_LIMITADO): asientos=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q, asiento_contable__fecha__gt=fecha__gte, asiento_contable__fecha__lt=fecha__lt)[ini:fin] else: id_comunidad=get_comunidad(usuario) if id_comunidad == 0: pass asientos=AsientoContableDetalle.objects.filter(asiento_contable__fecha__contains=q, asiento_contable__fecha__gt=fecha__gte, asiento_contable__fecha__lt=fecha__lt,asiento_contable__comunidad_id=id_comunidad) hoy = datetime.datetime.today() ayer=hoy+datetime.timedelta(days=-1) ultimos_7dias = hoy + datetime.timedelta(days=-7) manana = hoy + datetime.timedelta(days=1) today=timezone_today() cant_dias=calendar.monthrange(today.year,1)[1] ultimos_30dias_max= str(today.year)+'-'+str(today.month)+'-'+str(today.day) ultimos_30dias_min = str(today.year) + '-' + str(today.month) + '-01' este_anho_max=str(today.year+1) + '-01-01' este_anho_min=str(today.year) + '-01-01' return render_to_response('asientos/nuevo_asientos_list.html', {'asientos':asientos,'hoy':str(hoy.date()),'ultimos_30dias_max':ultimos_30dias_max,'page' : page, 'ayer':str(ayer.date()),'ultimos_30dias_min':ultimos_30dias_min,'este_anho_max':este_anho_max,'este_anho_min':este_anho_min ,'ultimo_7dias':str(ultimos_7dias.date()),'manana':str(manana.date())}, context_instance=RequestContext(request,{ 'lines': items }))
def save_model(self, request, obj, form, change): """ En esta función se guardan los cambios correspondientes a usuarios, ya sea Agregar usuarios a equipo o Eliminar Usuario del equipo""" obj.backlog = False if change: original = UserStory.objects.get(pk=obj.id) """ Se verificia si la cantidad de horas trabajadas""" if original.tiempo_trabajado != obj.tiempo_trabajado and obj.sprint: timeline = TimeLine() timeline.userstory = original timeline.fecha = timezone_today() timeline.horas = obj.tiempo_trabajado - original.tiempo_trabajado timeline.horas_restantes_sprint = obj.sprint.horas_faltantes() - obj.tiempo_trabajado timeline.horas_restantes_proyecto = obj.proyecto.horas_faltantes() - obj.tiempo_trabajado timeline.save() actual = obj.get_prioridad_display() anterior = UserStory.objects.get(pk=obj.id).get_prioridad_display() print actual, anterior if actual != anterior: aux = "Cambio de prioridad al User Story" mensaje = ( "Le informamos que el User Story al que pertenece ha cambiado de prioridad <b>" + anterior + "</b>" ) mensaje += " a prioridad <b>" + actual + "</b>" enviar_notificacion( asunto=aux, titulo1=aux, titulo2=aux, mensaje=mensaje, username=obj.usuario.username, correo=obj.usuario.email, ) cambio_user = False if change and obj.usuario != None: if original.usuario_id != obj.usuario_id: cambio_user = True elif not change and obj.usuario != None: cambio_user = True if cambio_user: enviar_notificacion( asunto="User Story", titulo1="Asignacion de User Story", titulo2="Asignacion de User Story", mensaje=" Le informamos que se le ha sido asignado el User Story <b>" + obj.nombreUS + " </b>", username=obj.usuario.username, correo=obj.usuario.email, ) """ En esta parte del codigo se verifica si hubo un cambio en la asignacion de flujo para luego enviar una notificacion por correo al usuario relacionado al User Story""" if obj.flujo != None: if not change or (change and obj.flujo_id != original.flujo_id): enviar_notificacion( asunto="User Story: Asignacion de Flujo", titulo1="Asignacion de Flujo", titulo2="Asignacion de Flujo ", mensaje=" Le informamos que se le ha sido asignado el Flujo <b>" + obj.flujo.nombre + "</b> al User Story <b>" + obj.nombreUS + "</b>.", username="******", correo=obj.usuario.email, ) if obj.actividad_flujo != None: siguiente = Actividad.objects.filter(flujo=obj.actividad_flujo.flujo).order_by("orden") if siguiente.exists(): obj.actividad_flujo = siguiente[0] obj.estado_actividad = "TO" if obj.estado_actividad == "DE" and obj.actividad_flujo != None: siguiente = Actividad.objects.filter(flujo=obj.actividad_flujo.flujo, orden=obj.actividad_flujo.orden + 1) if siguiente.exists(): obj.actividad_flujo = siguiente[0] obj.estado_actividad = "TO" else: obj.estado_actividad = "FD" """esto sirve para controlar el estado del sprint""" if obj.sprint is not None: if obj.flujo is None: obj.estado_sprint = "B" if obj.flujo is not None: obj.estado_sprint = "F" """esto controla que cuando se asigna a un flujo comienze en la actividad 1""" if not UserStory.objects.filter(pk=obj.id).exists(): if obj.flujo != None: obj.actividad_flujo = Actividad.objects.get(flujo=obj.flujo, orden=1) else: flujo_original = UserStory.objects.get(pk=obj.id).flujo if flujo_original != obj.flujo: obj.actividad_flujo = Actividad.objects.get(flujo=obj.flujo, orden=1) """ esto es para pasar automaticamente a un estado doing si se agrega horas trabajas """ if UserStory.objects.filter(pk=obj.id).exists(): tiempo_trabajado_original = UserStory.objects.get(pk=obj.id).tiempo_trabajado if tiempo_trabajado_original != obj.tiempo_trabajado: estado_original = UserStory.objects.get(pk=obj.id).estado_actividad if estado_original == "TO": obj.estado_actividad = "DG" if obj.proyecto == None: obj.proyecto = obj.sprint.proyecto obj.save() # def has_change_permission(self, request, obj=None): """ Retorna True si el usuario existente tiene un rol con los permisos requeridos """ """
def get_users_created_yesterday(): return User.objects.filter(date_joined__date=(timezone_today() - datetime.timedelta(days=1)))