diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2014-05-12 17:02:56 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2014-05-12 17:02:56 +0200 |
commit | fe9484b72cd2daed7cfb2bf7f9b330bd0e0b76dd (patch) | |
tree | 592a834685dac25aad04bb0f4505ec9006e787b4 /ishtar_common | |
parent | 9d3f78cb51f05c6f39d95b222bbd03cf19018e60 (diff) | |
download | Ishtar-fe9484b72cd2daed7cfb2bf7f9b330bd0e0b76dd.tar.bz2 Ishtar-fe9484b72cd2daed7cfb2bf7f9b330bd0e0b76dd.zip |
Work on registry search (refs #1680) - work on operations test
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 17 | ||||
-rw-r--r-- | ishtar_common/views.py | 15 |
2 files changed, 23 insertions, 9 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 1ff809315..429c8217b 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -56,8 +56,7 @@ def post_save_user(sender, **kwargs): ishtaruser = q.all()[0] if ishtaruser.is_superuser \ and not ishtaruser.has_right('administrator'): - ishtaruser.person.person_types.add(PersonType.objects.get( - txt_idx='administrator')) + ishtaruser.person.person_types.add(ADMINISTRATOR) post_save.connect(post_save_user, sender=User) class ValueGetter(object): @@ -318,6 +317,12 @@ class GeneralType(models.Model): for child in cls._get_childs(item, dct, instances, exclude=exclude): yield child + def save(self, *args, **kwargs): + if not self.id and not self.label: + self.label = u" ".join(u" ".join(self.txt_idx.split('-') + ).split('_')).title() + return super(GeneralType, self).save(*args, **kwargs) + class ImageModel(models.Model): image = models.ImageField(upload_to="upload/", blank=True, null=True) thumbnail = models.ImageField(upload_to='upload/thumbs/', blank=True, @@ -758,6 +763,9 @@ class PersonType(GeneralType): verbose_name_plural = _(u"Person types") ordering = ('label',) +ADMINISTRATOR, created = PersonType.objects.get_or_create( + txt_idx='administrator') + class Person(Address, OwnPerms, ValueGetter) : _prefix = 'person_' TYPE = (('Mr', _(u'Mr')), @@ -859,9 +867,10 @@ class IshtarUser(User): email = user.email person_type = None if user.is_superuser: - person_type = PersonType.objects.get(txt_idx='administrator') + person_type = ADMINISTRATOR else: - person_type = PersonType.objects.get(txt_idx='public_access') + person_type, created = PersonType.objects.get_or_create( + txt_idx='public_access') person = Person.objects.create(title='Mr', surname=surname, name=name, email=email, history_modifier=user) diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 7440e0170..9a20fadd5 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -217,17 +217,22 @@ def get_item(model, func_name, default_name, extra_request_keys=[], if specific_perms and perm not in specific_perms: continue if request.user.has_perm(perm) \ - or request.user.ishtaruser.has_right(perm): + or (request.user.is_authenticated() + and request.user.ishtaruser.has_right(perm)): allowed = True if "_own_" not in perm: own = False break # max right reach - if not allowed: - return HttpResponse(None, mimetype='text/plain') + EMPTY, mimetype = '', 'text/plain' if 'type' in dct: data_type = dct.pop('type') + if data_type == 'csv': + mimetype = 'text/csv' if not data_type: + EMPTY = '[]' data_type = 'json' + if not allowed: + return HttpResponse(EMPTY, mimetype='text/plain') fields = [model._meta.get_field_by_name(k)[0] for k in model._meta.get_all_field_names()] request_keys = dict([(field.name, @@ -247,7 +252,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], try: old = 'old' in request_items and int(request_items['old']) except ValueError: - return HttpResponse(None, mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') for k in request_keys: q = request_items.get(k) if not q: @@ -452,7 +457,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], for data in datas: writer.writerow([val.encode(ENCODING) for val in data[1:]]) return response - return HttpResponse(None, mimetype='text/plain') + return HttpResponse('{}', mimetype='text/plain') return func |