57
59
return HttpResponseRedirect(other)
61
def redirect_to_other_with_next(request, other):
62
if "next" in request.REQUEST :
63
other = other + "?next=" + request.REQUEST["next"]
65
return HttpResponseRedirect(other)
59
67
# Create your views here.
62
return render_response(request, 'main.html')
70
userLang = getUserLanguage(request.user)
71
lastComments = Comment.objects.order_by("-modified")[0:10]
72
curtime = datetime.now()
73
for comment in lastComments:
74
comment.conceptDescription = getConceptDescription(comment.concept, userLang)
75
age = curtime - comment.modified
77
comment.age = u"pirms " + str(age.days) + u" dienām"
79
comment.age = u"vakar"
80
elif age.seconds > 7200:
81
comment.age = u"pirms " + str(int(age.seconds / 3600)) + u" stundām"
82
elif age.seconds > 3600:
83
comment.age = u"pirms " + str(int(age.seconds / 3600)) + u" stundas"
84
elif age.seconds > 60:
85
comment.age = u"pirms " + str(int(age.seconds / 60)) + u" minūtēm"
87
comment.age = u"nupat"
88
return render_response(request, 'main.html', {'comments':lastComments})
64
90
def about(request):
65
return render_response(request, 'about.html')
91
return render_response(request, 'about.html', {})
67
93
def systeminfo(request):
68
94
nrTag = getOrCreateTag(NEEDSREVIEW_TAG)
102
128
hint = u"Āvu, āvu baltas"
103
129
answer = u"kājas"
104
130
if (request.method == "GET"):
105
languages = Language.objects.all()
131
languages = Language.objects.all()
106
132
return render_response(request, 'user_register.html', {'languages': languages, 'defaultLanguage':findUILanguage() , 'securityHint':hint})
108
134
loginName = request.POST["username"]
308
333
conceptList = Concept.objects.filter(bindings__word__in = wordList).all()
309
334
concept = joinConcepts(conceptList)
310
335
setSubscribedConcept(request.user, concept, True )
311
return HttpResponseRedirect(reverse('conceptDetails', args=[concept.id]))
336
return redirect_to_other_with_next(request, reverse('conceptReview', args=[concept.id]))
313
338
for word in wordList:
314
339
if action == 'delete' :
383
408
def conceptDetails(request, concept_id):
409
return conceptDetailsComment(request, concept_id, "")
411
def conceptDetailsComment(request, concept_id, comment_id):
384
412
concept = get_object_or_404(Concept, pk=concept_id)
385
413
conceptData = makeConceptListDetails([concept], request.user)[0]
386
414
grammarTypes = WordGrammarType.objects.order_by('sequence')
388
415
languages = Language.objects.all()
389
416
projects = Entity.objects.all()
390
417
return render_response(request, 'concept_detail.html', {
391
418
'conceptData': conceptData,
392
419
'languages':languages,
393
420
'projectList': projects,
394
'grammarTypes': grammarTypes})
421
'grammarTypes': grammarTypes,
422
'hilightComment':comment_id})
397
425
def conceptTagAdd(request):
549
578
grammarTypes = WordGrammarType.objects.order_by('sequence')
550
579
projects = Entity.objects.all()
551
580
return render_response(request, 'concept_bulkAdd.html', {
552
584
'languages':languages,
553
585
'sourceLanguage':foreignLang,
554
586
'targetLanguage':nativeLang,
555
587
'grammarTypes': grammarTypes,
556
588
'projectList': projects})
558
591
action = request.POST['action']
592
text = request.REQUEST["text"]
593
tags = request.REQUEST["tags"]
594
sourceLanguageId = int(request.REQUEST["sourceLanguage"])
595
targetLanguageId = int(request.REQUEST["targetLanguage"])
596
projectId = int(request.REQUEST["project"])
597
sourceLanguage = getOrNoneLanguage(sourceLanguageId)
598
targetLanguage = getOrNoneLanguage(targetLanguageId)
599
project = getOrNoneProject(projectId)
600
tagList,badTags = getTagList(tags, request.user.is_staff)
606
if sourceLanguage == None:
607
error = u"No avota valodas"
608
elif targetLanguage == None:
609
error = u"No mērķa valodas"
610
elif badTags != None:
611
error = u"Pievienoti neesoši tagi un nav tiesības veidot jaunus tagus: " + str(badTags)
612
elif action == 'analyze':
613
results = bulkAnalyze(sourceLanguage, targetLanguage, text)
615
elif action == 'save':
620
for attr in request.POST.keys() :
621
match = re.match(r'^row(?P<row_id>\d+)_text$', attr)
623
rowId = int(match.group('row_id'))
624
rowText = request.POST["row"+str(rowId)+"_text"]
626
if "row"+str(rowId)+"_action" in request.POST:
627
action = request.POST["row"+str(rowId)+"_action"]
629
concept = Concept.objects.get(pk = int(action))
632
texts.append(rowText)
633
concepts.append(concept)
566
return HttpResponseRedirect(reverse('main', args=[]))
636
results = bulkAdd(sourceLanguage, targetLanguage, tagList, texts, concepts, project, request.user)
639
for result in results:
643
languages = Language.objects.all()
644
nativeLang = getUserLanguage(request.user)
645
foreignLang = getUserForeignLanguage(request.user)
646
grammarTypes = WordGrammarType.objects.order_by('sequence')
647
projects = Entity.objects.all()
648
return render_response(request, 'concept_bulkAdd.html', {
653
'isAnalysis': isAnalysis,
654
'hasErrors': hasErrors,
656
'languages':languages,
657
'sourceLanguage':sourceLanguage,
658
'targetLanguage':targetLanguage,
659
'grammarTypes': grammarTypes,
660
'projectList': projects})
589
683
if action == 'save':
592
concept.comment = request.POST['title']
593
grammarTypeId = int(request.POST['grammarType'])
594
concept.grammar_type = getOrNoneGrammarType(grammarTypeId)
597
desc = ConceptDescription()
598
desc.concept = concept
599
desc.title = request.POST['title']
600
desc.description = request.POST['description']
601
desc.language = getUserLanguage(request.user)
685
title = request.POST['title']
686
description = request.POST['description']
687
grammarType = getOrNoneGrammarType(int(request.POST['grammarType']))
604
688
projectId = int(request.POST['sourceProject'])
605
689
project = getOrNoneProject(projectId)
608
if not request.user.is_staff:
609
desc.tags.add(getOrCreateTag(NEEDSREVIEW_TAG))
611
693
#Save translations
613
694
for wordAttr in request.POST.keys() :
614
695
match = re.match(r'^word_(?P<word_no>\d+)_word$', wordAttr)
615
696
if match == None :
617
698
wordNo = int(match.group('word_no'))
618
699
langAttr = 'word_' + str(wordNo) + '_language'
620
wordText = request.POST[wordAttr]
701
wordText = request.POST[wordAttr].strip()
622
702
if len(wordText) == 0:
625
704
wordLang = getOrNoneLanguage(int(request.POST[langAttr]))
627
if (len(wordText) > 0) and (wordLang):
628
word = getOrCreateWord(wordLang, wordText)
630
binding.concept = concept
634
if (project != None):
635
binding.entities.add(project)
638
setSubscribedConcept(request.user, concept, True )
705
words.append(getOrCreateWord(wordLang, wordText))
707
concept = addConcept(words, grammarType, None, title, description, project, request.user)
708
sendOutNewConceptEmails(concept, request)
639
710
return HttpResponseRedirect(reverse('conceptDetails', args=[concept.id]))
641
712
return HttpResponseRedirect(reverse('main', args=[]))
716
790
if request.method== "GET": #render the usages part to show
717
791
projects = Entity.objects.all()
718
prepareBindingUsages([bindingObj])
792
prepareBindingUsages([bindingObj], request.user)
719
793
return render_response(request, 'binding_usages_inc.html', {'showEdit':True, 'binding':bindingObj, 'projectList':projects})
720
794
elif request.method== "POST": #save results and show new state
721
795
#collect projects
730
804
bindingObj.entities = projectList
731
805
bindingObj.save()
733
prepareBindingUsages([bindingObj])
807
prepareBindingUsages([bindingObj], request.user)
735
809
if "ajax" in request.REQUEST:
736
810
return render_response(request, 'binding_usages_inc.html', {'newResult':True, 'binding':bindingObj})
738
812
return redirect_to_next(request)
815
def bindingToggleStar(request):
816
binding_id = int(request.REQUEST['objectId'])
817
bindingObj = get_object_or_404(Binding, pk=binding_id)
819
if request.method== "GET": #render the star part to show
820
return render_response(request, 'binding_star_inc.html', {'binding':bindingObj})
821
elif request.method== "POST": #save results and show new state
822
isOn = request.REQUEST['on']
823
setStarred(request.user, bindingObj, isOn == '1')
825
if "ajax" in request.REQUEST:
826
bindingObj.starred = bindingObj.favorite_users.filter(user = request.user).count() > 0
828
return render_response(request, 'binding_star_inc.html', {'newResult':True,'binding':bindingObj})
830
return redirect_to_next(request)
740
832
def addBindingSearch(request):
741
833
query = request.REQUEST['q']
742
834
words = Word.objects.filter(word__contains=query)
984
1078
return redirect_to_next(request)
1081
def smells(request):
1083
if request.method == "GET":
1084
smellTypes = getSmellInfo()
1085
return render_response(request, 'smells.html', {'smellTypes':smellTypes})
1087
action = request.REQUEST["action"]
1088
if action=="regenerate":
1090
return HttpResponseRedirect(reverse('smells', args=()))
1092
def smellList(request, smell_code, offset):
1093
smells = ConceptSmell.objects.filter(code = smell_code).order_by("-score")
1094
smellTypes = getSmellInfo()
1096
page = ListPage(smells, int(offset))
1097
return render_response(request, 'smellList.html', {'smellTypes':smellTypes,'list':page, 'code':smell_code,'description':SMELL_TYPES[smell_code]})
1099
def smellDetails(request, smell_id):