Ver Fonte

improved navigation, clean-up, delete project view

Juan Carlos há 5 anos atrás
pai
commit
07fb995fc0

+ 3 - 3
marktplatz/admin.py

@@ -13,7 +13,7 @@ admin.site.register(Media)
 # admin.site.register(Credit)
 admin.site.register(Contact)
 
-admin.site.register(Interaction)
-admin.site.register(Vote)
+# admin.site.register(Interaction)
+# admin.site.register(Vote)
 admin.site.register(Video)
-admin.site.register(Category)
+# admin.site.register(Category)

+ 19 - 51
marktplatz/forms.py

@@ -33,13 +33,13 @@ def extend_help_text( help_text, myList ):
 
 
 class GeneralFields(forms.Form):
-    terms = forms.BooleanField(required=True,  label= ('Ich akzeptiere die <a href="{}"> Datenschutzrichtlinie und habe sie gelesen.</a>' )  )
+    terms = forms.BooleanField(required=True, )
 
     def __init__(self, *args, **kwargs):
         super(GeneralFields, self).__init__(*args, **kwargs)
         drurl = reverse_lazy( 'pages-generic', kwargs=  { 'page': 'DATENSCHUTZRICHTLINIE' } )
         tmurl = reverse_lazy( 'pages-generic', kwargs=  { 'page': 'TEILNAHME' } )
-        self.fields ['terms'].label = 'Ich akzeptiere die <a href="{}"> Datenschutzrichtlinie</a> sowie die  <a href="{}"> Teilnahmebedingungen</a> und habe sie gelesen.'.format(drurl, tmurl)
+        self.fields ['terms'].label = 'Ich akzeptiere die <a  target="_blank" href="{}"> Datenschutzrichtlinie</a> sowie die  <a  target="_blank" href="{}"> Teilnahmebedingungen</a> und habe sie gelesen.'.format(drurl, tmurl)
 
 
 
@@ -114,8 +114,8 @@ class RegisterForm(forms.ModelForm, GeneralFields):
 
     class Meta:
         model = Contact
-        fields = ('first_name','last_name','adress','postcode','city','country',
-                  'email','phonenumber','alternate_phonenumber','skype_name','website', 'terms')
+        fields = ('first_name','last_name','email','adress','postcode','city','country',
+                  'phonenumber','alternate_phonenumber','skype_name','website', 'terms')
 
 class SignUpForm(UserCreationForm):
     captcha = CaptchaField( generator='captcha.helpers.math_challenge' )
@@ -160,8 +160,6 @@ class ProductForm(forms.ModelForm):
         'name','claim','beschreibung','learning','gruendungsjahr','betriebgenommen','status','adresse','website','email','frei','kfrei', 'mitmachen','rechtsform','ort','orga',
          )
 
-
-
     def __init__(self,*args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)
 
@@ -190,7 +188,6 @@ class WohnprojektForm(ProductForm):
          'eigentum', 'inseratstext', 'altneu', 'schwerpunkt', 'wohnbaufoerderung', 'artmodell', 'bautraeger', 'aerwachsene', 'akinder', 'awohnungen', 'wohnflaeche', 'gewerbeflaechen', 'gemeinschaftsflaeche', 'sonstige_flaechen', 'kflaechen', 'gemeinschaftr', 'kgemeinschaftr', 'sonderwohnformen', 'raumangebot', 'kraumangebot', 'parbeiten', 'karbeiten', 'bauweise', 'zielgruppen', 'gprojekte', 'oekologie', 'freiraumangebote', 'gaestwohnungen',
          )
 
-
     def __init__(self,*args, **kwargs):
        super(WohnprojektForm, self).__init__(*args, **kwargs)
 
@@ -250,52 +247,25 @@ class WohnprojektForm(ProductForm):
 
 
 
-class InteractionForm(forms.ModelForm):
-    class Meta:
-        model = Interaction
-        fields = ('communtity','host','legal_form','issues','impact','tools','tools_used','next_steps')
-
-    def __init__(self, *args, **kwargs):
-        super(InteractionForm, self).__init__(*args, **kwargs)
-        self.helper = FormHelper()
-        self.helper.form_tag = False
-        self.helper.layout = Layout(
-            Fieldset(
-                ('Community Ascpects - not mandatory'),
-                Div(Div('communtity', css_class='form-group col-md-6 mb-0'),
-                    Div('issues', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
-                Div(Div('legal_form', css_class='form-group col-md-6 mb-0'),
-                    Div('host', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
-                Div(Div('impact', css_class='form-group col-md-6 mb-0'),
-                    Div('tools', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
-                Div(Div('tools_used', css_class='form-group col-md-6 mb-0'),
-                    Div('next_steps', css_class='form-group col-md-6 mb-0'), css_class='form-row'),
-            ))
-
-class LinkForm(forms.ModelForm):
-    class Meta:
-        model = Link
-        fields = ('link_description','link')
 
 
-LinkFormSet = inlineformset_factory(Product,Link, fields = ['link_description','link'], form=LinkForm, extra=3, can_delete=False)
 
 
-class FormsetHelper(FormHelper):
-    def __init__(self,*args, **kwargs):
-        super(FormsetHelper, self).__init__(*args, **kwargs)
-        #self.form_method = 'post'
-        self.form_tag = False
-        #self.render_hidden_fields = True
-        #self.render_required_fields = True
-        self.layout = Layout(
-            Fieldset(
-                (''),
-                Div(
-                    Div('link_description', css_class='form-group col-md-4 mb-0'),
-                    Div('link', css_class='form-group col-md-6 mb-0')
-                    , css_class='form-row')
-            ))
+# class FormsetHelper(FormHelper):
+#     def __init__(self,*args, **kwargs):
+#         super(FormsetHelper, self).__init__(*args, **kwargs)
+#         #self.form_method = 'post'
+#         self.form_tag = False
+#         #self.render_hidden_fields = True
+#         #self.render_required_fields = True
+#         self.layout = Layout(
+#             Fieldset(
+#                 (''),
+#                 Div(
+#                     Div('link_description', css_class='form-group col-md-4 mb-0'),
+#                     Div('link', css_class='form-group col-md-6 mb-0')
+#                     , css_class='form-row')
+#             ))
 
 
 class MediaForm(FileFormMixin, forms.Form):
@@ -327,8 +297,6 @@ class MediaForm(FileFormMixin, forms.Form):
 
 
 
-
-
 class MediaForm_test(FileFormMixin, forms.Form):
     image = UploadedFileField()
     name_for = CharField()

+ 15 - 15
marktplatz/models.py

@@ -162,6 +162,7 @@ class Product(models.Model):
     terms           = NullBooleanField(help_text="")
     edit            = BooleanField( default=True, help_text="", blank=False )
     public          = BooleanField( default=False, help_text="", blank=False )
+    contact         = ForeignKey(Contact, null = True,on_delete=models.SET_NULL, help_text="")
 
 
     title = CharField('Product Title',max_length = 100,null = True, blank=True)
@@ -181,7 +182,6 @@ class Product(models.Model):
     videocts = CharField(max_length=500, null=True, blank=True, help_text="")
     category = ManyToManyField(Category,  help_text="",null = True, blank=True)
     # credits = ForeignKey(Credit, null = True, blank=True, on_delete=models.SET_NULL, help_text="")
-    contact = ForeignKey(Contact, null = True,on_delete=models.SET_NULL, help_text="")
     #interaction = ForeignKey(Interaction, null = True,on_delete = models.SET_NULL, help_text="")
 
     def __str__(self):
@@ -500,17 +500,17 @@ class Credit(models.Model):
 
 
 
-class Interaction(models.Model):
-    communtity = TextField(verbose_name='Community or communities involved',blank = True,max_length = 900)
-    host = CharField(verbose_name='Host organization',blank = True,max_length = 900)
-    legal_form = CharField(verbose_name='Legal form',blank=True,max_length = 900)
-    issues = TextField(verbose_name='Issues addressed',blank = True,max_length = 900)
-    impact = TextField(verbose_name='Impact',blank = True,max_length = 900)
-    tools = TextField(verbose_name='Tools developed',blank = True,max_length = 900)
-    tools_used = TextField(verbose_name='Tools used',blank = True,max_length = 900)
-    next_steps = TextField(verbose_name='Next steps',blank = True,max_length = 900)
-
-    def __iter__(self):
-        for field in self._meta.fields:
-            if (field.value_to_string(self) != '-') and (field.value_to_string(self) != 'N/A'):
-                 yield (field.verbose_name, field.value_to_string(self))
+# class Interaction(models.Model):
+#     communtity = TextField(verbose_name='Community or communities involved',blank = True,max_length = 900)
+#     host = CharField(verbose_name='Host organization',blank = True,max_length = 900)
+#     legal_form = CharField(verbose_name='Legal form',blank=True,max_length = 900)
+#     issues = TextField(verbose_name='Issues addressed',blank = True,max_length = 900)
+#     impact = TextField(verbose_name='Impact',blank = True,max_length = 900)
+#     tools = TextField(verbose_name='Tools developed',blank = True,max_length = 900)
+#     tools_used = TextField(verbose_name='Tools used',blank = True,max_length = 900)
+#     next_steps = TextField(verbose_name='Next steps',blank = True,max_length = 900)
+#
+#     def __iter__(self):
+#         for field in self._meta.fields:
+#             if (field.value_to_string(self) != '-') and (field.value_to_string(self) != 'N/A'):
+#                  yield (field.verbose_name, field.value_to_string(self))

+ 5 - 0
marktplatz/static/css/styles.css

@@ -314,3 +314,8 @@ button{
     align-self: flex-end;
     margin-bottom: 2px;
 }
+
+
+/*******************************************************************************/
+/*******************************************************************************/
+/*******************************************************************************/

+ 10 - 22
marktplatz/templates/marktplatz/form.html

@@ -5,40 +5,28 @@
 {% block content %}
 
 <style media="screen">
-
-  .form-error{
+  .form-error {
     padding: 60 0 0 20;
     color: #F00;
 
   }
 </style>
+<div class="container">
 
   <div class="col-sm-6">
+
     <br>
     {{ form_content | safe }}
-    <form method="post">
-      {% csrf_token %}
-      <!-- Left here in case we need to debug -->
-      {% if signup_errors %}
-      <div class='invalid-feedback' style="display: none;">{{ signup_errors }}</div>
-      {% endif %}
-      {% if contact_errors %}
-      <div class='invalid-feedback' style="display: none;" >{{ contact_errors }}</div>
-      {% endif %}
-      <!-- end of debug -->
-
-      {{ form|crispy }}
-
-      {% csrf_token %}
-      {{ signUp|crispy }}
+    <form method="post">{% csrf_token %}
+      <p>Are you sure you want to delete "{{ object }}"?</p>
+      <input type="submit" value="Confirm">
       <br><br>
-    <button type="submit" class="btn  border-thin mybtn" >Register</button>  </form>
-
-
-
+      <button type="submit" class="btn  border-thin mybtn">Register</button>
+    </form>
 
     <div class="">
       <br><br><br>
     </div>
-     </div>
+  </div>
+</div>
 {% endblock %}

+ 7 - 9
marktplatz/templates/marktplatz/modal-sa.html

@@ -38,14 +38,17 @@
 
 
     <!-- Trigger/Open The Modal -->
-    <span id="myBtn" class="cursor-pointer"><i  class="fas fa-bell"></i> Suchagent aktivieren</span>
+    <span id="myBtn" class="cursor-pointer"><i  class="fas fa-bell"></i> Suchagent aktivieren </span>
 
     <!-- The Modal -->
-    <div id="SearchAgentModal" class="modal">
+    <div id="SearchAgentModal" class="modal" onclick="function hide(e){ e.style.display='None'; } hide(this);" >
       <!-- Modal content -->
       <div class="modal-content">
+        <!-- {% now "YFdHi-u" %} -->
+
         <span id="agentClose" class="close">&times;</span>
         <iframe src="{% url 'search-agent-form-embed' %}" style="border:0px #ffffff none;" name="myiFrame" scrolling="yes" frameborder="1" marginheight="0px" marginwidth="0px" height="600px" width="100%" allowfullscreen></iframe>
+
       </div>
     </div>
 
@@ -55,16 +58,11 @@
     var btn = document.getElementById("myBtn");
     var agentSpan = document.getElementById("agentClose");
     btn.onclick = function() {
+      console.log("BAAAAM");
       modal.style.display = "block";
     }
     agentSpan.onclick = function() {
       modal.style.display = "none";
     }
-    /*
-    window.onclick = function(event) {
-      if (event.target == modal) {
-        modal.style.display = "none";
-      }
-    }
-    */
+
     </script>

+ 2 - 10
marktplatz/templates/marktplatz/modal-share.html

@@ -43,10 +43,10 @@
 
 
     <!-- Trigger/Open The Modal -->
-    <span id="ShareButton" class="cursor-pointer" ><i class="fas fa-share"></i> Teilen</span>
+    <span id="ShareButton" class="cursor-pointer" ><i class="fas fa-share"></i> Teilen </span>
 
     <!-- The Modal -->
-    <div id="ShareModal" class="modal">
+    <div id="ShareModal" class="modal" onclick="function hide(e){ e.style.display='None'; } hide(this);" >
       <!-- Modal content -->
       <div class="modal-content">
         <span id="ShareClose" class="close">&times;</span>
@@ -73,7 +73,6 @@
             </div>
             <div class="col-sm-4"></div>
         </div>
-
         <div class=""> &nbsp; </div>
         <div class=""> &nbsp; </div>
 
@@ -103,13 +102,6 @@
     ShareSpan.onclick = function() {
       ShareModal.style.display = "none";
     }
-    /*
-    window.onclick = function(event) {
-      if (event.target == ShareModal) {
-        ShareModal.style.display = "none";
-      }
-    }
-    */
     function myFunction() {
       var copyText = document.getElementById("myInput");
       copyText.select();

+ 2 - 0
marktplatz/templates/marktplatz/myProducts.html

@@ -32,6 +32,7 @@ $('form').submit(function () {
         <th scope="col"> Product</th>
         <th scope="col"> Category</th>
         <th scope="col"> Editable</th>
+        <th scope="col"> Delete</th>
 
     </tr>
     {% for product in product_list %}
@@ -44,6 +45,7 @@ $('form').submit(function () {
              {% endfor %}
         </td>
         <td scope="col"> {% if product.edit %} <a href="{% url 'edit-product' product.pk %}"> edit product </a> ; <a href="{% url 'add-Image' product.pk %}"> edit Media </a> {% else %} already sumbitted {% endif %} </td>
+        <td scope="col"> <a href="{% url 'product-delete' pk=product.pk %}" target="" rel="">Delete</a>   </td>
 
     </tr>
     {% endfor %}

+ 44 - 0
marktplatz/templates/marktplatz/prodcut_confirm_delete.html

@@ -0,0 +1,44 @@
+{% extends "base_generic.html" %}
+{% load static %}
+{% load crispy_forms_tags %}
+
+{% block content %}
+
+<style media="screen">
+  .form-error {
+    padding: 60 0 0 20;
+    color: #F00;
+
+  }
+</style>
+<div class="container">
+
+  <div class="col-sm-6">
+
+    <br>
+    {{ form_content | safe }}
+    <form method="post">
+
+      {% csrf_token %}
+      <!-- Left here in case we need to debug -->
+      {% if signup_errors %}
+      <div class='invalid-feedback' style="display: none;">{{ signup_errors }}</div>
+      {% endif %}
+      {% if contact_errors %}
+      <div class='invalid-feedback' style="display: none;">{{ contact_errors }}</div>
+      {% endif %}
+      <!-- end of debug -->
+
+      {{ signUp|crispy }}
+      {{ form|crispy }}
+
+      {% csrf_token %}
+      <br><br>
+      <button type="submit" class="btn  border-thin mybtn">Register</button> </form>
+
+    <div class="">
+      <br><br><br>
+    </div>
+  </div>
+</div>
+{% endblock %}

+ 13 - 6
marktplatz/templates/marktplatz/product_overview.html

@@ -236,12 +236,12 @@ $(document).ready(function(){
   .flipcard {
     position: relative;
     transform-style: preserve-3d;
-
+/* transform-origin: center right; */
     transition: transform 1s;
   }
 
   .flipcard.is-flipped {
-    /*  transform: translateX(-100%) rotateY(-180deg);  */
+     /* transform: translateX(-100%) rotateY(-180deg);  */
     transform: rotateY(180deg);
   }
 
@@ -428,12 +428,12 @@ $(document).ready(function(){
 
           <p class="mab-card-text card-text" style="">
 
+            <button id='product_{{product.pk}}_flipper' onclick="" class="border-thin mybtn flipper" flip-card="product_{{product.pk}}_card" style=""><i class="fas fa-sync-alt"></i> Steckbrief</button>
+            <button id='product_{{product.pk}}_teilen' onclick="location.href = '{% url 'product-detail-card-embed' pk=product.pk %}'" class="border-thin mybtn" style=""><i class="fas fa-share"></i> Teilen</button>
             <button id='product_{{product.pk}}_{{product.frei}}' toggler='{{product.frei}}' class="border-thin mybtn btn-toggle {{product.frei}}" style="">#{{product.get_frei_display}}</button>
             <button id='product_{{product.pk}}_{{product.status}}' toggler='{{product.status}}' class="border-thin mybtn btn-toggle {{product.status}}" style="">#{{product.get_status_display}}</button>
             <button id='product_{{product.pk}}_{{product.ort}}' toggler='{{product.ort}}' class="border-thin mybtn btn-toggle {{product.ort}}" style="">#{{product.get_ort_display}}</button>
             <button id='product_{{product.pk}}_{{product.altneu}}' toggler='{{product.altneu}}' class="border-thin mybtn btn-toggle {{product.altneu}}" style="">#{{product.get_altneu_display}}</button>
-            <button id='product_{{product.pk}}_teilen' onclick="location.href = '{% url 'product-detail-card-embed' pk=product.pk %}'" class="border-thin mybtn" style="">#<i class="fas fa-share"></i> Teilen</button>
-            <button id='product_{{product.pk}}_flipper' onclick="" class="border-thin mybtn flipper" flip-card="product_{{product.pk}}_card" style="">#<i class="fas fa-sync-alt"></i> Steckbrief</button>
             <!-- <span id="ShareButton" class="cursor-pointer" > Teilen</span>  -->
           </p>
         </div>
@@ -446,12 +446,12 @@ $(document).ready(function(){
     <div class="mab-card-face mab-card-face--back ">
       <div class="mab-card  {% if product.frei == 'JAJA' %} {% endif %}">
 
-        <div class="container">
+        <div class="container flipper-wrapper" flip-card="product_{{product.pk}}_card">
             <div class="row">
                 <div class="col-sm-12">
                   <br>
-                  <button id='product_{{product.pk}}_flipper' onclick="" class="border-thin mybtn flipper" flip-card="product_{{product.pk}}_card" style="">#<i class="fas fa-sync-alt"></i> Steckbrief</button>
                   <div class="" style=""><h3>  {{ product.name }}</h3></div>
+                  <button id='product_{{product.pk}}_flipper_back' onclick="" class="border-thin mybtn " flip-card="product_{{product.pk}}_card" style=""><i class="fas fa-sync-alt"></i> Steckbrief</button>
                   <div class="" style=""><span>{{ product.beschreibung }}</span></div>
                   <div class="" style=""><strong>Wohnungen:</strong> <span>{{ product.awohnungen }}</span></div>
                   <div class="" style=""><span>{{ product.gemeinschaftr }}</span></div>
@@ -513,6 +513,13 @@ $(document).ready(function(){
 
   });
 
+  $(".flipper-wrapper").click (function(elem){
+
+     let toggler = this.getAttribute("flip-card");
+     $("#" + toggler ).toggleClass('is-flipped');
+
+  });
+
 </script>
 
 </div>

+ 4 - 3
marktplatz/urls.py

@@ -22,18 +22,19 @@ urlpatterns = [
     # path('suchagent/', views.SearchAgentCreate.as_view(), name='search-agent-create'),
     # path('suchagent/embed', views.SearchAgentCreate.as_view( embed=True, ), name='search-agent-create-embed'),
     path('suchagent/<int:pk>/<slug:hash>/', views.SearchAgentDelete.as_view(), name='search-agent-delete'),
-    path('product/<int:pk>', views.DetailView.as_view(), name='product-detail'),
+    path('product/<int:pk>/', views.DetailView.as_view(), name='product-detail'),
+    path('product/delete/<int:pk>/', views.ProductDelete.as_view(), name='product-delete'),
     path('product/<int:pk>/embed', views.DetailView.as_view( embed=True, ), name='product-detail-embed'),
     path('product-card/<int:pk>', views.CardDetailView.as_view(), name='product-detail-card'),
     path('product-card/<int:pk>/embed', views.CardDetailView.as_view( embed=True, ), name='product-detail-card-embed'),
     path('admin_panel/', views.AdminView.as_view(), name='admin-panel'),
-    path('light-box/', lightboximg.as_view(template_name="mab18/importold.html"),name='lightbox'),
+    # path('light-box/', lightboximg.as_view(template_name="mab18/importold.html"),name='lightbox'),
     path('register/', views.registerView.as_view(), name='register-view'),
     path('addProduct/', views.NewWohnprojektView.as_view(), name='new-submit-view'),
     path('myProducts/', views.UsersProducts.as_view(), name='my-products'),
     path('editProduct/<int:pk>', views.EditView.as_view(), name='edit-product'),
     path('addImage/<int:pk>', views.uploadView.as_view(), name='add-Image'),
-    path('generic-test/', views.genericView.as_view(), name='generic-test'),
+    # path('generic-test/', views.genericView.as_view(), name='generic-test'),
     path('pages/<slug:page>/', pagesView.as_view(template_name="marktplatz/generic.html"), name='pages-generic'),
     path('generic/', TemplateView.as_view(template_name="marktplatz/generic.html"), name='generic'),
     path('images/<int:pk>', views.MediaView.as_view(), name='media-overview'),

+ 44 - 41
marktplatz/views.py

@@ -39,7 +39,6 @@ from django.db.models import Q
 from newsletter.forms import *
 from newsletter.views import *
 
-# from .forms import LinkFormSet, LinkForm, FormsetHelper, MediaFormsetHelper, MediaFormSet
 from marktplatz.models import *
 from .forms import *
 
@@ -52,18 +51,14 @@ def about(request):
     context = {}
     context = {'about_text': Template(config.ABOUT_CONTENT).render(Context(context))}
     return render(request, 'marktplatz/about.html', context)
-    #template = Template( config.ABOUT_CONTENT )
-    #return HttpResponse(  template.render( Context(context) )  )
-    #return render(request, rendered , context = context)
 
 def submit(request):
     context = {}
     context = {'submit_text': Template(config.SUBMIT_TEXT).render(Context(context))}
     return render(request,'marktplatz/submit.html', context)
 
-
 def error_404_view(request, exception):
-    data = {"name": "ThePythonDjango.com"}
+    data = {"name": "Markplatz"}
     return render(request,'marktplatz/error_404.html', data)
 
 @login_required
@@ -107,19 +102,6 @@ class AgentNewslwtterSubscribeView(SubscribeRequestView):
             # kwargs['news_form']       =  SubscribeRequestForm()
             return super().get_context_data(**kwargs)
 
-
-    # def get_form_kwargs(self):
-    #     """ Add ip to form kwargs for submitted forms. """
-    #     kwargs = super(SubscribeRequestView, self).get_form_kwargs()
-    #
-    #     if self.request.method in ('POST', 'PUT'):
-    #         kwargs['ip'] = self.request.META.get('REMOTE_ADDR')
-    #
-    #     return kwargs
-    #
-    # def get_subscription(self, form):
-    #     return form.save()
-
     def post(self, request, *args, **kwargs):
 
         data = request.POST.copy()
@@ -213,7 +195,6 @@ class SearchAgentDelete(DeleteView):
     template_name =  'marktplatz/form.html'
     success_url = reverse_lazy('products')
 
-
     def get(self, request, *args, **kwargs):
 
         searchagent = get_object_or_404(SearchAgent, pk= kwargs.get('pk') )
@@ -223,11 +204,49 @@ class SearchAgentDelete(DeleteView):
             if settings.DEBUG:
                 return render(request, self.template_name, context )
             else:
-                super().get(self, request, *args, **kwargs)
+                return super().get(self, request, *args, **kwargs)
         else:
             context['form_content'] = 'Oopala, das hat nicht geklappt.'
             return render(request, self.template_name, context )
 
+
+
+class ProductDelete(LoginRequiredMixin, DeleteView):
+    model = Product
+    template_name =  'marktplatz/form.html'
+    success_url = reverse_lazy('products')
+
+
+    def get(self, request, *args, **kwargs):
+
+        contact = get_object_or_404(Contact, user= self.request.user ) # Contact.objects.get(user=self.request.user)
+        product = get_object_or_404(Product, pk= kwargs.get('pk') )
+
+        if (contact.id == product.contact.id) :
+            return super(ProductDelete, self).get(self, request, *args, **kwargs)
+        else:
+            raise Http404
+
+    def post(self, request, *args, **kwargs):
+
+        contact = get_object_or_404(Contact, user= self.request.user ) # Contact.objects.get(user=self.request.user)
+        product = get_object_or_404(Product, pk= kwargs.get('pk') )
+
+        if (contact.id == product.contact.id) :
+            context = {}
+            context['form_content'] = 'Dein Projekt wird gelöscht, wenn die Seite live ist!'
+            if settings.DEBUG:
+                return render(request, self.template_name, context )
+            else:
+                return super().post(self, request, *args, **kwargs)
+        else:
+            raise Http404
+
+        context = {}
+        context['form_content'] = 'Oopala, das hat nicht geklappt.'
+        return render(request, self.template_name, context )
+
+
 class ProductsView(generic.ListView):
     model = Wohnprojekt
     #context_object_name = 'Products'
@@ -432,11 +451,10 @@ class ProductsListView(generic.ListView):
     embed = False
 
     def get_context_data(self, **kwargs):
-            # context = super().get_context_data(**kwargs)
-            # return context
-            if self.embed :
-                kwargs['embed']  = True
-            return super().get_context_data(**kwargs)
+
+        if self.embed :
+            kwargs['embed']  = True
+        return super().get_context_data(**kwargs)
 
     def post(self, request, *args, **kwargs):
         # print (request.POST.dict())
@@ -635,8 +653,6 @@ class NewWohnprojektView(LoginRequiredMixin, FormView):
 
         context = request.GET.dict()
         context['product'] =        WohnprojektForm
-        # context['lnks'] =           LinkFormSet
-        # context['lnks_helper'] =    FormsetHelper()
         context['use_ajax'] = True
         context['info_txt'] = Template(config.INFO_TXT).render(Context(context))
 
@@ -796,10 +812,6 @@ class EditView(LoginRequiredMixin, FormView):
 
         context['product'] = WohnprojektForm(instance=Wohnprojekt.objects.get(pk=pk))
 
-        # linkFormSet = inlineformset_factory(Product,Link, form=LinkForm, extra=0)
-        # myLinkFormSet = linkFormSet(instance=  Product.objects.get(pk=pk)  )
-        # context['lnks'] =   myLinkFormSet
-        # context['lnks_helper'] =    FormsetHelper()
 
         context['use_ajax']    =    True
         context['info_txt'] = Template(config.INFO_TXT).render(Context(context))
@@ -808,9 +820,6 @@ class EditView(LoginRequiredMixin, FormView):
 
     def post(self, request, pk):
 
-        # print (  request.POST.dict()  )
-        # https://stackoverflow.com/questions/35879101/how-to-determine-if-a-field-has-changed-in-a-django-modelform/43550210
-        # print ('product_f.changed_data: ',  product_f.changed_data)
         product_f = WohnprojektForm(request.POST, request.FILES, instance=Wohnprojekt.objects.get(pk=pk))
 
         if product_f.is_valid():
@@ -818,7 +827,6 @@ class EditView(LoginRequiredMixin, FormView):
                 product =  product_f.save( commit=False )
                 update_fields = product_f.changed_data
                 product.current_uri = request.build_absolute_uri( '/' ).rstrip('/')
-
                 product.save( update_fields=update_fields )
                 # product.save( )
 
@@ -828,14 +836,9 @@ class EditView(LoginRequiredMixin, FormView):
             return HttpResponseRedirect(reverse('my-products'))
 
         else:
-
-
-            print( "not saved xxxxxxx" )
             context = request.GET.dict()
             context['product'] =        product_f
             context['product_errors']  = product_f.errors
-            # context['lnks'] =           lnks_f
-            # context['lnks_helper'] =    FormsetHelper()
             context['use_ajax'] = True
             return render(request, self.template_name, context)
 

+ 5 - 31
project_base/templates/base_generic.html

@@ -115,12 +115,6 @@
         text-align: center;
         margin: 5px 10px 5px 10px;
 
-
-        /* position: absolute;
-    bottom: 16px;
-    left: 16px; */
-
-
       }
 
 
@@ -197,6 +191,11 @@
     <li class="nav-item">
         <a class=" nav-link active nav-right boldkur mab-menu-elm" style="" href="{% url 'mab_login' %}">Einloggen</a>
     </li>
+    {% if user.is_authenticated %}
+    <li class="nav-item">
+        <a class=" nav-link active nav-right boldkur mab-menu-elm" style="" href="{% url 'mab_logout' %}">Ausloggen</a>
+    </li>
+    {% endif %}
     <li class="nav-item">
       <a class=" nav-link active nav-right boldkur mab-menu-elm" style="" href="{% url 'register-view' %}">Registrieren</a>
     </li>
@@ -265,31 +264,6 @@
 
 
 
-
-
-
-
-
-
-
-
-    <!-- <nav class="navbar navbar-expand-sm navbar-fixed-top mab-navbar" style="">
-      <div class="container-fluid rounded-0" style="padding-left: 2px">
-        <a class="navbar-brand navbar-right" href="{% url 'products' %}">
-          <img src="{% static 'logo_gemeinschaffen.png' %}" alt="MAB20" height="40px" width="auto" style="margin: auto; padding-bottom: 2px; max-width:340px; ">
-        </a>
-
-
-
-
-
-      </div>
-      <hr>
-      <br>
-    </nav> -->
-
-
-
     {% endblock %}
     {% endif %}