def add_partner_to_job(request): dash = validate_dashboard(request.POST.get('d'), request.user) tu = validate_user(request.POST.get('t')) cmd = get_integer(request.POST.get('c')) max_users = int(read_config('dashboard_max_partner', 5)) if not dash: return send_error(request, _('invalid dashboard')) if not tu: return send_error(request, _('invalid user')) if not cmd: return send_error(request, _('invalid item')) if cmd == 1: if TicketTeam.objects.filter(dashboard=dash.pk, user=tu.pk).exists(): return send_error(request, _('this user has been selected before')) if TicketTeam.objects.filter(dashboard=dash.pk).count() >= max_users: return send_error(request, _('max users selected')) tt = TicketTeam() tt.user = tu tt.dashboard = dash tt.save() msg = '%s : %s' % (_('user added to job'), tu.first_name) add_work_history_outbox(dash, request.user, msg) elif cmd == 2: if not TicketTeam.objects.filter(dashboard=dash.pk, user=tu.pk).exists(): return HttpResponse('200') TicketTeam.objects.get(dashboard=dash.pk, user=tu.pk).delete() msg = '%s : %s' % (_('user removed from job'), tu.first_name) add_work_history_outbox(dash, request.user, msg) return HttpResponse('200')
def restart_closed_job(request): if request.method == 'GET': did = request.GET.get('d') dash = validate_dashboard(did, request.user, request.RSL_ID) if not dash: return send_error(request, _('no such item')) dash.done_date = None dash.is_done = False dash.last_state = 0 dash.save() uw = UserWorkHistory() uw.dashboard = dash g = request.user.groups.first() if not g: g = dash.group_id else: g = g.pk uw.group_id = g uw.start_date = now() uw.state = 2 uw.user = request.user uw.message = _('job restarted') uw.save() return HttpResponse('200') return send_error(request, _('invalid method'))
def delete_calendar_event(request): dash = validate_dashboard(get_integer(request.GET.get('d'))) if not dash: return send_error(request, _('invalid dashboard')) if Calendar.objects.filter(dashboard=dash.pk).exists(): Calendar.objects.filter(dashboard=dash.pk).delete() add_work_history_outbox(dash, request.user, _('schedule removed')) return HttpResponse('200')
def remove_transport_for_job(request): dash = validate_dashboard(request.GET.get('d')) if not dash: return send_error(request, _('invalid dashboard')) if not TicketTransportation.objects.filter(dashboard=dash.pk).exists(): return send_error(request, _('invalid item')) TicketTransportation.objects.get(dashboard=dash.pk).delete() add_work_history_outbox(dash, request.user, _('transport removed')) return HttpResponse('200')
def reserve_time_for_job(request): date = get_string(request.GET.get('d')) time = get_integer(request.GET.get('t')) job = validate_dashboard(get_integer(request.GET.get('j'))) try: cm = CalendarEventTypeRequestManager(request) cm.pk_name = 'e' event_id = cm.get_single_ext(True).pk except RequestProcessException as e: return e.get_response() except Exception as e: logger.error(e.message or e.args) return send_error(request, _('system error')) priority_res = get_integer(request.GET.get('pri'), True) if not date: return send_error(request, _('invalid date')) if not time: return send_error(request, _('invalid time')) if not job: return send_error(request, _('please select a job')) if not priority_res.is_success(): priority = 0 else: priority = priority_res.value() if Calendar.objects.filter(dashboard=job.pk).exists(): return send_error(request, _('this job has been added before')) date_split = date.split('-') day = get_integer(date_split[2].split(' ')[0]) month = get_integer(date_split[1]) year = get_integer(date_split[0]) if not (year and month and day): return send_error(request, _('invalid date format')) cl = Calendar() cl.dashboard = job cl.work_time_id = time cl.event_type = event_id cl.cal_day = day cl.priority = priority cl.cal_month = month cl.cal_year = year cl.save() wb = WorkingTime.objects.get(pk=time) msg = u'%s در تاریخ %s از ساعت %s تا %s' % ( _('time scheduled'), date, str(wb.start_time.strftime('%H:%M')), str(wb.end_time.strftime('%H:%M'))) add_work_history_outbox(job, request.user, msg) return HttpResponse('200')
def add_transport_for_job(request): dash = validate_dashboard(request.GET.get('j'), request.user) transport = get_transport(request.GET.get('t')) if not dash: return send_error(request, _('invalid dashboard')) if not transport: return send_error(request, _('invalid item')) if TicketTransportation.objects.filter(dashboard=dash.pk).exists(): return send_error(request, _('transportation had selected before')) t = TicketTransportation() t.dashboard = dash t.transport = transport t.save() add_work_history_outbox(dash, request.user, _('transport added ') + transport.name) return HttpResponse('200')
def view_all_group_members(request): dash = validate_dashboard(request.GET.get('d'), request.user) if not dash: return send_error(request, _('invalid dashboard')) if dash.fk_ticket_team_dashboard.exists(): active_partners = User.objects.filter( fk_ticket_team_user__dashboard=dash.pk).values_list('pk', flat=True) else: active_partners = [] if request.user.is_superuser: pgs = Group.objects.values_list('pk', flat=True) else: pgs = request.user.groups.values_list('pk', flat=True) partners = User.objects.filter( groups__in=pgs, is_staff=True, fk_reseller_profile_user__isnull=True, is_active=True).exclude(pk=request.user.pk).values_list( 'pk', 'first_name').distinct() x = {'users': list(partners), 'active': list(active_partners)} return HttpResponse(json.dumps(x))