Favoritenfunktion fertig

This commit is contained in:
holger.trampe 2020-04-18 13:40:10 +02:00
parent 3783e5de44
commit 60e6808962
8 changed files with 61 additions and 27 deletions

View File

@ -15,14 +15,9 @@ import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
################################################### PROD DEV LOCAL CONFIGURATION ###############################
BASE_URL = "https://dev01.digitale-agentur.com/"
#BASE_URL = "https://digitale-agentur.com/"
#BASE_URL = "http://localhost:8000/"
CRONAPIKEY = "gCddsaz6NOnE9QbXZM5LasdEk122D"
############################################## DEV ##################################### ############################################## DEV #####################################
BASE_URL = "https://dev01.digitale-agentur.com/"
CRONAPIKEY = "gCddsaz6NOnE9QbXZM5LasdEk122D"
# MAIL DEV # MAIL DEV
EMAIL_HOST = 'smtp.strato.de' EMAIL_HOST = 'smtp.strato.de'

View File

@ -73,6 +73,7 @@ class Standards(models.Model):
parent_standard = models.ForeignKey("Standards", related_name='partentedstandard', on_delete=models.PROTECT, blank=True, null=True, default=None) parent_standard = models.ForeignKey("Standards", related_name='partentedstandard', on_delete=models.PROTECT, blank=True, null=True, default=None)
shared_on = models.DateTimeField(default=timezone.now, blank=True) shared_on = models.DateTimeField(default=timezone.now, blank=True)
favoritfrom = models.ManyToManyField(User, blank=True, related_name="FavoritFrom")
#Counter, wie oft dieser Standard in eine andere Agentur kopiert wird #Counter, wie oft dieser Standard in eine andere Agentur kopiert wird

View File

@ -33,9 +33,6 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</p> </p>
</div> </div>
</div> </div>
@ -56,7 +53,7 @@
<p class="card-text"> <p class="card-text">
{% for s in allagencynetworkstandards %} {% for s in allagencynetworkstandards %}
{% if forloop.counter < 10 %} {% if forloop.counter < 10 %}
<a href="{% url 'standard-single-agn' s.pk %}">{{s.name|truncatechars:30}}</a>&nbsp;({{s.agencynetworkcounter}})<br/> <a href="{% url 'standard-single-agn' s.pk s.pk %}">{{s.name|truncatechars:30}}</a>&nbsp;({{s.agencynetworkcounter}})<br/>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</p> </p>

View File

@ -41,15 +41,15 @@
{% getbool as groupchecker %} {% getbool as groupchecker %}
{% if groupchecker %} {% if groupchecker %}
<a href="{% url 'standard-single-agn' standard.pk %}">{{standard.name|truncatechars:28}}</a> <a href="{% url 'standard-single-agn' standard.pk agn.pk %}">{{standard.name|truncatechars:28}}</a>
{% else %} {% else %}
<p class="card-text text-secondary" data-toggle="popover" data-placement="top" data-trigger="hover" title="Zugriffsbeschränkung" data-content="Zugriff beschränkt auf {% for sgroup in standard.visibleby.all %}{{sgroup.agencygroupname}}{% if forloop.counter < standard.visibleby.all|length %},{%endif%}{% endfor %}"><i class="fas fa-lock"></i>&nbsp;{{standard.name|truncatechars:28}}</p> <p class="card-text text-secondary" data-toggle="popover" data-placement="top" data-trigger="hover" title="Zugriffsbeschränkung" data-content="Zugriff beschränkt auf {% for sgroup in standard.visibleby.all %}{{sgroup.agencygroupname}}{% if forloop.counter < standard.visibleby.all|length %},{%endif%}{% endfor %}"><i class="fas fa-lock"></i>&nbsp;{{standard.name|truncatechars:28}}</p>
{% endif %} {% endif %}
</td> </td>
<td>{{standard.agency.name}} <i style="float: right; color: #000000;" class="fas fa-info-circle" onclick="javascript:$('#showAgencyInfo_{{standard.agency.pk}}').modal('toggle');"></i></td> <td>{{standard.agency.name}} <i style="float: right;" class="fas fa-info-circle" onclick="javascript:$('#showAgencyInfo_{{standard.agency.pk}}').modal('toggle');"></i></td>
<td>{{standard.last_modified_on|date:"d.m.Y, H:i"}}</td> <td>{{standard.last_modified_on|date:"d.m.Y, H:i"}}</td>
<td>{{standard.agencynetworkcounter}}</td> <td>{{standard.agencynetworkcounter}}</td>
<td>{% if isshared %}Übernommen{% endif %}</td> <td>{% if isshared %}Übernommen {% elif request.user in standard.favoritfrom.all %}Favorit {% endif %}</td>
</tr> </tr>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -6,15 +6,20 @@
{% checkifsharedstandardinagency request.user.profile.agency standard as isshared %} {% checkifsharedstandardinagency request.user.profile.agency standard as isshared %}
{% if isshared == False and standard.agency != request.user.profile.agency %} {% if isshared == False and standard.agency != request.user.profile.agency %}
<span style="float: right"> <span style="float: right">
<a style="float: right" href="{% url 'standard-agn' agnpk %}" type="button" class="btn btn-secondary ml-2" data-toggle="tooltip" data-placement="top" title="Zurück zu Verbundstandards."><i class="fas fa-chevron-circle-left"></i></a>
<button style="float: right" id="favoritbutton" class="btn {% if request.user in standard.favoritfrom.all %}btn-primary {% else %} btn-secondary {% endif %} ml-2" onclick="javascript:markFavorit({{standard.pk}}, {{request.user.pk}})" data-toggle="tooltip" data-placement="top" title="Markieren Sie diesen Standard als Favoriten."><!--<small><i class="fas fa-file-import" ></i></small>--><i class="fas fa-star"></i></button>
<button style="float: right" class="btn btn-primary ml-2" onclick="javascript:askForCopy()" data-toggle="tooltip" data-placement="top" title="Übernehmen Sie diesen Standard in Ihre Agentur."><!--<small><i class="fas fa-file-import" ></i></small>-->Standard in meine Agentur übernehmen</button> <button style="float: right" class="btn btn-primary ml-2" onclick="javascript:askForCopy()" data-toggle="tooltip" data-placement="top" title="Übernehmen Sie diesen Standard in Ihre Agentur."><!--<small><i class="fas fa-file-import" ></i></small>-->Standard in meine Agentur übernehmen</button>
</span> </span>
{% elif standard.agency == request.user.profile.agency %} {% elif standard.agency == request.user.profile.agency %}
<span style="float: right; padding-top:16px; font-size: 16pt;"> <span style="float: right; font-size: 16pt;">
<small>Standard ist aus ihrer Agentur</small> <small>Standard ist aus ihrer Agentur</small>
<a style="float: right" href="{% url 'standard-agn' agnpk %}" type="button" class="btn btn-secondary btn-sm ml-2" data-toggle="tooltip" data-placement="top" title="Zurück zu Verbundstandards."><i class="fas fa-chevron-circle-left"></i></a>
</span> </span>
{% else %} {% else %}
<span style="float: right; padding-top:16px; font-size: 16pt;"> <span style="float: right;font-size: 16pt;">
<small>Standard übernommen</small> <small>Standard übernommen</small>
<a style="float: right" href="{% url 'standard-agn' agnpk %}" type="button" class="btn btn-secondary btn-sm ml-2" data-toggle="tooltip" data-placement="top" title="Zurück zu Verbundstandards."><i class="fas fa-chevron-circle-left"></i></a>
</span> </span>
{% endif %} {% endif %}
</h2> </h2>
@ -230,6 +235,25 @@
}); });
} }
function markFavorit(){
$.ajax({
url: "{% url 'update_standard_by_ajax_agn' standard.pk %}",
data: {
action : 'markingfavorit',
},
success: function (data) {
if(data["added"]){
$("#favoritbutton").removeClass("btn-secondary");
$("#favoritbutton").addClass("btn-primary");
}
else{
$("#favoritbutton").removeClass("btn-primary");
$("#favoritbutton").addClass("btn-secondary");
}
}
});
}
</script> </script>
{% endblock content %} {% endblock content %}

View File

@ -17,7 +17,7 @@ urlpatterns = [
path('standards/<int:pk>/delete', StandardDeleteView.as_view(), name='standard-delete'), path('standards/<int:pk>/delete', StandardDeleteView.as_view(), name='standard-delete'),
path('standard/<int:pk>/changestat', views.StandardChangePublic, name="standard-status"), path('standard/<int:pk>/changestat', views.StandardChangePublic, name="standard-status"),
path('standard/<int:pk>/single', views.StandardSingle, name="standard-single"), path('standard/<int:pk>/single', views.StandardSingle, name="standard-single"),
path('standard/<int:pk>/singleagn', views.StandardSingleAgn, name="standard-single-agn"), path('standard/<int:pk>/<int:agnpk>/singleagn', views.StandardSingleAgn, name="standard-single-agn"),
path('standard/<int:pk>/area', views.StandardArea, name="standard-area"), path('standard/<int:pk>/area', views.StandardArea, name="standard-area"),
path('standard/<int:pk>/task', views.StandardTask, name="standard-task"), path('standard/<int:pk>/task', views.StandardTask, name="standard-task"),
path('standardsagn/<int:pk>', views.StandardFromAgn, name="standard-agn"), path('standardsagn/<int:pk>', views.StandardFromAgn, name="standard-agn"),

View File

@ -515,6 +515,7 @@ def updatesbyajax(request, pk):
@login_required @login_required
def StandardFromAgn(request, pk): def StandardFromAgn(request, pk):
try:
agn = AgencyNetwork.objects.get(pk=pk) agn = AgencyNetwork.objects.get(pk=pk)
context = { context = {
'active_link':'standards', 'active_link':'standards',
@ -522,13 +523,19 @@ def StandardFromAgn(request, pk):
'agn' :agn, 'agn' :agn,
} }
return render(request, 'standards/standards_from_agn.html', context) return render(request, 'standards/standards_from_agn.html', context)
except:
context = {
'active_link':'standards',
}
return redirect('standards')
# View for SingleStandard from AgencyNetwork # View for SingleStandard from AgencyNetwork
@login_required @login_required
def StandardSingleAgn(request, pk): def StandardSingleAgn(request, pk, agnpk):
context = { context = {
'active_link':'standards', 'active_link':'standards',
'agnpk' : agnpk,
'standard' : Standards.objects.get(pk=pk), 'standard' : Standards.objects.get(pk=pk),
'comments' : StandardComments.objects.filter(standard=Standards.objects.get(pk=pk)).order_by("-last_modified_on") 'comments' : StandardComments.objects.filter(standard=Standards.objects.get(pk=pk)).order_by("-last_modified_on")
} }
@ -566,6 +573,16 @@ def updatesbyajax_agn(request, pk):
counter_down = len(StandardCommentRate.objects.filter(oncomment=comment, rate_stats=0)) counter_down = len(StandardCommentRate.objects.filter(oncomment=comment, rate_stats=0))
return JsonResponse({"up" : counter_up, "down" : counter_down}) return JsonResponse({"up" : counter_up, "down" : counter_down})
elif(request.GET["action"] == "markingfavorit"):
workingstandard = Standards.objects.get(pk=pk)
added = False
if workingstandard.public:
if(request.user in workingstandard.favoritfrom.all()):
workingstandard.favoritfrom.remove(request.user)
else:
workingstandard.favoritfrom.add(request.user)
added = True
return JsonResponse({"added" : added})