modify segment. export xml corrected.
authorcavaliet
Tue, 26 Feb 2013 17:52:44 +0100
changeset 71 14c40542dfbb
parent 70 6b49096afdc2
child 72 dae411dd5540
child 74 5a3d8a3eb34d
modify segment. export xml corrected.
src/egonomy/locale/en/LC_MESSAGES/django.mo
src/egonomy/locale/en/LC_MESSAGES/django.po
src/egonomy/locale/fr/LC_MESSAGES/django.mo
src/egonomy/locale/fr/LC_MESSAGES/django.po
src/egonomy/management/commands/export_to_xml.py
src/egonomy/templates/egonomy_create_fragment.html
src/egonomy/templates/egonomy_view_fragment.html
src/egonomy/urls.py
src/egonomy/views.py
Binary file src/egonomy/locale/en/LC_MESSAGES/django.mo has changed
--- a/src/egonomy/locale/en/LC_MESSAGES/django.po	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/locale/en/LC_MESSAGES/django.po	Tue Feb 26 17:52:44 2013 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-26 03:55-0600\n"
+"POT-Creation-Date: 2013-02-26 09:32-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,6 +25,10 @@
 msgid "English"
 msgstr ""
 
+#: views.py:68 views.py:87
+msgid "You are not allowed to modify this fragment."
+msgstr ""
+
 #: templates/egonomy_all_fragments.html:7
 #: templates/egonomy_all_fragments.html:18
 #: templates/egonomy_all_fragments.html:21
@@ -49,7 +53,7 @@
 #: templates/egonomy_all_fragments.html:59
 #: templates/egonomy_annotate_picture.html:123
 #: templates/egonomy_create_fragment.html:184 templates/egonomy_home.html:81
-#: templates/egonomy_view_fragment.html:100
+#: templates/egonomy_view_fragment.html:102
 msgid "Annotated by"
 msgstr ""
 
@@ -116,7 +120,6 @@
 msgstr ""
 
 #: templates/egonomy_annotate_picture.html:76
-#: templates/egonomy_view_fragment.html:53
 msgid "Save keywords"
 msgstr ""
 
@@ -125,18 +128,18 @@
 msgstr ""
 
 #: templates/egonomy_annotate_picture.html:80 templates/egonomy_base.html:36
-#: templates/egonomy_view_fragment.html:57
+#: templates/egonomy_view_fragment.html:53
 msgid "by"
 msgstr ""
 
 #: templates/egonomy_annotate_picture.html:85
-#: templates/egonomy_view_fragment.html:62
+#: templates/egonomy_view_fragment.html:64
 msgid "Create a fragment"
 msgstr ""
 
 #: templates/egonomy_annotate_picture.html:91
 #: templates/egonomy_create_fragment.html:152
-#: templates/egonomy_view_fragment.html:68
+#: templates/egonomy_view_fragment.html:70
 msgid "Fragments from this picture"
 msgstr ""
 
@@ -156,15 +159,15 @@
 msgid "Create or edit a fragment"
 msgstr ""
 
+#: templates/egonomy_create_fragment.html:69
+msgid "Erase the drawing"
+msgstr ""
+
 #: templates/egonomy_create_fragment.html:70
-msgid "Erase the drawing"
+msgid "Back to the original drawing"
 msgstr ""
 
 #: templates/egonomy_create_fragment.html:71
-msgid "Back to the original drawing"
-msgstr ""
-
-#: templates/egonomy_create_fragment.html:72
 msgid "New fragment"
 msgstr ""
 
@@ -228,10 +231,14 @@
 msgid "View a fragment"
 msgstr ""
 
-#: templates/egonomy_view_fragment.html:56
+#: templates/egonomy_view_fragment.html:52
 msgid "Last modification"
 msgstr ""
 
+#: templates/egonomy_view_fragment.html:58
+msgid "Modify this fragment"
+msgstr ""
+
 #: templates/registration/login.html:5
 msgid "Login"
 msgstr ""
Binary file src/egonomy/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/egonomy/locale/fr/LC_MESSAGES/django.po	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/locale/fr/LC_MESSAGES/django.po	Tue Feb 26 17:52:44 2013 +0100
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-26 03:56-0600\n"
+"POT-Creation-Date: 2013-02-26 09:34-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,6 +26,11 @@
 msgid "English"
 msgstr "Anglais"
 
+#: views.py:68
+#: views.py:87
+msgid "You are not allowed to modify this fragment."
+msgstr "Vous n'être pas autorisé à modifier ce fragment."
+
 #: templates/egonomy_all_fragments.html:7
 #: templates/egonomy_all_fragments.html:18
 #: templates/egonomy_all_fragments.html:21
@@ -52,7 +57,7 @@
 #: templates/egonomy_annotate_picture.html:123
 #: templates/egonomy_create_fragment.html:184
 #: templates/egonomy_home.html:81
-#: templates/egonomy_view_fragment.html:100
+#: templates/egonomy_view_fragment.html:102
 msgid "Annotated by"
 msgstr "Annoté par"
 
@@ -124,7 +129,6 @@
 msgstr "Thésaurus Pertimm"
 
 #: templates/egonomy_annotate_picture.html:76
-#: templates/egonomy_view_fragment.html:53
 msgid "Save keywords"
 msgstr "Enregistrer les mots-clés"
 
@@ -134,18 +138,18 @@
 
 #: templates/egonomy_annotate_picture.html:80
 #: templates/egonomy_base.html:36
-#: templates/egonomy_view_fragment.html:57
+#: templates/egonomy_view_fragment.html:53
 msgid "by"
 msgstr "par"
 
 #: templates/egonomy_annotate_picture.html:85
-#: templates/egonomy_view_fragment.html:62
+#: templates/egonomy_view_fragment.html:64
 msgid "Create a fragment"
 msgstr "Créer un fragment"
 
 #: templates/egonomy_annotate_picture.html:91
 #: templates/egonomy_create_fragment.html:152
-#: templates/egonomy_view_fragment.html:68
+#: templates/egonomy_view_fragment.html:70
 msgid "Fragments from this picture"
 msgstr "Fragments issus de cette image"
 
@@ -165,15 +169,15 @@
 msgid "Create or edit a fragment"
 msgstr "Créer ou modifier un fragment"
 
-#: templates/egonomy_create_fragment.html:70
+#: templates/egonomy_create_fragment.html:69
 msgid "Erase the drawing"
 msgstr "Effacer le tracé"
 
-#: templates/egonomy_create_fragment.html:71
+#: templates/egonomy_create_fragment.html:70
 msgid "Back to the original drawing"
 msgstr "Revenir au tracé d'origine"
 
-#: templates/egonomy_create_fragment.html:72
+#: templates/egonomy_create_fragment.html:71
 msgid "New fragment"
 msgstr "Nouveau fragment"
 
@@ -237,10 +241,14 @@
 msgid "View a fragment"
 msgstr "Voir un fragment"
 
-#: templates/egonomy_view_fragment.html:56
+#: templates/egonomy_view_fragment.html:52
 msgid "Last modification"
 msgstr "Dernière modification"
 
+#: templates/egonomy_view_fragment.html:58
+msgid "Modify this fragment"
+msgstr "Modifier ce fragment"
+
 #: templates/registration/login.html:5
 msgid "Login"
 msgstr "Se connecter"
--- a/src/egonomy/management/commands/export_to_xml.py	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/management/commands/export_to_xml.py	Tue Feb 26 17:52:44 2013 +0100
@@ -87,15 +87,15 @@
                 if img.info and img.info.image_file:
                     file_array = img.info.image_file.name.split("/")
                     file_folder = path + file_array[-2]
-                    file_name = file_array[-1].split(".")[0] + ".xml"
+                    file_name = "content-" + file_array[-1].split(".")[0] + ".xml"
                     if not os.path.isdir(file_folder):
                         os.makedirs(file_folder)
                     file_path = file_folder + os.sep + file_name
                 else:
                     # If image_file is none, the xml file is put in path folder
-                    file_path = path + img.id + ".xml"
-                    errors.append(img.id + ".xml")
-                    
+                    file_path = path + "content-" + img.id + ".xml"
+                    errors.append("content-" + img.id + ".xml")
+                
                 if os.path.exists(file_path):
                     os.remove(file_path)
                     
@@ -109,22 +109,22 @@
                     for t in tags:
                         xml_str += u"\t<keyword>" + t.strip() + u"</keyword>\n"
                 # metadatas
-                xml_str += u"\t<metadata>\n\t\t<name>cliche<name>\n\t\t<value>" + (img.metadata.cliche if img.metadata.cliche else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>inventaire<name>\n\t\t<value>" + (img.metadata.inventaire if img.metadata.inventaire else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>date<name>\n\t\t<value>" + str((img.metadata.date if img.metadata.date else "")) + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>longueur<name>\n\t\t<value>" + str((img.metadata.longueur if img.metadata.longueur else "")) + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>hauteur<name>\n\t\t<value>" + str((img.metadata.hauteur if img.metadata.hauteur else "")) + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>profondeur<name>\n\t\t<value>" + str((img.metadata.profondeur if img.metadata.profondeur else "")) + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>diametre<name>\n\t\t<value>" + str((img.metadata.diametre if img.metadata.diametre else "")) + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>photographe<name>\n\t\t<value>" + (img.metadata.photographe if img.metadata.photographe else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>auteur<name>\n\t\t<value>" + (img.metadata.auteur if img.metadata.auteur else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>droits<name>\n\t\t<value>" + (img.metadata.droits if img.metadata.droits else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>mentions<name>\n\t\t<value>" + (img.metadata.mentions if img.metadata.mentions else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>periode<name>\n\t\t<value>" + (img.metadata.periode if img.metadata.periode else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>technique<name>\n\t\t<value>" + (img.metadata.technique if img.metadata.technique else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>site<name>\n\t\t<value>" + (img.metadata.site if img.metadata.site else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>lieu<name>\n\t\t<value>" + (img.metadata.lieu if img.metadata.lieu else "") + u"</value>\n\t</metadata>\n"
-                xml_str += u"\t<metadata>\n\t\t<name>localisation<name>\n\t\t<value>" + (img.metadata.localisation if img.metadata.localisation else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>cliche</name>\n\t\t<value>" + (img.metadata.cliche if img.metadata.cliche else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>inventaire</name>\n\t\t<value>" + (img.metadata.inventaire if img.metadata.inventaire else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>date</name>\n\t\t<value>" + str((img.metadata.date if img.metadata.date else "")) + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>longueur</name>\n\t\t<value>" + str((img.metadata.longueur if img.metadata.longueur else "")) + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>hauteur</name>\n\t\t<value>" + str((img.metadata.hauteur if img.metadata.hauteur else "")) + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>profondeur</name>\n\t\t<value>" + str((img.metadata.profondeur if img.metadata.profondeur else "")) + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>diametre</name>\n\t\t<value>" + str((img.metadata.diametre if img.metadata.diametre else "")) + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>photographe</name>\n\t\t<value>" + (img.metadata.photographe if img.metadata.photographe else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>auteur</name>\n\t\t<value>" + (img.metadata.auteur if img.metadata.auteur else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>droits</name>\n\t\t<value>" + (img.metadata.droits if img.metadata.droits else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>mentions</name>\n\t\t<value>" + (img.metadata.mentions if img.metadata.mentions else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>periode</name>\n\t\t<value>" + (img.metadata.periode if img.metadata.periode else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>technique</name>\n\t\t<value>" + (img.metadata.technique if img.metadata.technique else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>site</name>\n\t\t<value>" + (img.metadata.site if img.metadata.site else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>lieu</name>\n\t\t<value>" + (img.metadata.lieu if img.metadata.lieu else "") + u"</value>\n\t</metadata>\n"
+                xml_str += u"\t<metadata>\n\t\t<name>localisation</name>\n\t\t<value>" + (img.metadata.localisation if img.metadata.localisation else "") + u"</value>\n\t</metadata>\n"
                 xml_str += u"</content>"
                 # Write xml string
                 os.write(fd, xml_str.encode('utf8'))
--- a/src/egonomy/templates/egonomy_create_fragment.html	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/templates/egonomy_create_fragment.html	Tue Feb 26 17:52:44 2013 +0100
@@ -68,7 +68,7 @@
                         <div class="column column-half">
                             <a href="#" class="head-button clear-fragment" title="{% trans 'Erase the drawing' %}">&times;</a>
                             <a href="#" class="head-button reset-fragment" title="{% trans 'Back to the original drawing' %}">&#8634;</a>
-                            <h2>{% trans 'New fragment' %}&nbsp;:</h2>
+                            <h2>{% if frg_to_modify %}{{ frg_to_modify.title }}{% else %}{% trans 'New fragment' %}{% endif %}&nbsp;:</h2>
                             <div class="center-image">
 	                            <div class="image-and-fragment">
 	                              {% with img.info.image_file as image %}
@@ -89,9 +89,10 @@
 	                                <div class="cutout-canvas"></div>
 	                            </div>
                             </div>
-                            <input name="fragment_path" id="fragment_path" type="hidden" class="fragment-path column-half" value="" />
+                            <input name="fragment_path" id="fragment_path" type="hidden" class="fragment-path column-half" value="{% if frg_to_modify %}{{ frg_to_modify.coordinates }}{% endif %}" />
                             <input name="image_id" id="image_id" type="hidden" value="{{ img.id }}" />
-                        {% csrf_token %}
+                            {% if frg_to_modify %}<input name="fragment_pk" id="fragment_pk" type="hidden" value="{{ frg_to_modify.pk }}" />{% endif %}
+                            {% csrf_token %}
                         </div>
                         <div class="column column-half">
                             <table class="image-metadata">
@@ -101,15 +102,15 @@
                                 </tr>
                                 <tr>
                                     <th>{% trans "Fragment's title" %}&nbsp;:</th>
-                                    <td><input type="text" class="fragment-title" placeholder="{% trans "Fragment's title" %}" name="fragment_title" id="fragment_title"/></td>
+                                    <td><input type="text" class="fragment-title" placeholder="{% trans "Fragment's title" %}" name="fragment_title" id="fragment_title" {% if frg_to_modify %}value="{{ frg_to_modify.title }}"{% endif %}/></td>
                                 </tr>
                                 <tr>
                                     <th>{% trans "Fragment's description" %}&nbsp;:</th>
-                                    <td><textarea class="fragment-description" name="fragment_description" id="fragment_description"></textarea></td>
+                                    <td><textarea class="fragment-description" name="fragment_description" id="fragment_description" {% if frg_to_modify %}value="{{ frg_to_modify.description }}"{% endif %}></textarea></td>
                                 </tr>
                                 <tr>
                                     <th>{% trans 'Users keywords' %}&nbsp;:</th>
-                                    <td><input id="user_keywords" name="user_keywords" class="user-keywords"></ul><!--textarea class="user-keywords" name="user_keywords" id="user_keywords"></textarea--></td>
+                                    <td><input id="user_keywords" name="user_keywords" class="user-keywords" {% if frg_to_modify %}value="{{ frg_to_modify.tags }}"{% endif %}></ul>
                                 </tr>
                                 {% if img.metadata.mots_cles %}
                                 <tr>
--- a/src/egonomy/templates/egonomy_view_fragment.html	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/templates/egonomy_view_fragment.html	Tue Feb 26 17:52:44 2013 +0100
@@ -48,14 +48,16 @@
                                     <th>{% trans "Users keywords" %}</th>
                                     <td>{{ fragment.tags }}</td>
                                 </tr>
-                                <!--tr>
-                                    <th> </th>
-                                    <td><input class="user-submit" type="submit" value="{% trans 'Save keywords' %}" /></td>
-                                </tr-->
                                 <tr>
                                     <th>{% trans "Last modification" %}&nbsp;:</th>
-                                    <td>{{ fragment.date_saved }} {% trans 'by' %} <strong>{{ fragment.author }}</strong></td>
+                                    <td>{{ fragment.date_saved }} {% trans 'by' %} <strong><a href="{% url 'user_fragments' username=fragment.author %}">{{ fragment.author }}</a></strong></td>
                                 </tr>
+                                {% ifequal user fragment.author %}
+                                <tr>
+                                    <th>&nbsp;</th>
+                                    <td><a href="{% url 'create_fragment' image_id=fragment.image.id fragment_pk=fragment.pk %}" class="big-button">{% trans "Modify this fragment" %}</a></td>
+                                </tr>
+                                {% endifequal %}
                             </table>
                         </form>
                         <div class="fullwidth">
--- a/src/egonomy/urls.py	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/urls.py	Tue Feb 26 17:52:44 2013 +0100
@@ -11,7 +11,8 @@
     url(r'^$', 'egonomy.views.home', name='home'),
     url(r'^annotate/(?P<image_id>.*)/$', 'egonomy.views.annotate_picture', name='annotate_picture'),
     url(r'^viewfragment/(?P<fragment_pk>.*)/$', 'egonomy.views.view_fragment', name='view_fragment'),
-    url(r'^createfragment/(?P<image_id>.*)/$', 'egonomy.views.create_fragment', name='create_fragment'),
+    url(r'^createfragment/(?P<image_id>.*)/(?P<fragment_pk>.*)/$', 'egonomy.views.create_fragment', name='create_fragment'),
+    url(r'^createfragment/(?P<image_id>.*)/', 'egonomy.views.create_fragment', name='create_fragment'),
     url(r'^savefragment/$', 'egonomy.views.save_fragment', name='save_fragment'),
     url(r'^allpictures/$', 'egonomy.views.all_pictures', name='all_pictures'),
     url(r'^allfragments/$', 'egonomy.views.all_fragments', name='all_fragments'),
--- a/src/egonomy/views.py	Tue Feb 26 11:01:21 2013 +0100
+++ b/src/egonomy/views.py	Tue Feb 26 17:52:44 2013 +0100
@@ -1,17 +1,19 @@
 from django.conf import settings
 from django.contrib.auth.decorators import login_required
+from django.contrib.auth.models import User
 from django.core.paginator import Paginator, InvalidPage, EmptyPage
 from django.core.urlresolvers import reverse
 from django.db.models.aggregates import Max
+from django.http.response import HttpResponseForbidden
 from django.shortcuts import get_object_or_404, render_to_response, redirect
 from django.template import RequestContext
+from django.utils.translation import ugettext as _
 from egonomy.models import ImageMetadata, Image, Fragment
 from egonomy.search_indexes import QueryParser
 from egonomy.search_indexes.paginator import SearchPaginator
 from egonomy.search_indexes.query import ModelRelatedSearchQuerySet
 from haystack.query import RelatedSearchQuerySet
 import logging
-from django.contrib.auth.models import User
 
 logger = logging.getLogger(__name__)
 
@@ -54,13 +56,19 @@
                               context_instance=RequestContext(request))
 
 @login_required
-def create_fragment(request, image_id):
+def create_fragment(request, image_id, fragment_pk=None):
     
     img = get_object_or_404(Image.objects.select_related('info', 'metadata'), id=image_id)
     frg_list = Fragment.objects.filter(image=img).order_by('-date_saved').select_related('image', 'image__info', 'image__metadata','author')
+    frg_to_modify = None
+    if fragment_pk:
+        frg_to_modify = get_object_or_404(Fragment.objects.select_related('author'), pk=fragment_pk)
+        # We check if the current user is the fragment's author
+        if frg_to_modify.author != request.user:
+            return HttpResponseForbidden(_("You are not allowed to modify this fragment."))
     
     return render_to_response("egonomy_create_fragment.html",
-                              {'img': img, 'fragment_list': frg_list},
+                              {'img': img, 'frg_to_modify': frg_to_modify, 'fragment_list': frg_list},
                               context_instance=RequestContext(request))
 
 @login_required
@@ -71,16 +79,22 @@
     frg_kw = request.POST["user_keywords"]
     frg_path = request.POST["fragment_path"]
     frg_image_id = request.POST["image_id"]
-    img = get_object_or_404(Image, id=frg_image_id)
+    if "fragment_pk" in request.POST:
+        frg_pk = request.POST["fragment_pk"]
+        frg = get_object_or_404(Fragment.objects.select_related('author'), pk=frg_pk)
+        # We check if the current user is the fragment's author
+        if frg.author != request.user:
+            return HttpResponseForbidden(_("You are not allowed to modify this fragment."))
+    else :
+        img = get_object_or_404(Image, id=frg_image_id)
+        frg = Fragment()
+        frg.image = img
+        frg.author = request.user
     
-    frg = Fragment()
-    frg.image = img
     frg.coordinates = frg_path
     frg.title = frg_title
     frg.description = frg_desc
     frg.tags = frg_kw
-    frg.author = request.user
-    
     frg.save()
     
     return redirect("view_fragment", fragment_pk=frg.pk)