def reopen(request, issue_id, townslug): if (request.method == "POST"): #todo: ПРОВЕРКА: ТОЛЬКО ДЛЯ МОДЕРА, ПОДРЯДЧИКА ИЛИ ЖЕ ДЛЯ ВЛАДЕЛЬЦА ЗАЯВКИ try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if (last_issue.status == 2): data = request.POST form = Issues() user = request.user form.owner_ref = user form.town_ref = issue.town_ref form.title = "Змiна статусу" if ("description" in data): form.description = data["description"] form.parent_task_ref = last_issue form.status = 1 form.assigned_to = last_issue.assigned_to form.save() ActivityMail.sendToSubcontractors( request, 'Заявка #' + str(form.getFirst().id) + ' перевідкрита власником', 'defect_change_status.email', form.assigned_to.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Перевідкрита власником', 'resolution': form.description, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' перевідкрита власником', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відкрита', 'resolution': form.description, 'townslug': townslug }) if ("files[]" in data): for filename in data.getlist("files[]"): try: body64 = data["attachements[%s]" % filename] body = "" body = base64.b64decode(body64[body64.index(",") + 1:]) ext = filename.split('.')[-1] sys_filename = "%s.%s" % (uuid.uuid4(), ext) path = weunion.settings.MEDIA_ROOT + "/defects/" f = open(path + sys_filename, "wb") file_size = f.write(body) f.close() img = Image.open(path + sys_filename) img.thumbnail((350, 350), Image.ANTIALIAS) img.save(path + "medium." + sys_filename) img.thumbnail((150, 150), Image.ANTIALIAS) img.save(path + "thumbnail." + sys_filename) except: print( str(sys.exc_info()[0]) + str(sys.exc_info()[1])) traceback.print_exc(file=sys.stdout) return doc = Documents() doc.owner_ref = user doc.name = filename doc.file_name = sys_filename doc.type_name = "image" doc.size = file_size doc.save() issuefile = IssueFiles() issuefile.issue_ref = form issuefile.document_ref = doc issuefile.save() return HttpResponseRedirect('../../defects/%s' % issue_id) else: raise PermissionDenied("Доступ заборонено") except Issues.DoesNotExist: #print some error page or send back to index return HttpResponseRedirect('../defects')
def add(request, condominium_slug): if (request.user.is_authenticated() and request.user.is_active): if (request.method == "POST"): data = request.POST if (len(data["title"]) > 1 and len(data["description"]) > 1): form = Issues() user = request.user form.owner_ref = user condominium = request.user.condominiums.first() form.condominium_ref = condominium form.title = data["title"] form.description = data["description"] form.address = data["address"] form.status = 0 form.assigned_to = Subcontractors.objects.get( pk=2 ) #TODO:ВАЖНО! Здесь нужно выбрать именно админ группу из нужного города!!! #TODO:write valiadation #if form.is_valid(): form.save() '''if("files[]" in data): for filename in data.getlist("files[]"): body64=data["attachements[%s]" % filename] body="" body=base64.b64decode(body64[body64.index(",")+1:]) ext = filename.split('.')[-1] sys_filename="%s.%s" % (uuid.uuid4(), ext) path=system.settings.MEDIA_ROOT+"/defects/" f=open(path+sys_filename,"wb") file_size=f.write(body) f.close() img=Image.open(path+sys_filename) if(getattr(img,"_getexif",None) is not None and img._getexif()): exif=dict((ExifTags.TAGS[k], v) for k, v in img._getexif().items() if k in ExifTags.TAGS) if('Orientation' in exif): if(exif['Orientation'] == 3): img=img.rotate(180, expand=True) elif(exif['Orientation'] == 6): img=img.rotate(270, expand=True) elif(exif['Orientation'] == 8): img=img.rotate(90, expand=True) img.save(path+sys_filename) img.thumbnail((350,350),Image.ANTIALIAS) img.save(path+"medium."+sys_filename) img.thumbnail((150,150),Image.ANTIALIAS) img.save(path+"thumbnail."+sys_filename) doc = Documents() doc.owner_ref=user #doc.file_ref=filedata doc.name=filename doc.type_name="image" doc.file_name=sys_filename doc.size=file_size doc.save() issuefile=IssueFiles() issuefile.issue_ref=form issuefile.document_ref=doc issuefile.save()''' ActivityMail.sendToModers( request, 'Було додано нову заявку #' + str(form.getFirst().id), 'defect_new.email', form.condominium_ref.id, { 'title': form.getFirst().title, 'condominium_slug': condominium_slug, 'defect_id': form.getFirst().id }) return redirect('../defects/ok') else: pass #TODO: Print error, saving already inputed data issue = Issues() return render(request, 'add.html', { "issue": issue, "condominiumz": Condominium.objects.all(), }) else: from django.contrib.auth.views import redirect_to_login return redirect_to_login(request.get_full_path(), reverse('account_signup'))
def unsubscribe(request, issue_id, townslug): if (request.method == "POST"): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if ((issue.last_issue().assigned_to in request.user.work_for.all()) and issue.town_ref in request.user.towns.all()): form = Issues() form.owner_ref = request.user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.description = "Виконавець відхилив призначення по причині: " + request.POST[ 'description'] form.parent_task_ref = last_issue form.assigned_to = last_issue.assigned_to form.status = 0 form.save() ActivityMail.sendToSubcontractors( request, 'Заявка #' + str(form.getFirst().id) + ' відхилена представником виконавця ', 'defect_change_status.email', form.assigned_to.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відмова. Повернута на модерацію', 'resolution': form.description, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Виконавець відхилив призначення по заявці #' + str(form.getFirst().id) + '.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Повернуто на модерацію', 'resolution': form.description, 'townslug': townslug }) #ActivityMail.sendToModers(request,'Ваша заявка #'+str(form.getFirst().id)+' відхилена модератором', 'defect_change_status.email', form.town_ref.id, {'defect_id':form.getFirst().id, 'title': form.getFirst().title, 'status':'Відхилена'}, [form.owner_ref.email]) except Issues.DoesNotExist: return HttpResponseRedirect('../defects/list') return HttpResponseRedirect('../defects/list')
def setFixModer(request, issue_id, townslug): if (request.method == "POST"): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if (request.user.isAllowedToModerate(request.session["town"], 'Defects') and issue.town_ref in request.user.towns.all()): data = request.POST form = Issues() user = request.user form.owner_ref = user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.assigned_to = last_issue.assigned_to if ("description" in data): form.description = data["description"] form.parent_task_ref = last_issue form.status = 2 try: form.save() ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' "ВИКОНАНА" підрядною організацією', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Виконана', 'resolution': form.description, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Ваша заявка #' + str(form.getFirst().id) + ' "ВИКОНАНА" підрядною організацією', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Виконана', 'resolution': form.description, 'townslug': townslug }, [form.owner_ref.email]) except: pass return redirect('../../defects/%s' % issue_id) except Issues.DoesNotExist: #print some error page or send back to index return HttpResponseRedirect('../defects')
def disapprove(request, issue_id, townslug): if (request.method == "POST"): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if (request.user.isAllowedToModerate(request.session["town"], 'Defects') and issue.town_ref in request.user.towns.all()): form = Issues() form.owner_ref = request.user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.description = "Вiдхилено по причині: " + request.POST[ 'description'] form.parent_task_ref = last_issue form.assigned_to = last_issue.assigned_to form.status = 3 form.save() ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' відхилена модератором.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відхилена', 'resolution': form.description, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Ваша заявка #' + str(form.getFirst().id) + ' відхилена модератором', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відхилена', 'resolution': form.description, 'townslug': townslug }, [form.owner_ref.email]) except Issues.DoesNotExist: return HttpResponseRedirect('../defects') return HttpResponseRedirect('../../defects/%s' % issue_id)
def hold(request, issue_id, townslug): if (request.user.is_authenticated() and request.user.is_active): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if (request.user.isAllowedToModerate(request.session["town"], 'Defects') or issue.last_issue().assigned_to in request.user.work_for.all() ) and issue.town_ref in request.user.towns.all(): form = Issues() form.owner_ref = request.user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.description = request.POST['description'] form.parent_task_ref = last_issue form.assigned_to = last_issue.assigned_to form.status = 5 form.save() ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' "ЗАПЛАНОВАНА" відповідальною організацією.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Запланована', 'resolution': form.description, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Ваша заявка #' + str(form.getFirst().id) + ' "ЗАПЛАНОВАНА" відповідальною організацією.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Запланована', 'resolution': form.description, 'townslug': townslug }, [form.owner_ref.email]) return redirect("../../defects/" + issue_id) else: raise PermissionDenied("Доступ заборонено") except Issues.DoesNotExist: return HttpResponseRedirect('../defects') else: raise PermissionDenied("Доступ заборонено")
def padding(request, issue_id, townslug): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if ((issue.last_issue().assigned_to in request.user.work_for.all()) and issue.town_ref in request.user.towns.all()): form = Issues() form.owner_ref = request.user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.description = "Дякуємо! Ваша заявка прийнята у роботу." form.parent_task_ref = last_issue form.assigned_to = last_issue.assigned_to form.status = 4 form.save() ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' ПРИЙНЯТА відповідальною організацією.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Прийнята до виконання', 'townslug': townslug }) ActivityMail.sendToModers( request, 'Ваша заявка #' + str(form.getFirst().id) + ' ПРИЙНЯТА відповідальною організацією.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Прийнята до виконання', 'townslug': townslug }, [form.owner_ref.email]) return redirect("../../defects/" + issue_id) else: raise PermissionDenied("Доступ заборонено") except Issues.DoesNotExist: return HttpResponseRedirect('../../defects')
def setSubcontractor(request, issue_id, townslug): if (request.method == "POST"): try: issue = Issues.objects.get(pk=issue_id) last_issue = issue.last_issue() if (request.user.isAllowedToModerate(request.session["town"], 'Defects') and issue.town_ref in request.user.towns.all()): subc = Subcontractors.objects.get(pk=request.POST["subc"]) form = Issues() form.owner_ref = request.user form.town_ref = issue.town_ref form.title = "Змiна статусу" form.description = "Вiдправлено на виконання до " + subc.name form.parent_task_ref = last_issue form.status = 1 form.assigned_to = subc form.save() Karma.add(form.getFirst().owner_ref, KARMA['DEFECT_WAS_APPROVE'], "Додано дефект який погодив модератор", "Дефекти ЖКГ") ActivityMail.sendToSubcontractors( request, 'Заявка #' + str(form.getFirst().id) + ' назначена на Вашу організацію', 'defect_subcontractor.email', form.assigned_to.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Назначена на Вашу організацію', 'townslug': townslug }) ActivityMail.sendToModers( request, 'Заявка #' + str(form.getFirst().id) + ' пройшла модерацію і було назначено відповідальну підрядну організацію.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відкрита. Відповідальна організація - ' + subc.name, 'townslug': townslug }) ActivityMail.sendToModers( request, 'Ваша заявка #' + str(form.getFirst().id) + ' пройшла модерацію і було назначено відповідальну підрядну організацію.', 'defect_change_status.email', form.town_ref.id, { 'defect_id': form.getFirst().id, 'title': form.getFirst().title, 'status': 'Відкрита. Відповідальна організація - ' + subc.name, 'townslug': townslug }, [form.owner_ref.email]) except Issues.DoesNotExist: return HttpResponseRedirect('../defects') return HttpResponseRedirect('../../defects/%s' % issue_id)
def add(request, townslug): if (request.user.is_authenticated() and request.user.is_active): if (request.method == "POST"): data = request.POST if (len(data["title"]) > 1 and len(data["description"]) > 1 and len(data['address']) > 1): form = Issues() user = request.user form.owner_ref = user town = request.user.towns.first() form.town_ref = town form.title = data["title"] form.description = data["description"] form.address = data["address"] form.map_lat = data["map_lat"] form.map_lon = data["map_lon"] #form.parent_task_ref=Issues(id=1) form.status = 0 form.assigned_to = Subcontractors.objects.get( pk=2 ) #TODO:ВАЖНО! Здесь нужно выбрать именно админ группу из нужного города!!! #TODO:write valiadation #if form.is_valid(): form.save() if ("files[]" in data): for filename in data.getlist("files[]"): body64 = data["attachements[%s]" % filename] body = "" body = base64.b64decode(body64[body64.index(",") + 1:]) ext = filename.split('.')[-1] sys_filename = "%s.%s" % (uuid.uuid4(), ext) path = weunion.settings.MEDIA_ROOT + "/defects/" f = open(path + sys_filename, "wb") file_size = f.write(body) f.close() img = Image.open(path + sys_filename) if (getattr(img, "_getexif", None) is not None and img._getexif()): exif = dict((ExifTags.TAGS[k], v) for k, v in img._getexif().items() if k in ExifTags.TAGS) if ('Orientation' in exif): if (exif['Orientation'] == 3): img = img.rotate(180, expand=True) elif (exif['Orientation'] == 6): img = img.rotate(270, expand=True) elif (exif['Orientation'] == 8): img = img.rotate(90, expand=True) img.save(path + sys_filename) img.thumbnail((350, 350), Image.ANTIALIAS) img.save(path + "medium." + sys_filename) img.thumbnail((150, 150), Image.ANTIALIAS) img.save(path + "thumbnail." + sys_filename) doc = Documents() doc.owner_ref = user #doc.file_ref=filedata doc.name = filename doc.type_name = "image" doc.file_name = sys_filename doc.size = file_size doc.save() issuefile = IssueFiles() issuefile.issue_ref = form issuefile.document_ref = doc issuefile.save() ActivityMail.sendToModers( request, 'Було додано нову заявку #' + str(form.getFirst().id), 'defect_new.email', form.town_ref.id, { 'title': form.getFirst().title, 'townslug': townslug, 'defect_id': form.getFirst().id }) return redirect('../defects/ok') else: issue = Issues() api_key = weunion.settings.GOOGLE_API_KEY userTown = request.user.towns.first() gmap = {} gmap["lon"] = userTown.map_lon gmap["lat"] = userTown.map_lat gmap["zoom"] = userTown.zoom title = request.POST["title"], description = request.POST["description"], address = request.POST["address"], print(request.POST) return render( request, 'add.html', { "issue": issue, "townz": Town.objects.all(), "api_key": api_key, "gmap": gmap, "title": title[0], "description": description[0], "address": address[0], "error": "Заповніть назву, опис та адресу дефекту!" }, ) else: pass #TODO: Print error, saving already inputed data issue = Issues() api_key = weunion.settings.GOOGLE_API_KEY userTown = request.user.towns.first() gmap = {} gmap["lon"] = userTown.map_lon gmap["lat"] = userTown.map_lat gmap["zoom"] = userTown.zoom return render( request, 'add.html', { "issue": issue, "townz": Town.objects.all(), "api_key": api_key, "gmap": gmap }) else: from django.contrib.auth.views import redirect_to_login return redirect_to_login(request.get_full_path(), reverse('account_signup'))